Habe das Prorgamm nun abgeändert. Jedoch erhalte ich trotzdem unlogische Werte.
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.
;Überprüfung ob Werte im sinnvollen Bereich sind.
ldi R21,0x32 ;Es wird erst ab Wert 50 in EEPROM geschrieben.
sub R21,lowad
brpl wait
ldi R21,0x02 ;Es wird erst ab Wert 768 nicht mehr in EEPROM geschrieben.
sub R21,highad
brmi wait
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
Ich erhalte Werte, welche nichts mit dem Drücken der Tasten zu tun haben. Z.B. erhalte ich 0x014E, wenn ich Taste 5 drücke, welche jedoch mit dem Multimeter einen ungefähren Wert von 0,32 V liefert. Logischerweise müsste dort doch etwa 0x0080 herauskommen. Auch bei anderen Tasten kommen ganz andere Werte heraus.
Am besten man überträgt das Programm einmal in den 1.4 RN-Control und schaut sich das selbst an.
Wie soll ich es denn dann bewerkstelligen, die verschiedenen Werte der Tasten richtig herauszulesen.
Lesezeichen