Forum: Mikrocontroller und Digitale Elektronik Atmega48(Register ADC)


von tom (Gast)


Lesenswert?

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.

von Johannes M. (johnny-m)


Lesenswert?

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...

von tom (Gast)


Lesenswert?

@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.

von Johannes M. (johnny-m)


Lesenswert?

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.

von Kai G. (runtimeterror)


Lesenswert?

>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?

von tom (Gast)


Lesenswert?

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

von spess53 (Gast)


Lesenswert?

Hi

Dann sprech die Register mal mit 'sts' statt 'out' an. 'out' kann nur 
einen bestimmten Adressbereich abdecken.

MfG Spess

von Johannes M. (johnny-m)


Lesenswert?

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.

von tom (Gast)


Lesenswert?

:) 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
Noch kein Account? Hier anmelden.