Forum: Mikrocontroller und Digitale Elektronik 16-bit Register Atxmega128a1


von M. Н. (Gast)


Lesenswert?

Hallo.

Ich benutzte einen ATXMEGA128A1. Ich wollte mal den ADC testen. Im 
Datenblatt steht, dass das Ergebnis dan in ADCB_CH0_RESH und 
ADCB_CH0_RESL zu finden ist. Bei mir gibt es aber in der Include nur 
ADCB_CH0_RES.

Wie kann ich in ASM auf dieses 16 bit Register zugreifen.

Und ja: Ich habe den Absatzt "Accessing 16-bit Registers" gelesen.

Wäre echt dankbar, weil ich versuch jetzt schon seit 1Stunde das zum 
laufen zu bekommen.

Gruß M.H.

von Oliver J. (skriptkiddy)


Lesenswert?

In include-file steht
1
.equ ADCB_CH0RES = 592    // Channel 0 Result

Im Datenblatt steht:
1
ADCB Offset = 0x0240 (Seite 58 des kurzen Datenblattes Rev. 09/10)
2
3
CH0RESL_ADCB = offset + 0x10  (S. 315 XMega A Manual Rev. 12/09)
4
             = 0x0240 + 0x0010 = 0x0250 = 592
5
6
CH0RESH_ADCB = offset + 0x0011 = 0x0251 = 593


Defakto ist ADCB_CH0RES die Adresse von ADCB_CH0RESL
und (ADCB_CH0RES+1) die Adresse von ADCB_CH0RESH

Gruß Skriptkiddy

von M. Н. (Gast)


Lesenswert?

Hab ich mir schon fast gedacht.

Danke.

Auslesen also so:

lds r16, ADCB_CH0RES
lds r17, ADCB_CH0RES+1

???

Da high byte wird, wenn ich richtig liege, während des Auslesens des low 
bytes im TEMP register zwischengespeichert, um Anderungen bsp beim timer 
vorzubeugen, oder?

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.