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?