Datum:
Beim Compilieren erhalte ich folgende Fehlermeldung: Error: 'SMBvariables' undeclared (first use in this function) kann mir Jemand weiterhelfen? Hier der Sourcecode:
----------------------------------------------------------------------- SMBSlave.h ----------------------------------------------------------------------- ..... #define SMBvariables SV.SMBvar #define SMBvar_int SV.SMBint #ifndef MODULE_SMBUS union { volatile unsigned char SMBvar[29][2]; volatile unsigned int SMBint[29]; } SV; char str_MfrName[] PROGMEM = "\014Atmel Norway"; //__flash char char str_DeviceName[] PROGMEM = "\005SB100"; char str_DeviceChem[] PROGMEM = "\004LION"; char str_MfrData[] PROGMEM = "\013MfrDataArea"; #else extern union { volatile unsigned char SMBvar[29][2]; volatile unsigned int SMBint[29]; } SV; #endif ....... |
----------------------------------------------------------------------- communication.c ----------------------------------------------------------------------- #include <avr/interrupt.h> #include "SMBSlave.h" ..... ISR(TWIBUSCD_vect) { //clear bits per sbdat110, 4.4.2 SMBvariables[SMBV_BattMode][hibyte] &= ~(0xE3); if(TWBCSR & (1<<TWBCIP)) //this int was caused by bus DISCONNECT event. { TWBCSR &= ~(1<<TWBCIP); //SH ChangePowerMode(POWERMODE_IDLE,0); } else //this int occurred due to a bus CONNECT event. { TWBCSR |= (1<<TWBCIP); //SH ChangePowerMode(POWERMODE_ACTIVE,0); } } .. ///////////////////////////////////////////////////////////////////// |
Datum:
Khaled G. schrieb: > Error: 'SMBvariables' undeclared (first use in this function) > > kann mir Jemand weiterhelfen? Ja, Du selbst. Was bedeutet die Fehlermeldung?
Datum:
a) Vergiss das Getrickse. Wenn Du auf SV.SMBvar zugreifen willst, dann schreib auch SV.SMBvar hin b) Vergiss das Getrickse mit dem #ifndef MODULE_SMBUS In das Header File gehören nur die Deklarationen mit extern. In die C-File gehören die Definitionen (die ohne extern) und das Header-File wird zur Kontrolle mit eingebunden.
Datum:
ABgesehen davon. Das Problem wird mal wieder in den ... Teilen stecken. Ein falsches #define, ein paar #ifdef und schon wird der #define auf den du hier aus bist, nicht mehr ausgeführt. Bei solchen Sachen gibt es viele Möglichkeiten. Daher ist es in den meisten Fällen nicht sinnvoll, Codeausschnitte zu posten, in denen du selber keinen Fehler siehst. Denn wir sehen da auch nicht das Problem.
Datum:
Angehängte Dateien:Danke für die Antworten. a) Vergiss das Getrickse. Wenn Du auf SV.SMBvar zugreifen willst, dann schreib auch SV.SMBvar hin das ist eine gute Idee. Im Anhang befindet sich der complete Code
Datum:
In communication.c findet sich nirgends ein #include "SMBSlave.h".