Habe das Prorgamm nun abgeändert. Jedoch erhalte ich trotzdem unlogische Werte.
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.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
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.







Zitieren

Lesezeichen