Forum: Mikrocontroller und Digitale Elektronik atmega8 timer1 start & stop per funktion


von Sergej D. (Firma: Keine) (2sergej)


Angehängte Dateien:

Lesenswert?

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!

von mo (Gast)


Lesenswert?

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

von Sergej Dragunov (Gast)


Angehängte Dateien:

Lesenswert?

@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
Noch kein Account? Hier anmelden.