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:
Habe das REFS0 rausgenommen, da ich mit 2,56 V externer Spannung vergleiche.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
Doch der ADC erstellt trotzdem noch immer Werte, ohne dass ich auf eine Taste drücke![]()







Zitieren

Lesezeichen