so, nach weitereim rumtüfteln bin ich nun zu dem entschluss gekommen, dass irgendetwas an meiner timereinstellung nicht passen kann.

bei folgendem programm müsste die ir- pulspause nach meiner berechnung 690µs betragen. wenn ich das programm aber teste beträgt sie geschätzt nur etwa 0,1s.

irgendwie habe ich langsam das gefühl, dass mein oszi mit den 72Hz doch richtig misst und mein timer um den faktor 1000 falsch eingestellt ist...

hier die timereinstellung:




Code:
//     Timer 1 erweiterung


	 TCCR1B =  (0 << ICNC1)
         | (0 << ICES1)
         | (0 << WGM13)
         | (1 << WGM12)
         | (0 << CS12)
         | (0 << CS11)
         | (1 << CS10);

	 OCR1A = 221; 
	


	// Timer 2 - used for beeper:
	TCCR2 =  0; 
	OCR2  = 0xFF; 

	// Enable timer interrupts:
	TIMSK =   (1 << OCIE0)|(1<<OCIE1A);
	sei();
mein programm:

Code:
#include "RP6ControlLib.h"

uint8_t a;
uint8_t interruptcounter;


ISR(TIMER1_COMPA_vect) 
	
	{interruptcounter++;
	
if(interruptcounter <50)
	{PORTD ^= (1<<PD5);
	writeString_P("Interrupt Timer1 Compare\n");}

if(interruptcounter > 50 && interruptcounter <101)
	{writeString_P("Interrupt Pause\n");}

if(interruptcounter > 100)
	{interruptcounter =0;}
	


}





void infrarotempfang(void)
{if (PINC & (1<<PC3))
{
a++;
}

if (a >100)
	{writeString_P("Infrarot empfangen\n");
	startStopwatch1();}
	
if (getStopwatch1() >1000)
	{setStopwatch1(0);}
}

int main(void)
{initRP6Control();

DDRD |= (1<<PD5);	//PD5 als Ausgang

DDRC &=~ (1<<PC3);  	//PC3 als Eingang

while(true)
{

infrarotempfang();
}
return 0;
}

was meint ihr dazu?

weiß langsam nicht mehr weiter....

mfg andi