16-bit Register Atxmega128a1

Gast #2239288
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.
#2239361
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
Gast #2241075
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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren