Die Ergebnisse einer ADC Wandlung landen beim Atmega 16 in den Registern ADCH und ADCL. http://www.mikrocontroller.net/articles/AVR-Tutorial:_ADC im Tutorial steht unter "Die Ergebnisregister ADCL und ADCH" bei ADLAR = 1 (2te Möglichkeit), dass man das Ergebnis als 8 Bit Zahl interpretieren kann. Dazu mein Programm:
1 | |
2 | ;**********************************Header************************************** |
3 | ;Projektname: |
4 | ;Name des Erstellers: |
5 | ;Zuletzt aktualisiert: |
6 | ; |
7 | ;*****************************Initialisierungen******************************** |
8 | .include "m16def.inc" ;Definitionsdatei des Mega16 |
9 | |
10 | ;Stackpointer-init*********** |
11 | ldi r16, High(Ramend) |
12 | out SPH, r16 |
13 | |
14 | ldi r16, Low(Ramend) |
15 | out SPL, r16 |
16 | |
17 | ;ADC-init*********** |
18 | ldi r16, 0x24 ;Externe Referenz, Ergebnis linksbündig, Kanal 4 |
19 | out ADMUX, r16 ;Ausgabe |
20 | |
21 | ldi r16, 0x81 |
22 | out ADCSRA, r16 |
23 | |
24 | ;*****************Deklarierete Funktionen und |
25 | Subroutinen********************** |
26 | |
27 | ;*************************Variablendeklarationen******************************* |
28 | |
29 | ;*****************************Ein-Ausgänge************************************* |
30 | ser r16 ;Setze Registerinhalt auf 255 (ldi r16, 255) |
31 | out DDRB, r16 ;Portb als Ausgabeport |
32 | |
33 | ;*****************************Hauptprogramm************************************ |
34 | |
35 | Hauptprogramm: |
36 | sbi ADCSRA, ADSC ;Starte ADC |
37 | in r16, ADCH ;Lade Ergebnis in r16 |
38 | neg r16 ;Drehe 0ler und 1ser um (für STK500) |
39 | out PORTB, r16 ;Gebe Ergebnis an PORTB aus |
40 | jmp Hauptprogramm |
wenn ich jedoch am Potentiometer drehe, der an PinA4 hängt tut sich nur manchmal was oder halt garnichts ist der Fehler in der Software? Ich benutze das STK 500