Gast
#1347170
Hallo,
ich versuche den INT0 des Tiny25 in Betrieb zu nehmen, aber leider
klappt es nicht. Mit dem INT0 will ich einen Puls ausmessen
Port vorbereiten..
DDRB &= ~(1<<DDB0); /* Pin PB0 als Eingang */
PORTB |= (1<<PB0); /* internen Pull-Up an PB0 aktivieren */
/* Int0 steigende Flanke / INT0 enable PB0 */
MCUCR = 0x03;
GIMSK = (1 << INT0);
sei();
in der Routine sollte der Einsprung erfolgen wenn ein Flankenwechsel
kommt...
SIGNAL(SIG_INTERRUPT0)
{
if( MCUCR == 0x03) // Testen auf steigende Flanke
{
TCNT1 = 0; // Timer1 Reset
TCCR1 = ( 1 << CS10 | 1 << CS12 );
MCUCR = 0x02; // INT0 fallende Flanke
return;
}
if( MCUCR == 0x02 ) // Testen auf fallende Flanke
{
TCCR1 = 0x00; // Timer1 Stoppen
Pulsdauer = TCNT1; // Timer1 Wert = Pulsdauer
MCUCR = 0x03; // INT0 auf steigende Flanke
return;
}
}
das gleiche hatte ich schon mit einem Tiny13 gemacht und da geht es ohne
Problem, beim Tiny25 reagiert aber der Int nicht auf einen
Flankenwechsel am Pin (mit Oszi nachgemessen..)
was mach ich falsch???
Gruss Patrick