Forum: Mikrocontroller und Digitale Elektronik Compare Match Mode und zurückswitchen in normalen Mode


von Martin (Gast)


Lesenswert?

Guten Abend,

mich interessiert eine Info, welche ich dem Datenblatt nicht entnehmen 
kann.
Nehmen wir als Beispiel einen Atmega8 Prozessor.
Dort ist am Port PB1 der OC1A Pin, der von einem Compare Match bei 
entsprechender Configuration low oder high gesetzt werden kann (s. S96):

COM1A1 | COM1A0 (0|0) normale Port Funktionalität
COM1A1 | COM1A0 (0|1) toggle on compare match
COM1A1 | COM1A0 (1|0) low on compare match
COM1A1 | COM1A0 (1|1) high on compare match

Ergänzend steht dort auch:
"The COM1A1:0 and COM1B1:0 control the Output Compare Pins (OC1A and 
OC1B respectively) behavior. If one or both of the COM1A1:0 bits are 
written to one, the OC1A output
overrides the normal port functionality of the I/O pin it is connected 
to."

Angenommen die beiden obigen bit COM1A1 | COM1A0 sind noch auf 0, d.h. 
normale Port-Funktion. Den Port setze ich dann als Ausgang (DDB1 auf 1) 
und den Port anschließend auf high PB1 = 1.

Nun setzt mein Programm im Verlauf die Bits COM1A1 | COM1A0 (0|1), 
sprich togglen. Das Programm toggelt alles ein paar mal, bis das 
Programm wieder COM1A0 löscht und damit wieder die normale Port 
Funktionalität aktiviert. Das letzte toggeln soll den Port aber auf low 
(nehmen wir dies einfach einmal an).

Die Frage ist, welchen Zustand hat der Port nun? Ist er weiterhin low 
wie nach dem toggeln oder durch das vorherige setzen des Ports auf high 
(als er noch nicht durch das Compare Match kontrolliert wurde, sondern 
als normale Port Funktion gearbeitet hat) nun wieder high?

von Stefan E. (sternst)


Lesenswert?

Die Zustände zu "Normale Port Funktion" und "Timer Output" merkt sich 
der Controller getrennt. Wenn der Output sich also durch den Timer 
ändert, beeinflusst das nicht den Inhalt vom PORT-Register.

von STK500-Besitzer (Gast)


Lesenswert?

Martin schrieb:
> Die Frage ist, welchen Zustand hat der Port nun? Ist er weiterhin low
> wie nach dem toggeln oder durch das vorherige setzen des Ports auf high
> (als er noch nicht durch das Compare Match kontrolliert wurde, sondern
> als normale Port Funktion gearbeitet hat) nun wieder high?

Die Frage sollte das Schaltbild der I/O-Ports beantworten.
Seite 52 bzw. 56 im Datenblatt.

Die alternate functions sind dem Ausgangs-FlipFlop nachgeschaltet.
Demnach sollte der Portpin den ursprünglichenn Zustand einnehmen, sobald 
die COM-Geschichte abgestellt wurde.

von Martin (Gast)


Lesenswert?

Danke euch beiden, das hat mir geholfen und meine Frage beantwortet.

von STK500-Besitzer (Gast)


Lesenswert?

Rechnung kommt ;)

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.