Guten Abend allerseits.
Vor ein paar Stunden machte ich meine erste Begegnung mit A/D-Wandlern
überhaupt.
Ich verwende einen ATtiny26 bei 16MHz und möchte mir schlicht und
einfach erst einmal 8 Bits des ADC-Wertes am PORTA ausgeben lassen.
Das Datenblatt habe ich auch schon studiert und folgenden kleinen Code
verfasst. Allerdings tut sich da genau nichts. :-/
1 | RESET:
|
2 | ldi r16, 0b11111111 ; DDR A
|
3 | out DDRB, r16
|
4 |
|
5 | ldi r16, 0b00000000 ; PORT A
|
6 | out PORTB, r16
|
7 |
|
8 | ldi r16, 0b00001111 ; DDR B
|
9 | out DDRB, r16
|
10 |
|
11 | ldi r16, 0b00000000 ; PORT B
|
12 | out PORTB, r16
|
13 |
|
14 | ; ADC
|
15 | ldi r16, 0b00101001 ; AVCC, ADLAR, ADC9
|
16 | out ADMUX, r16
|
17 |
|
18 | ldi r16, 0b11100110 ; ADEN, ADSC, ADFR, Prescaler 64 (250kHz)
|
19 | out ADCSR, r16
|
20 |
|
21 | sei ; Interrupts an
|
22 |
|
23 |
|
24 | MAIN:
|
25 | sbic ADCSR, ADSC
|
26 | rjmp MAIN
|
27 |
|
28 | in r16, ADCH
|
29 |
|
30 | out PORTA, r16
|
31 | rjmp MAIN
|
Ausgewählt ist der ADC9. An PB6 habe ich dazu einfach ein Kabel gelötet,
mit dem ich über ein Poti zwischen VCC und GND herumfummele.
Vielleicht kann mir jemand helfen, den Fehler zu finden; PORTA rührt
sich nicht und bleibt 0.
Viele Grüße,
Paul