Muss noch mal den Thread auswühlen. Dachte bis jetzt das Prorgamm würde richtig funktionieren, jedoch, spuckt der AD-Wandler die ganze Zeit Werte aus, auch wenn ich die Tasten nicht drücke.

Das Programm sollte einfach am PA7 des 1.4 RN-Control Board, dort wo 5 Taster über Spannungsteiler angeschlossen sind, die Spannungswerte in die Speicherzellen des EEPROMs sichern. Habe ich irgendwo einen Fehler gemacht. Ich werde nicht wirklich schlau aus den Werten.

Edit:

Hier noch der Programmcode:
Code:
.Include "m32def.inc"
.DEF tmp = R16
.DEF lowad = R17
.DEF highad = R18
.EQU wertadlow = 0x60
.EQU wertadhigh = 0x61

ldi tmp, (1<<ADEN)|(1<<ADPS1)|(1<<ADPS2)
out ADCSRA, tmp
ldi tmp,(1<<MUX2)|(1<<MUX1)|(1<<MUX0)
out ADMUX, tmp
sbi ADCSRA, ADSC	;Das Bit ADSC wird gesetzt und der ADC startet.

wait:
sbis ADCSRA,ADIF	;Das ADIF wird abgefragt, ob eine Spannung anliegt.
rjmp wait	;Warteschleife bis Spannung anliegt.

in lowad, ADCL	;Das Low-Byte des ADCs wird ausgelesen.
in highad, ADCH	;Das High-Byte wird ausgelesen.

write1:
sbic EECR,EEWE	;Ist der Schreibzyklus beendet, PC = PC +2
rjmp write1

ldi R19, 0xF0	;Festlegen der Zieladresse.
ldi R20, 0x00	

out EEARH, R20	;Die Zieladresse des EEPROM wird übertragen.
out EEARL, R19

;Als Nächstes wird das Low-Byte des ADCs abgespeichert.

out EEDR, highad	;Byte in Zwischenspeicher laden.

;Folgende 2 Befehle sorgen dafür, dass der Wert im Zwischenspeicher nun endgültig in der Zieladresse des EEPROMs abgespeichert wird.

sbi EECR,EEMWE
sbi EECR,EEWE

write2:
sbic EECR,EEWE	;Ist der Schreibzyklus beendet, PC = PC +2
rjmp write2

;Nun wird die nächste Zieladresse festgelegt und das High-Byte des ADCs abgespeichert.

inc R19

out EEARL, R19	;Es muss nur das Low-Byte geändert werden.
out EEDR, lowad

sbi EECR,EEMWE
sbi EECR,EEWE
;Ende
Habe das REFS0 rausgenommen, da ich mit 2,56 V externer Spannung vergleiche.

Doch der ADC erstellt trotzdem noch immer Werte, ohne dass ich auf eine Taste drücke