Hallo, zu den io*.h habe ich mal eine Frage: Die werden ja nicht direkt eingebunden, sondern durch die <avr/io.h>. Bei einigen MCU´s wird das Auslesen von ADCL und ADCH ja anscheinend über ein 16-bit-Register gemacht, welches manchmal ADC und manchmal ADCW heißt. Soll was mit Verwechslungsgefahren in Assembler (ADd with Carry) zu tun haben. Auch gut. Die Frage ist die: In den io*.h steht z.B. #define ADCW _SFR_IO16(0x04). Mit Unterstrich nur für Compilerhersteller etc. hab´ich auch schon rausgefunden, nur wo kann ich was zum rechten Teil _SFR_IO16(0x04) rausfinden; was es bedeutet? Wo sind diese "Geheimnisse" aufgeschlüsselt? Die avr-libc hat sich total ausgeschwiegen. War nicht leicht, wenigstens die io*.h als Quelle zu finden. Danke und Gruß Lutz
Hmm, wenn Du Dir die Doku zu den special function registers ansiehst, solltest Du alles finden. Ist in der Tat bißchen unglücklich, daß es noch Files gibt, in denen ADC als word-Register benutzt wird. Damit funktioniert halt aufgrund des ,,dummen'' Präprozessors dann legaler Assemblercode wie ADD R18,R24 ADC R19,R25 nicht mehr. Für AT43U35x, ATCAN128 und ATmega169 gibt's leider nur die ADC-Definition. Bei ATmega128, ATmega32, ATmega64, ATmega8, ATmega8535, ATmega{4,8,16}8, ATtiny13 und ATtiny26 gibt's zumindest beide (so daß man sich für ADCW entscheiden kann), aber das löst natürlich das oben beschriebene Problem nicht. Wenn Du Lust hast, kannst Du das gern mal auf der avr-libc Entwicklerliste weiterdiskutieren, den Knoten sollten wir in der Tat auflösen, d. h. künftig nur noch ADCW, aber irgendwie brauchen wir eine Übergangsstrategie.
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.