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.