Hallo! Ich habe mir zwei Funktionen gebaut, mit denen ich den Timer1 des Atmega8 starten und anhalten kann. Diese Start- und Stop-Funktion wird durch die ISR des Timers 0 getriggert. Das Ding soll lediglich ein ca. 3,7kHz Signal (Beep mit Piezo) an Pin PB1 ausspucken. Timer0 sorgt dabei für ein Pulsieren des Pieptones.Das tut er zwar, doch bleibt der Port nach dem Aufrufen der STOP-Funktion durch den Toggle-Betrieb regelmäßig auf "high" kleben. Habe schon probiert, den Ausgang in der Stop-Funktion nach dem Anhalten des Timers1 definiert auf "0" zu setzen, aber das funzt nicht! Dann habe ich an gleicher Stelle noch vorher das OCF1A-Flag gekillt (=1), hat auch nichts gebracht....Kacke! Wer von Euch kann mir helfen??? Vielen Dank!
Gast
#861133
Moin, vermutlich mußt Du die Portpins wieder in den "normal Port operation" verstetzen. Sichwort COM1A1/COM1B1. Erst dann kannst Du den Portpin auch manuell auf low setzen. Gruß mo
Gast
#861451
@mo! Danke, nun klappt es. Der Ausgang wird nun in der Timer1_stop() Funktion als "nicht angesteuert" definiert. Es ist offensichtlich nicht notwendig den Pin danach noch auf 0 zu setzen. Damit man nun über die Start- und Stop-Funktionen den Timer wahlweise Starten und Stoppen kann, muss natürlich die Anweisung zum Togglen in der Timer1_start() funct. stehen. Korrigierter Code oben. Danke
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.