Ich möchte beim Atmega48 den AD-Wandler Register ansprechen. Ich benutze AVR Studio 4.13 und Programmiere in Assembler. Mein Problem ist, dass ich auf die Register des ADC nicht zugreifen kann. Beim AVR Studio steht vor dem Register NA. Habe Bei der Atmega48 Dokumentation nichts gefunden, wie man die register anspricht. Ich danke für jeden Tip im vorraus.
Das sind zwei Register, ADCH und ADCL, und die müssen in Assembler separat (und in der richtigen Reihenfolge) ausgelesen werden. ADC gibts in Assembler nicht, nur in Hochsprachen...
@Johannes: Danke, es liegt also daran, dass wir Assembler benutzen. Nur was ich nicht verstehe, ist, warum man beim Atmega8 in Assembler die Register ansprechen kann.
Ein Register "ADC" gibt es auch beim ATMega8 nicht, es sei denn, Ihr habt da irgendwas selbst definiert. Da das Ergebnis des ADC zunächst 10 Bit breit ist, passt es generell nicht in ein 8-Bit-Register und kann demzufolge auch nicht in einer einzigen Operation ausgelesen werden. Es sind zwei Register, sowohl beim ATMega8 als auch bei anderen AVRs mit A/D-Wandler, und die heißen auch überall gleich.
>was ich nicht verstehe, ist, warum man beim Atmega8 in Assembler die >Register ansprechen kann. Ich auch nicht... das sollte da auch nicht gehen. Kannst du mal den Code dazu posten?
Oh ... JA, erst mal Sorry, meine Beschreibung des Problems war nicht exakt genug. Mein Problem: Ich möchte den ADC benutzen, dafür muss ich auf bestimmte Register zugreifen um die Einstellungen durch zu führen. Bei der Kompilierung, das die Adresse(des Register) ausserhalb des bereiches liegt. Beim AVRStudio gibt es einen Fenster, wo alle Register des Bausteins aufgelistet sind und bei allen den ADC-Registern steht ein "NA". (beim Atmel8 steht kein "NA"). Also mein Haubt-Problem ist, das ich auf alle Register, die eine "NA" vor sich stehen haben, nicht zugreifen kann. zb. ldi r16,0xff out ADMUX ;oder ldi r16,0x00 out PRR Meine Werksuge: AVRStudio 4.13 Assembler STK500
Hi Dann sprech die Register mal mit 'sts' statt 'out' an. 'out' kann nur einen bestimmten Adressbereich abdecken. MfG Spess
Ja, das ist ganz was anderes. Im ATMega48 liegen die I/O-Register des ADC im extended I/O-Space und können nicht mit "in" und "out" angesprochen werden. Da musst Du "lds" bzw. "sts" benutzen. "in" und "out" funktionieren nur bei den I/O-Registern mit Adressen bis 0x63.
:) Ja danke viel mals, das wuste ich nicht. Da habe ich ja was neues dazu gelernt. :)
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.