Forum: Mikrocontroller und Digitale Elektronik Seltsame Registereinstellung


von Philipp (Gast)


Angehängte Dateien:

Lesenswert?

Hallo!

Ich habe hier register, dass ich gerne nutzen möchte (siehe Anhang). Was 
ich nicht verstehe ist das Setzen der Bits, um eine bestimmte 
Konfiguration zu ersetzen. Ist das eine Art Sicherung?
Betrifft read, als auch write.

Vielen Dank und Grüße!

von jl (Gast)


Lesenswert?

Ist eine etwas seltsame (aber einfache) Umsetzung in der Hardwarelogic. 
Sieht so aus, als ob die bits im oberen Byte zum setzen des Flipflops 
(Irq_enable register) und im unteren zum zurücksetzen genutzt wird.

Read betrifft es übrigens nicht, da sind nur die unteren 8bit benutzt.

von yalu (Gast)


Lesenswert?

Der Vorteil der verwendeten Schreiblogik liegt darin, dass man mit einem
einzigen Schreibzugriff jedes der sechs Bits wahlweise setzen, löschen
oder beibehalten kann.

Bei einem "gewöhnlichen" I/O-Register müsste man erst den Inhalt lesen,
mit einer UND-Operation die zu löschenden Bits löschen, mit einer
ODER-Operation die zu setzenden Bits setzen und schließlich das Ergebnis
wieder ins Register schreiben.

von Philipp (Gast)


Lesenswert?

Ah, interessant!

Mir erschließt sich jedoch noch nicht der eigentliche Grund oder Zweck 
dieses Verfahrens. Dient es dazu, bestimmte Zustände z.B. bei Interrups 
zu vermeiden?

Vielen Dank und Grüße

von yalu (Gast)


Lesenswert?

Dein letzter Post ist zwar schon ein paar Tage her, aber vielleicht ist
die Antwort immer noch von Nutzen:

> Mir erschließt sich jedoch noch nicht der eigentliche Grund oder Zweck
> dieses Verfahrens.

Diese spezielle Schreiblogik dient wohl in erster Linie der Ausführungs-
geschwindigkeit. Man ersetzt damit bis zu vier Befehle durch einen oder
zwei. Dabei wird zusätzlich Programmspeicher eingespart.

> Dient es dazu, bestimmte Zustände z.B. bei Interrups zu vermeiden?

Als angenehmer Nebeneffekt sind die Bitmanipulationen auf Registern
atomar, können also nicht durch einen Interrupt unterbrochen werden.
Wenn sowhl im Interrupthandler als auch im Hauptprogramm Bits desselben
Registers geändert werden, müssen somit keine besonderen Vorkehrungen
zur Kollisionsvermeidung getroffen werden, was die Reaktionszeit auf
Interrupts verringert und etwas zusätzliche Rechenzeit und Programmgröße
einspart.

von Jürgen (Gast)


Lesenswert?

@yalu:

Ich würde da Haupt- und Nebeneffekt andersherum sehen.

Und seltsam ist das überhaupt nicht.
I/O-Register sollte man nicht als normalen Speicher ansehen,
die Zugriffe sind Kommandos an die Hardware, etwas zu tun.

Jürgen

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.