Da steckt meine eigene master-lib dahinter da der Master über gpio pins läuft
Welche Master-Lib steckt dahinter?
Da steckt meine eigene master-lib dahinter da der Master über gpio pins läuft
Hallo,
ich habe gerade den Code zum Slave gefunden, aber im Moment komme ich leider nicht weiter:
bekomme ich den Fehler vom compiler:Code:#include "avr/io.h" #include "uart.h" init_twi_slave(0x50); int main(void) { txbuffer[0]=255; txbuffer[1]=100; txbuffer[2]=33; }
Build started 25.3.2007 at 20:54:27
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -O0 -MD -MP -MT twislave.o -MF dep/twislave.o.d -c ../twislave.c
../twislave.c:40: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'rxbuffer'
../twislave.c:43: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'txbuffer'
../twislave.c:50: error: expected ')' before 'adr'
../twislave.c: In function 'init_twi_slave':
../twislave.c:77: warning: implicit declaration of function 'sei'
../twislave.c: At top level:
../twislave.c:95: warning: return type defaults to 'int'
../twislave.c: In function 'ISR':
../twislave.c:115: error: 'rxbuffer' undeclared (first use in this function)
../twislave.c:115: error: (Each undeclared identifier is reported only once
../twislave.c:115: error: for each function it appears in.)
../twislave.c:133: error: 'txbuffer' undeclared (first use in this function)
../twislave.c:160: warning: control reaches end of non-void function
make: *** [twislave.o] Error 1
Build failed with 7 errors and 3 warnings...
Die Buffer muß ich die selbst definieren oder muß ich noch etwas anderes einbinden ?
viele Grüße
Mario
lässt ahnen, dass du eine veraltete avr-gcc-Version hast. Dein Compiler kenn anscheinden den Datentyp uint8_t nicht, und behandelt auch die Interrupts noch mit signal statt ISR.Code:../twislave.c: In function 'ISR':
Im Wiki hab ich ne auch ne neue der twislave.c Version eingefügt, solltest du auch mal aktualisieren.
Hast du die twislave.c im Makefile eingebunden? Sonst fehlt im Hauptprogramm noch #include "twimaster.c"
hmm, GCC Heute heruntergeladen:
C:\WINDOWS>avr-gcc --version
avr-gcc (GCC) 4.1.1 (WinAVR 20070122)
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
C:\WINDOWS>
Die twislave.c ist von jetzt gerade, selber Fehler.
Habe gerade die twimaster.c eingebunden, selber Fehler.
ich habe auch gelesen das .c Dateien nicht includiert werden sondern eingebunden, warscheinlich von der Funktion das gleiche, scheinbar nur "optik".
merkwürdig...Zitat von Makrolon
zu welcher Version der twislave.c passen die Zeilennummern aus den Fehlermeldungen?
neuer Fehler, passend zur neuen twislave.c
Build started 25.3.2007 at 21:51:17
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -O0 -MD -MP -MT twislave.o -MF dep/twislave.o.d -c ../twislave.c
../twislave.c:49: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'rxbuffer'
../twislave.c:52: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'txbuffer'
../twislave.c:59: error: expected ')' before 'adr'
../twislave.c: In function 'init_twi_slave':
../twislave.c:95: warning: implicit declaration of function 'sei'
../twislave.c: At top level:
../twislave.c:116: warning: return type defaults to 'int'
../twislave.c: In function 'ISR':
../twislave.c:146: error: 'rxbuffer' undeclared (first use in this function)
../twislave.c:146: error: (Each undeclared identifier is reported only once
../twislave.c:146: error: for each function it appears in.)
../twislave.c:166: error: 'txbuffer' undeclared (first use in this function)
../twislave.c:188: warning: control reaches end of non-void function
make: *** [twislave.o] Error 1
Build failed with 7 errors and 3 warnings...
Ich hab jetzt den Fehler reproduzieren können.
Lösung:
#include <avr/interrupt.h> und #include <avr/io.h> müssen im Hauptprogramm VOR #include "twislave.c" stehen.
Wie gesagt, das ganze ist noch nicht ganz ausgereift. Ich hab noch nicht vile Erfahrung mit dem Erstellen von libs, und bring arbeite mich so learning by doing in die Materie ein.
Der Bugfix: in der twislave.c an Anfang noch
#include <avr/interrupt.h>
#include <avr/io.h>
einfügen, dann sollte es immer gehen.
PS: was macht die twimaster.c in deinem Projekt? Entweder Master ODER Slave. Für Multimaster müsste man beides in einer lib kombinieren.
vielen Dank für die Hilfe.
habe jetzt mal den Code geändert:
bekomme jetzt einen anderen Fehler:Code:#include <avr/interrupt.h> #include <avr/io.h> #include "twislave.c" init_twi_slave(0x50); int main(void) { txbuffer[0]=255; txbuffer[1]=100; txbuffer[2]=33; }
Build started 25.3.2007 at 22:09:27
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -O0 -MD -MP -MT slave.o -MF dep/slave.o.d -c ../slave.c
../slave.c:5: error: expected declaration specifiers or '...' before numeric constant
../slave.c:5: warning: data definition has no type or storage class
../slave.c:5: warning: type defaults to 'int' in declaration of 'init_twi_slave'
../slave.c:5: error: conflicting types for 'init_twi_slave'
../twislave.c:90: error: previous definition of 'init_twi_slave' was here
../slave.c: In function 'main':
../slave.c:14: warning: control reaches end of non-void function
make: *** [slave.o] Error 1
Build failed with 3 errors and 3 warnings...
Irgendwie hakt es beim Datentyp. Kennt der kein uint8_t mehr?
Oder ist nur das AVRStudio schuld? Ich verwende programmes notepad. Ich weiß nicht, wie das Studio mit solchen Projekten aus mehreren Codedateien umgeht.
versuch mal ne eigene Variable als uint8_t anzulegen. Wenn er dabei meckert, versuch mal #include <stdint.h>
Lesezeichen