Hallo

Ohne Interrupts, dafür aber blockierend könnte es so funktionieren (noch nicht getestet):
Code:
uint16_t get_RC(uint8_t kanal)
{
	uint16_t count=0;
	if(kanal==1)                  // Erster RC-Kanal
	{
	   while(PINC & 1); 				// warten bis Ende des aktuellen Impuls
	   while(!(PINC & 1));			// warten auf Ende Pause
	   while(PINC & 1) count++; 	// Impulslänge messen
	}
	if(kanal==2)                  // Zweiter RC-Kanal
	{
	   while(PINC & 2);
	   while(!(PINC & 2));
	   while(PINC & 2) count++;
	}
	return(count);             	// Zählwert übergeben
}
Kleiner Überschlag: Bei 8MHz und 2ms Impulslänge und Erhöhung des Zählers bei jedem Takt: 0,002s/(1/8000000)=0,002/0,000000125=16000

Weil "while(PINC & 1) count++;" aber sicher mehr als einen Takt benötigt wird dieser Wert nie erreicht und eine 16-Bit-Variable reicht als Zähler.

Gruß

mic