So, nach langem Hin und Her, habe ich nun endlich ein funktionierendes Programm schreiben können. Es liest im Grunde nur die ADC-Werte aus. Aber ich nutze es um herauszufinden in welchem Bereich die Werte für die verschiedenen Tasten liegen.
Danke für die Hilfe. Nun verstehe ich endlich wie der AD-Wandler arbeitet und der EEPROM beschrieben werden kann.Code:.Include "m32def.inc" .DEF tmp = R16 .DEF lowad = R17 .DEF highad = R18 ;*************** ;Auslesen des ADC ;*************** ldi tmp, (1<<ADEN)|(1<<ADPS1)|(1<<ADPS2) out ADCSRA, tmp ldi tmp, (1<<REFS0)|(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. ;****************** ;Speichern ins EEPROM ;****************** 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, lowad ;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, highad sbi EECR,EEMWE sbi EECR,EEWE ;Ende :)![]()







Zitieren

Lesezeichen