Kurzeinführung Taster: Da du einen Atmel hast und wir den ganzen Schaltungskladderadatsch weglassen können brauchst du faktisch nur einen kleinen Kondensator und einen Taster.

Die Atmels haben alle sognenannte interne Pull Up Widerstände, in der Größenordnung 10-50kOhm soweit ich das in ERinnerung habe.

Du musst dafür den Pin für den Taster im DDR Register auf Eingang konfigurieren und im OUT Register den Pin auf High setzen. Dann schließt du den Kondensator an den Pin und nach Ground an (der Puffert ein wenig Energie wenn der Schalter prellt) und natürlich deinen Taster, ebenfalls nach Ground.

Wenn du den Taster also drückst, wird der Pin auf Ground gezogen und zeigt im IN Register eine 0, lässt du den Taster los, lädt sich der Kondensator über den Pull-Up Widerstand weider auf und zeigt dann im IN Register eine 1.

Du musst also in deiner nop-Schleife dann nur das IN-Register abfragen und je nachdem ob dein IN Register für den Pin eine 1 oder 0 anzeigt das OCR0B REgister für das Tasterverhältnis ändern oder das OCR0A Register für die Frequenz

Den Code habe ich zwecks Lerneffekt dieses mal weg gelassen :P

PS: Wkrug hat natürlich recht, wenn du OCR0A veränderst, musst du auch OCR0B entsprechend Ändern damit sich das Tastverhältnis nicht verschiebt