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!
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
@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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.