Sinn des Ganzen ist die Stromersparnis. Bei CMOS setzt sich der Stromverbrauch aus den Leckströmen und einem Strom, welcher direkt proportional zur Taktfrequenz ist, zusammen. Bei Batteriebetrieb zählt da jedes mA! Teilweise wird aber nicht nur der Takt, sondern auch die Betriebsspannung ganzer Schaltungsteile abgeschaltet, das reduziert dann auch noch die Leckströme.
Es ist egal welche Variante du nimmst.
Write-Only-Register lesen sich, in diesem Fall, immer als 0, egal auf welche Werte das Register gesetzt ist.
Wenn du jetzt mehrere Bist verwalten willst, musst du ein Schatten-Register führen.
Also eine statische Variable, welch du wie das Register behandelst. Da kannst du dann einzelne Bis setzen oder löschen.
Wenn du mit dem Modifizieren der Bits fertig bist, schreibst du den Wert der Variablen ins Register.
WO-Register verwendet der Hersteller für Register welche in typischen Anwendungen nur bei der Initialisierung der Anwendung beschrieben werden müssen. Das spart Einiges an Transistoren und Platz auf dem Chip. Bei untypischen Anwendungen muss man sich dann halt mit dem Schattenregister behelfen.
Das ist auch der Grund für die HAL-Bibliotheken. Da werden, wo nötig, Schattenregister geführt und der Programmierer muss keine Ahnung von dieser Hardware-Eigenschaft haben. Über den HAL sind alle Register auch lesbar.
Allerdings kostet dies Programmspeicher und Laufzeit. Bei zeitkritischen Aufgaben, weiss man aber nie, was der HAL so alles macht und ganz lustig kann es werden, wenn der HAL ein Update erfahren hat.
MfG Peter(TOO)
Lesezeichen