so, nach längerer abstinenz in diesem thread mache ich mich meinen rp6 nun mit einem ir kollissionssensor ausgestattet.
siehe hier:
Bild hier  
empfänger und sender sind die selben wie bei der RP6 Base.
die 36 KHz möchte ich über den freien Timer 1 auf der M32 mittels CTC modus erzeugen.
dazu hab ich die controllib.c folgendermaßen abgeändert:
	Code:
	
	 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 programmcode dazu sieht bisher so aus:
	Code:
	#include "RP6ControlLib.h"
uint8_t a;
ISR(TIMER1_COMPA_vect) 
	{
	PORTD ^= PD5;
writeString_P("\Interrupt Timer1 Compare");
}
void infrarotempfang(void)
{if (PINC & PC3)
{
a++;}
if (a >100)
	{writeString_P("\Infrarot empfangen");
	startStopwatch1();}
	
if (getStopwatch1() >1000)
	{setStopwatch1(0);}
}
int main(void)
{initRP6Control();
DDRD |= PD5;	//PD5 als Ausgang
DDRC &=~ PC3;  	//PC3 als Eingang
while(true)
{
infrarotempfang();
}
return 0;
}
 obwohl ich mittlerweile das datenblatt der M32 genau seziert habe, löst mein timer 1 immer noch keinen interrupt aus. die einstellungen hab ich genauestens überprüft. 
kann es sein, dass der interrupt irgendwo an anderer stelle in der controllib blockiert wird?
gruß
						
					
Lesezeichen