Forum: Mikrocontroller und Digitale Elektronik Nochmal Atmega32 und Timer 1: Compare-Pins zurücksetzen


von Harald (Gast)


Lesenswert?

Hallo,

nachdem ich jetzt allen Hinweise hier aus dem Forum nachgegangen bin und 
damit auch den größten Teil der Probleme lösen konnte, bleibt nun noch 
immer in einem speziellen Fall die Notwendigkeit, die Compare-Ausgänge 
von Timer1 im Normalmodus zurückzusetzen (Das Problem mit allen anderne 
Modi ist, daß entweder die Compare-Ausgänge auch nicht automatisch bei 
Überlauf zurückgesetzt werden oder aber die Compare-Register nicht 
sofort sondern erst bei Top oder Bottom upgedated werden).

Leider ist der Stand noch immer der, daß die Compare-Ausgänge im 
Normalmodus zwar gesetzt werden, ich aber im Datenblatt nirgende eine 
Möglichekeit finden konnte, sie wieder zurückzusetzen.
Das muss doch irgendwie gehen, sonst wäre ja die Compare-Output-Funktion 
in Verbindung mit dem Normalmodus vollkommen sinnlos, oder?

Gruß,
Harald

von Johannes M. (johnny-m)


Lesenswert?

Harald wrote:
> Leider ist der Stand noch immer der, daß die Compare-Ausgänge im
> Normalmodus zwar gesetzt werden, ich aber im Datenblatt nirgende eine
> Möglichekeit finden konnte, sie wieder zurückzusetzen.
Im Datenblatt gibt es eine Tabelle (in meiner Version ist das Tabelle 
44, allerdings ist meine derzeitige Version des DS von vor 2 Jahren). Da 
steht drin, wie man in den nicht-PWM-Betriebsarten die COM-Bits setzen 
kann, damit der betreffende Pin beim Compare gesetzt, gelöscht oder 
getoggelt werden kann.

von Harald (Gast)


Lesenswert?

Hallo,

die Tabelle kenne ich, aber das Problem ist nicht das Verhalten der 
Pins, wenn ein Compare Match auftritt, sondern wie ich sie zu einem 
späteren Zeitpunkt wieder zurücksetzen kann.

Wenn ich das alles z.B. so einstelle, daß beim Compare Match OC1A bzw. 
OC2A gesetzt werden, dann bleiben die im Normalmodus danach ja gesetzt. 
Aber irgendwie muss man sie ja auch wieder zurücksetzen können. Leider 
nützt es nichts, sie auf disconnected zu setzen, da dann zwar die Pins 
erst mal von der Compare-Logik getrennt sind, aber das zugehörige 
Register behält seinen Wert bei. Wenn ich die Pins nun wieder mit der 
CC-Logik verbinde, haben sie wieder den selben Pegel wie vor der 
Trennung.

Gruß,
Harald

von Johannes M. (johnny-m)


Lesenswert?

Harald wrote:
> Hallo,
>
> die Tabelle kenne ich, aber das Problem ist nicht das Verhalten der
> Pins, wenn ein Compare Match auftritt, sondern wie ich sie zu einem
> späteren Zeitpunkt wieder zurücksetzen kann.
Z.B., indem Du in das Portregister an der betreffenden Stelle eine Null 
schreibst...

von Harald (Gast)


Lesenswert?

Hallo,

>Z.B., indem Du in das Portregister an der betreffenden Stelle eine Null
>schreibst...

das habe ich bereits versucht, der Ausgang hat nicht darauf reagiert.
Würde auch dem Schaltbild auf S.97, oben (Bild 44) nach so sein; der Pin 
gibt, wenn er auf Compare Output eingestellt ist, nicht den Inhalt von 
PORTDx sondern von OCnx aus. Ich konnte aber bisher nicht herausfinden, 
wie man auf dieses Register zugreift.

Gruß,
Harald

von Olaf (Gast)


Lesenswert?

Hi Harald,

Drei Schritte:
1. COM0x auf 'clear' setzen
2. eine '1' in FOC0 schreiben
3. COM0x wieder herstellen.

Nach lesen bei 'Force Output Compare' Seite 70 im PDF.

Hoffe das ist was du suchst

Olaf

von Olaf (Gast)


Lesenswert?

Ups...

COM1x, FOC1 natürlich und Seite 94...

von Harald (Gast)


Lesenswert?

Hallo,

>Drei Schritte:
>1. COM0x auf 'clear' setzen
>2. eine '1' in FOC0 schreiben
>3. COM0x wieder herstellen.
>
>Nach lesen bei 'Force Output Compare' Seite 70 im PDF.
>
>Hoffe das ist was du suchst

Jepp, das war´s das Ende meiner Sorgen :-)

Gruß,
Harald

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.