HMS schrieb:
> könnte das funtkionieren?
>
> PORTB &= ~((1 << PB3)); // löscht Bit 0 und 2 in PORTB
Was soll das bringen?
Du hast nicht mehr die Kontrolle über den PB3 Pin. Die hast du an den
Timer abgegeben. Der kontrolliert jetzt diesen Pin.
Warum willst du nicht die Taktbits des Timers einfach auf 0
zurücksetzen? Damit hat der Timer dann keinen Vorteiler mehr und ohne
Vorteiler taktet der auch nicht.
Timer einschalten
TCCR2 |= (1 << CS21) | (1 << CS22);
Timer ausschalten
TCCR2 &= ~( (1 << CS21) | (1 << CS22) );
Einzig unschön (das liegt aber im Ermessen) ist, dass die LED
schlagartig dort mit Blinken aufhört, wo du deinen Taster betätigst. Ob
das mitten in der Aus-Phase oder Mitten in der Ein-Phase ist, ist der
dann egal. Aufgehört ist aufgehört. Wenn dich das stört, musst du wieder
die Kontrolle über den Pin zurück erlangen und selbst den Pin
ausschalten (wobei ich mir nicht sicher bin, ob der Timer dann
tatsächlich Zugriffe auf das PORTB/3 blockiert. Aber das kann man
ausprobieren)
Das mit dem Bit setzen/löschen hast du noch nicht so recht kapiert,
oder?
Ein Bit mit der Nummer xy wird gesetzt
Byte |= ( 1 << xy );
ein Bit mit der Nummer xy wird gelöscht
Byte &= ~( 1 << xy );
Um zu verstehen warum das so ist, solltest du dir das alles auf Bitebene
aufmalen und dann selbst mal die Einzelbits miteinander logisch
verknüpfen.