Hallo Leute, ich programmiere derzeit einen ATtiny26 mit CodeVision C-Compiler. Mein Problem ist, denke ich, im wesentlichen ein reines C Problem. Ich verwende einen DAC12 Bit. Für die Ansteuerung des DACs schreibe ich eine Library. Nun möchte ich diese Library später vielleicht in anderen Projekten verwenden, deshalb wollte ich folgendermaßen vorgehen: In der Library werden nur symbolische Zuweisungen gemacht, z.B. CLK=1; SDI=0; CLK=0; Noch vor dem includen der Library muss man dann den Symbolen den richtigen PORT zuweisen, also insgesamt in etwa so: #define CLK PORTA.7 #define SDI PORTA.6 #include <dac.h> Wenn ich nun kompiliere, dann bekomme ich die Fehlermeldung "undefined Symbol", also hat er den Text nicht ersetzt. Wie bekomme ich dieses Problem in den Griff? Stehen die define Befehle in der Library geht es. Dies ist aber nicht Sinn und Zweck, da ich die Library bei anderen Projekten mit anderer Pinbelegung auch verwenden möchte. Gruß und Mahlzeit
Vermutung: Wenn Du die io.h vor den #defines #includest, sollte es eigentlich keine Probleme geben, vorausgesetzt, der Rest stimmt. Da Du keinen vollständigen Code, geschweige denn, die vollständige Fehlermeldung schickst, kann ich da nicht mehr zu sagen. Kann also nur annehmen, dass sich die Fehlermeldung darauf bezieht, dass zum Zeitpunkt der #defines PORTA nicht bekannt ist...
Hi Johnny, ich include folgendermaßen: #include <attiny26.h> //hier sind auch die Ports definiert #define CLK PORTA.7 #define CS PORTA.6 ... #include <dac.h> Die Fehlermeldung vollständig: "Error in library c:\...; line 21, undefined symbol 'CS'" D.h. er hat ja offensichtlich CS nicht durch PORTA.6 ersetzt?
Die Library ist doch bestimmt in einer eigenen C-Datei? Der Compiler compiliert jede C-Datei einzeln. #defines, die Du in der C-Datei Deines Hauptprogramms machst, haben demnach natürlich keine Auswirkung auf die C-Datei Deiner Library. Du musst die #defines schon in Deiner Library machen oder in einer Header-Datei, die von Deiner Library includiert wird oder per Kommandozeilenoption an den Compiler übergeben, wenn die C-Datei der Library compiliert.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.