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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.