Hallo izaseba,
ich habe es mal ausprobiert. Allerdings fehlt in deinem Programm noch die Initialisierung von Timer2. Damit läuft die Infrarot Schnittstelle nicht.
Nachdem ich das korrigiert hatte, funktionierte alles prima. Die Werte werden dauerhaft im EEPROM gespeichert, wenn ich das 2 .Testprogramm brenne, werden die korrekten Taster erkannt und ausgegeben
Hier noch meine Änderungen (für beide Testprogramme):
Code:
ISR (TIMER2_OVF_vect)
{
TCNT2 += 0x25;
}
...
void init(void) {
/* Timer2 Init */
TCCR2 = (1<<WGM20) | (1<<WGM21) | (1<<COM20) | (1<<COM21) | (1<<CS20);
OCR2 = 0x91; // duty cycle fuer 36kHz
TIMSK |= (1<<TOIE2); // 36kHz counter
/*Statusled, IRLED Init*/
DDRB =(1<<PB0) | (1<<PB3);
...
@sternthaler _delay_ms ist als Funktion eigentlich schon lange implementiert. In früheren AVR Versionen stand die Header Datei im AVR Ordner. Probier mal:
Code:
#include<avr/delay.h>
F_CPU muß allerdings auch noch definiert sein, damit es funktioniert. Das habe ich im Makefile geändert:
Code:
CFLAGS = -g -O$(OPT) -DF_CPU=8000000UL -I../../lib/inc\
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \
-Wall -Wstrict-prototypes \
-Wa,-ahlms=$(<:.c=.lst)
Lesezeichen