Hallo ! Ich experimentiere mit BASCOM und und einem Atmega 16 und deren Timer1 rum und bin da eher ein Anfänger. Dazu habe ich den Timer1 so konfiguriert, das bei einem Compare A der Ausgang OC1A (pin19) auf 1 gesetzt wird. Das funktioniert soweit auch, aber wie kann ich diesen Pin denn nun wieder (per Programmcode) zurück auf 0 setzen ? Ich check das nicht... Vielen Dank schon mal für die Hilfe, Gruss, haribo
Die Frage nach dem Wie hängt von dem Wann ab. Wann soll der Pin zurück auf 0 gesetzt werden?
Es gibt die Möglichkeit den Pin bei einem CompareMatch zu togglen ( also das er immer den zustand ändert von 0->1 und bei 1->0 ) oder aber du kannst den Timer so einstellen das er wenn er bei Timer = 0 zu zählen anfängt den Pin ebenfalls löscht. Dazu rate ich dir das Datenblatt zu lesen ( ab Seite 100 ), dort stehen alle möglichkeiten beschrieben.
Danke für die Antworten. Toggeln kommt nicht in frage. Der Zeitpunkt des zurücksetzens wird im Programm bestimmt. Der OC1A wird also im timer1 per Compare A gesetzt, bleibt gesetzt (funktioniert auch) und soll dann im Programm irgend wann zurückgesetzt werden (kein fixer Zeitpunkt). In weiterer Folge soll der Timer1 den dann auch wieder setzen können. (Timer1 soll immer laufen). Gruss und Dank Haribo
Harald B. schrieb: > Toggeln kommt nicht in frage. > Der Zeitpunkt des zurücksetzens wird im Programm bestimmt. > Der OC1A wird also im timer1 per Compare A gesetzt, bleibt gesetzt > (funktioniert auch) und soll dann im Programm irgend wann zurückgesetzt > werden (kein fixer Zeitpunkt). In weiterer Folge soll der Timer1 den > dann auch wieder setzen können. > (Timer1 soll immer laufen). Willkürliches Ausschalten von OC1A: a. Bei Timer/Counter1 Control Register A – TCCR1A Normal port operation, OC1A/OC1B disconnected einstellen. b. Pin 19 ggf. über DDR als Output einstellen (sollte bereits geschehen sein) und "manuell" LOW ausgeben. Willkürliches Wiedereinschalten von OC1A: Änderung von a. wieder rückgängig machen
Auch das ist natürlich möglich: - Timer Control Register auf "Clear Pin on Match" einstellen - Per FOC1A Bit das Bit setzen - Timer Control Register wieder auf "Set Pin on Match" zurückstellen Gruß, Marcus
Danke für die Vorschläge. Der Pin ist natürlich schon im DDR als Ausgang per Programmcode eigestellt. Aber selbst wenn ich das nicht mache, schaltet der Timer den pin trotzdem. Die richtige DDR einstellung dürfte hier wohl der Bascom selbst villeicht mitmachen. Ich werd das ganze morgen mal testen und hier die Ergebnisse berichten. Heute habe ich keinen bock mehr... ;-) Ürsprünglich dachte ich, das dies einfacher gehen müsste, also mit löschen bzw. setzen eines entsprechenden Bits in einem Register. Muss scheinbar doch "über Umwege" gemacht werden. Gruss, Haribo
Hi >Die richtige DDR einstellung dürfte hier wohl der Bascom >selbst villeicht mitmachen. Nein. Das hängt davon ab, wie das Pin konfiguriert ist -> COM-Bits im TCC-Register. Wenn die Bits nicht beide 0 sind (disconnected) kannst du DDRx setzen bis du schwarz wirst. Die Variante von Marcus ist die einzig mögliche. Nimm dir mal das Datenblatt vor und lies dir das Kapitel über den Timer durch. Der Rest schadet auch nicht. MfG Spess
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.