Latch - nop notwendig?

Gast #3066827
Lesenswert?

Hi,

ich arbeite gerade mit einem 74 237 Line Decoder und steuer diesen 
mittels eines AVRs (in Software) an. In meinem Code kommt (so ungefähr) 
Folgendes vor:
1
PORTC &= ~(_BV(PIN));
2
PORTC |= _BV(PIN);

Funktioniert auch wunderbar. Ich meine allerdings irgendwo gelesen zu 
haben, dass man dazwischen ein nop stecken sollte. Da geht es wohl 
weniger ums Timing (der 74HC237 schaltet ja "typischerweise" bei 4.5 V 
und 25 °C in 2 ns), sondern da geht es eher um das Problem, dass der 
Compiler (je nach Einstellung) solche Abschnitte wegoptimieren könnte. 
In dem ein oder anderen Projekt jedenfalls konnte ich schon ein 
zwischengeschobenes nop zu sehen bekommen.

Ich kompiliere hier gerade mit "-Os" und konnte nichts dergleichen 
feststellen.

Leider habe ich da jetzt aber nichts offizielles zu gefunden. Wisst ihr 
da mehr bzw. wie handhabt ihr das?

Vielen Dank!
Persönliche Seite #3066832
Lesenswert?

K. B. schrieb:
> sondern da geht es eher um das Problem, dass der
> Compiler (je nach Einstellung) solche Abschnitte wegoptimieren könnte.

Das sollte er nicht tun, wenn PORTC korrekt deklariert ist. Das ist als 
volatile zu kennzeichnen, und dann darf der Compiler da nichts 
wegoptimieren.

Wenn Du nicht selbstgestrickte Headerdateien für Deinen Compiler 
verwendest, sollte das von demjenigen, der die Definitionen für die 
Ports angelegt hat, schon so erledigt worden sein.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren