Ok, neuer versuch...
Code:
SIGNAL(SIG_INTERRUPT1) // Taster an PD3 löst Interrupt aus
{
for (i=0; i<4000; i++) // Warteschleife...
for(j=0; j<20;j++)
k++;
if(status_taster==1)
{
PORTB |= (1<<PB3); /*Setzt PB3 HIGH...LED aus \ */
PORTB &= ~(1<<PB4); //Setzt PB4 LOW...LED an } Zustand 1
PORTD |= (1<<PD5); //Setzt PD5 HIGH /
status_taster=2;
}
else
{
for (i=0; i<4000; i++) // Warteschleife...
for(j=0; j<20;j++)
k++;
PORTB &= ~(1<<PB3); /*Setzt PB3 LOW...LED an \ */
PORTB |= (1<<PB4); //Setzt PB4 HIGH...LED aus } Zustand 2
PORTD &= ~(1<<PD5); //Setzt PD5 LOW /
status_taster=1;
}
GIFR=0;
}
Kann man das so lassen?
Es wird zwar ziemlich langsam umgeschaltet, aber zu mindestens tritt das "Überschwingen" nicht so oft auf...erst dann wenn ich den Taster mit dem Finger leicht und schnell antippe...
Weiterhin sind auch ein 100nF Kondensator und ein 11kOhm Wiederstand an den Taster angelötet...
Reicht das alles aus?
Lesezeichen