Hallo

Da ist mir ein kleiner "Fehler" unterlaufen, timebase und gettime() gibt es nicht in der orginalen Library:

volatile unsigned char count72kHz;

/* uses timer2 (36kHz for IR communication */
/* counts falling and rising edge => 36kHz*2 = 72kHz */
SIGNAL (SIG_OUTPUT_COMPARE2)
{
count72kHz ++;
}
aus asoro.c v2.1

Spätere Versionen mit dem 36kHz-Timer verwenden timebase so:

volatile unsigned char count36kHz;
volatile unsigned long timebase;
volatile int autoencode=FALSE;

/* uses timer2 (36kHz for IR communication */
SIGNAL (SIG_OVERFLOW2)
{
TCNT2 += 0x25;
count36kHz ++;
if (!count36kHz) timebase ++;
}
cli() und sei() verwende ich vorsichtshalber, denn einen long-Wert auf null zu setzen benötigt mehr als einen Befehl und könnte deshalb vom Timerinterrupt unterbrochen werden.

Gruß

mic