ADC Testen / Problem

Gast #3640449
Lesenswert?

Hallo zusammen,
ich würde gerne der ADC meines atmega8 testen.
Dazu habe ich wie im Tutorial ein 500k Poti zwischen 5V und GND 
geschaltet. Der wiper geht an den PC0 Eingang also ADC0.

Mein Hauptproblem ist, dass ich nicht so recht weiß wie ich den ADC 
konfigurieren soll. Deshalb habe ich jetzt einfach mal die Konfiguration 
aus dem Beispielcode geklaut. Hier ist der Code wie ich ihn gerade 
stehen habe:

1
.def temp = r16
2
clr temp
3

4
ldi temp, 0xFF
5
out DDRD, temp
6

7
ldi temp, (1<<REFS0)
8
out ADMUX, temp
9

10
ldi temp, (1<<ADEN) | (1<<ADPS1) | (1<<ADPS0)
11
out ADCSRA, temp
12

13
sbi ADCSRA, ADSC
14

15
loop:
16

17

18
in temp, ADCL
19
;in temp, ADCH
20
out PORTD, temp
21

22
rjmp loop

Also so habe ich das eingestellt, dass die interne Referenz benutzt 
wird.
Grundsätzlich ist der ADC eingeschaltet und der Prescaler ist auf 8 
gesetzt, da ich den internen Oszillator benutze (1MHz).

Mein Ziel ist es jetzt einmalig einen Wert auszulesen und den in Binär 
an PORTD auszugeben.
Das funktioniert allerdings nicht. Ich lese nur ADCL aus, da die anderen 
2 Bits für mich erst mal uninteressant sind.
Was habe ich vergessen zu beachten?
Gast #3640502
Lesenswert?

Also muss ich neben dem ADCL auch das ADCH auslesen, da ich sonst keinen 
Zugriff mehr auf die Register habe.
Allerdings komme ich immer noch nicht so ganz weiter.

Ich habe Das ADCH Bit hinzugefügt und den Loop in folgendes geändert:
1
loop:
2

3
in temp2, ADCL
4
in temp, ADCH
5
out PORTD, temp2
6

7
rjmp loop

Die LEDs an meinem STK500 sagen mir, dass das ADCL Byte komplett auf 1 
steht, egal wie das Poti steht.
Gast #3640540
Lesenswert?

Hi

>Was habe ich vergessen zu beachten?

Du hast vergessen auf das Ende der ADC-Wandlung zu warten.
1
     sbi ADCSRA, ADSC
2

3
aaa:  sbic ADCSRA,ADSC
4
      rjmp aaa
5

6
      in temp, ADCL
7
      out PORTD, temp
8
      in temp, ADCH
9
      ....

MfG Spess

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