Mega88 adc Memory Mapped

Gast #1852434
Lesenswert?
• ▲
▼
Hallo,

habe gerade einen Mega88 auf dem STK500 und bin am probieren den ADC in 
Betrieb zu nehmen.
Ein 22k Poti ist mit dem Schleifer am adc0 angeschlossen, die beiden 
aüsseren Pins des Poti sind an +5V und an GND angeschlossen.
Der Analogwert soll an PortD ausgegeben werden.
PortD ist mit den 8 LEDs auf dem STK verbunden.

Mein Code (Basierend auf 
http://www.mikrocontroller.net/articles/AVR-Tutorial:_ADC) läuft soweit, 
jedoch habe ich Änderungen vorgenommen damit ich auf die jetzt (Mega88) 
Memory Mapped ADC-Register zugreifen kann.
1
.include "m88def.inc"
2
.def temp1     = r16         ; allgemeines temp Register, zur kurzfristigen Verwendung
3
.def temp2     = r17         ; Register für 24 Bit Addition, Lowest Byte
4
.def temp3     = r18         ; Register für 24 Bit Addition, Middle Byte
5
.def temp4     = r19         ; Register für 24 Bit Addition, Highest Byte
6

7

8
 
9
    ldi     temp1, LOW(RAMEND)                  ; Stackpointer initialisieren
10
    out     SPL, temp1
11
    ldi     temp1, HIGH(RAMEND)
12
    out     SPH, temp1
13
     ldi        temp1,0xff
14
    out        ddrd,temp1
15
;    clr        temp1
16
    out        portd,temp1
17

18
 
19
; ADC initialisieren: ADC0, Vcc als Referenz, Single Conversion, Vorteiler 128
20
 
21
    ldi     temp1, (1<<REFS0) |(1<<ADLAR)          ; Kanal 0, interne Referenzspannung 5V, Analogwerte Linksbündig
22
    sts     ADMUX, temp1
23
    ldi     temp1, (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0)
24
    sts     ADCSRA, temp1
25

26

27

28
sample_adc:
29
     ldi        temp1,1<<adsc|1<<aden
30
    sts     ADCSRA,temp1        ; den ADC starten
31
 
32
wait_adc:
33

34
    lds        temp1,adcsra
35
    andi    temp1,adsc
36
    brne    wait_adc
37

38
;    sbic    ADCSRA, ADSC        ; wenn der ADC fertig ist, wird dieses Bit gelöscht
39
;   rjmp    wait_adc
40

41
    lds      temp1, ADCL         ; immer zuerst LOW Byte lesen
42
    lds      temp1, ADCH        ; danach das mittlerweile gesperrte High Byte
43
    out        portd,temp1
44
    rjmp    sample_adc

Frage: Geht das auch eleganter, oder muss ich statt out immer mit LDS - 
STS arbeiten ?

Grüsse

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.