Forum: Mikrocontroller und Digitale Elektronik ATtiny261: COM1Ax Shadow Bits


von Benedikt K. (benedikt)


Lesenswert?

Kann mir jemand sagen, welchen Zweck die COM1A0S und COM1A1S Bits beim 
ATtiny261/461/861 haben ?
Das Datenblatt sagt dazu nur folgendes aus:
"These bits are the shadow bits of the COM1A1 and COM1A0 bits"

Was heißt das jetzt ?
- Die Bits sind identisch (beschreibt man also eines, ändert sich das 
andere)
- COM1AxS ist eine Kopie von COM1Ax
- COM1Ax ist eine Kopie von COM1AxS

von attinyx61 (Gast)


Lesenswert?

Hi
Ich hab das gerade bei meinem getestet.
Es sieht so aus, als ob die bits identisch sind.
D.h. es ändern sich immer beide.

von Michael L. (Gast)


Lesenswert?

Hi,
shadow register sind dazu da um einen zukünftigen Registerzustand 
vorzuladen um bei Eintreten eines Ereignisses den neuen Wert nur noch zu 
übernehmen (spart Zeit).

z.B. bei der Kommutierung von BLDC Motoren. Das Drehfeld wird hier in 6 
Schritten erzeugt. Man lädt den nächsten Schritt (Schaltmuster der 6 
Transisoren) vor und überträgt die Daten, wenn der Anker an der 
richtigen Stelle ist...

Musst jetzt nur noch selber rausfinden, was passieren muss, um den 
Inhalt der Shadowregister in das Zielregister (COM1A0S->COM1A0) zu 
übertragen.

Wusste garnicht, dass die AVRs sowas auch haben...interessant ;)

Grüße,
Michael

von Hagen R. (hagen)


Lesenswert?

umgedreht müsste es sein. Das Shadow Register wird zu einem bestimmten 
Zeitpunkt aus den Programmierregister übertragen. D.h. wir setzten als 
Programmierer das COM1Axx Register und später wird dieser Wert zum 
korrekten Zeitpunkt übernommen. Damit ist das Shadow Register das 
Register das tatsächlich die Hardware beeinflusst.
Ich schätze das dieses Verfahren nur dann eine Wirkung zeigt wenn man 
den PWM6 Modus der MCU aktiviert hat, da diese Bits die PWM Waveform 
beeinflussen sollte, also Kommutierung im BLDC.

Zumindestens so habe ich's mir an Hand der Datenblätter zusammengereimt.

Gruß Hagen

von Peter D. (peda)


Lesenswert?

Benedikt K. wrote:

> - COM1AxS ist eine Kopie von COM1Ax
> - COM1Ax ist eine Kopie von COM1AxS

Beides.
Es sind 2 verschiedene Adressen für das selbe Bit.
Welches Sinn das hier beim ATtiny261 haben soll, steht allerdings 
nirgends.


Peter

von Michael L. (Gast)


Lesenswert?

Jo, hier ists wohl andersrum. Ich kenns von Infineon und ST, da kann man 
nur auf die Shadowregister zugreifen.

Wann allerdings der Übertrag erfolgt find ich nicht. Ich tipp mal bei 
einem Compare-event...

von attinyx61 (Gast)


Lesenswert?

attinyx61 wrote:
> Hi
> Ich hab das gerade bei meinem getestet.
> Es sieht so aus, als ob die bits identisch sind.
> D.h. es ändern sich immer beide.

Bei meinem Versuch habe ich sowas ähnliches wie hier verwendet
und das if war true egal ob ich zuerst TCCR1A oder TCCR1C beschrieben 
habe.
1
TCCR1A = ( 1 << COM1A1 ) | ( 1 << COM1A0 );
2
TCCR1C = ( 1 << COM1A1S ) | ( 0 << COM1A0S );
3
4
if ( ( TCCR1A & 0xc0 ) == ( TCCR1C & 0xc0 ) )

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.