Hallo,
danke für Eure Hilfe! Die Datenblätter von Atmel haben ja an sich Vorbildcharakter, aber manchmal ist einfach zu viel Neues auf einmal.
Programm und Beschaltung hatte ich mal am ATmega8 zum Laufen gebracht, jetzt beim ATmega16 hakt's.
- Pull-Ups: waren aktiviert, sind jetzt deaktiviert
- AVCC: wie im Datenblatt beschaltet (S. 214)
- AREF: AREF---Kondensator---GND
- Referenzspannung: jetzt 5VDC, nicht mehr 2,54
- Versorgung: 5VDC, eine andere Spannung kann über das Poti nicht anliegen
Das ADC-Ergebnis soll direkt an PortB (8-LED's) ausgegeben werden. Aber, for_ro, Du hast recht, es tut sich gar nichts. Und zieht immer noch Strom.
Das Programm:
Code:
; ADMUX definieren
ldi Temp,0b01100000 ; REFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0
; 0 1 1 0 0 0 0 0
out ADMUX,Temp ; REFS=01: Referenzspannung ist AVCC
; ADLAR=1: linksbündig (für 8-Bit Auflösung)
; MUX=0000: ADC0 anwählen
; ADSCSRA definieren ; ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0
ldi Temp,0b11000000 ; 1 1 0 0 0 0 0 0
out ADCSRA,Temp ; ADEN=1: einschalten
; ADSC=1: Conversation starten
; ADIF=0: gibt an wenn Conversation fertig
; ADATE=0: auto trigger aus
; ADIE=0: interrupt ausgeschaltet
; ADPSx: prescaler definieren
; Conversation abwarten
ADC0_warten:
sbis ADCSRA,ADIF ; wenn ADIF gesetzt => Conversion fertig
rjmp ADC0_warten
ADC0_einlesen:
in Poti, ADCH ; linksbündiges Ergebnis merken
Ich hab jetzt keine Idee mehr, woran es noch liegen könnte.
Lesezeichen