Atmega 16 Timer1 OC1A Problem

#1331696
Lesenswert?

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
Gast #1332228
Lesenswert?

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.
#1332401
Lesenswert?

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
Persönliche Seite #1332439
Lesenswert?

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
#1333087
Lesenswert?

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
Gast #1333116
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren