Danke Markus !
Ja ich weiss nicht ...der Compiler( AVR-Studio + STK500-DevBoard) meckert wenn ich hinter einer '#define Name Bezeichnung' über die Bezeichnung wenn da Text steht...aber ich werde mal weiter probieren..
Gruss
Gerhard
Danke Markus !
Ja ich weiss nicht ...der Compiler( AVR-Studio + STK500-DevBoard) meckert wenn ich hinter einer '#define Name Bezeichnung' über die Bezeichnung wenn da Text steht...aber ich werde mal weiter probieren..
Gruss
Gerhard
Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint
*Grübel* Sag mal, der Ausdruck PIND1 ist doch der Inhalt von Bit1 {0...7} des PORTD, oder nicht? Und ich habe so den Eindruck, dass Du den Pin PD1 von PORT D schalten möchtest. Ich würde das anders schreiben - so in der Art #define LED1 PD1. Und wenn mich nicht alles täuscht, ergibt das Auslesen eines Ausgangsregisters mit dem Befehl PINxn ein Umschalten (toggeln) des Pinns....der Compiler( AVR-Studio + STK500-DevBoard) meckert ...
Ciao sagt der JoeamBerg
Ja Oberall..
So meine ich das... soeben musste ich feststellen das mein oben vorgestellter "Code" nun plötzlich angenommen wird, jedenfalls wenn ich ihn so in der main.c im header so schreibe. Vielleicht hatte ich ja in der direkten Headerdatei noch ein Fehler beim Einbinden oder so. Dann hatte ich was in der Form von "_sv_" oder so ähnlich im Web gefunden, da die Beschreibung in english war/ist musste ich leider streiken...
Nun ist mir schon geholfen, das es so geht. Werde es gleich noch mit separater Headerdatei versuchen...
Ich könnte mir auch denken das vieleicht der verwendete µC diese von mir benutzte Pinangabe nicht mag...Das AVR Studio meckert ja wenn da was falsch ist also Code und Chip nicht übereinstimmen...
Mal gleich einflechte, kann man eigendlich im Header mit '#define auch den µC festlegen um dann Chipgerecht auf die richtigen Register zuzugreifen... ??
Ist zwar ein anderes Thema aber viell. hat ja wer grad ne passende Antwort der das hier liest...
Gruss und Dank
Gerhard
Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint
Ja, du kannst über #if / #endif eine Fallunterscheidung einbauen die Abhängig vom jeweiligen µC ist. Je nach ausgewähltem AVR werden eine ganze Reihe von Makros gesetzt, die Aussagen über die Prozessorgeneration und vorhandene Features/Eigenheiten treffen. Eines dieser Makros beschreibt den konkreten Prozessortyp, z.Bsp. __AVR_ATmega8__
mfGCode:#if __AVR_ATmega8__ //do something for Mega8 #endif #if __AVR_ATmega32__ //do something for Mega32 #endif
Markus
Tiny ASURO Library: Thread und sf.net Seite
Hallo Gerhard,
#define funktioniert eigentlich wie "Suchen und Ersetzen" in der Textverarbeitung!
Und da #define zum Pre-Processor gehört, wird dies ausgeführt bevor der Compiler anfängt zu Übersetzen.
Deshalb muss man bei gewissen Dingen dann etwas aufpassen
#define BufferSize 10+1
int a[BufferSize]; // ergibt ein Array mit 11 int
int a[BufferSize * 3]; // ergibt ein Array mit 13 int !!! und nicht wie erwartet 33.
Nach dem Pre-Processor sieht das folgendermassen aus:
int a[10 + 1 * 3]; // und dies ergibt aber 10 + 3 = 13
Mit
#define BufferSize (10+1)
funktioniert es dann richtig!
int a[(10 + 1) * 3];
MfG Peter(TOO)
Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?
Danke Markus, danke Peter !
So langsam frischt sich der Speicher im Kopfe wieder auf...schon mal gelerntes wird aufgefrischt
Ja ich denke nun weiss ich Bescheid und kann meine Aufgaben lösen, Dank der Hilfe im Forum hier !
Gruss und DANKE
Gerhard
Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint
Lesezeichen