SetBit bei IO-Register nicht atomar, SBI wäre wünschenswert

Thomas.AC
Benutzer
Avatar
Geschlecht: keine Angabe
Alter: 45
Beiträge: 308
Dabei seit: 07 / 2013
Betreff:

SetBit bei IO-Register nicht atomar, SBI wäre wünschenswert

 · 
Gepostet: 19.11.2015 - 16:40 Uhr  ·  #1
Hallo Forum,

wäre es nicht wünschenswert, wenn SetBit auf IO-Register atomar zugreift, wie es bei incl und excl der Fall ist?

Gruß

Thomas.AC
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 26
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: SetBit bei IO-Register nicht atomar, SBI wäre wünschenswert

 · 
Gepostet: 19.11.2015 - 18:15 Uhr  ·  #2
Hallo Thomas,

SetBit ist die eierlegende Wollmilchsau Version der Bit Operationen.
Im Gegensatz zu incl/excl etc. lässt diese Funktion auch Variable
als bit nummer zu. Daher gehts nicht anderst.

rolf
Thomas.AC
Benutzer
Avatar
Geschlecht: keine Angabe
Alter: 45
Beiträge: 308
Dabei seit: 07 / 2013
Betreff:

Re: SetBit bei IO-Register nicht atomar, SBI wäre wünschenswert

 · 
Gepostet: 19.11.2015 - 19:28 Uhr  ·  #3
Danke für deine Antwort.

Wir hatten folgendes Problem.

Schaltet man mit setBit eine LED, die an einem Port mit Rs485 Umschaltung angeschlossen ist, dann bleibt der drive enable pin irgendwann auf high. Und zwar genau dann, wenn der tx complete während der Ausführung von setBit auftritt. Deshalb müssen wir entweder den Interrupt sperren oder incl benutzen.

Gruß
rh
Administrator
Avatar
Geschlecht:
Herkunft: Germany
Alter: 26
Homepage: e-lab.de
Beiträge: 5558
Dabei seit: 03 / 2002
Betreff:

Re: SetBit bei IO-Register nicht atomar, SBI wäre wünschenswert

 · 
Gepostet: 28.11.2015 - 20:44 Uhr  ·  #4
Hallo Thomas,

oder
PortF.5:= true; // false
geht auch.

rolf
Harald_K
 
Avatar
 
Betreff:

Re: SetBit bei IO-Register nicht atomar, SBI wäre wünschenswert

 · 
Gepostet: 29.11.2015 - 11:20 Uhr  ·  #5
Dieses Problem sollte man übrigens immer mal im Hinterkopf haben, wenn man im Interrupt was tun will ...

gibt sicherlich auch komische Effekte, wenn man im INT ne word-Variable benutzt, die man im Hauptprogramm schreibt.
Der AVR macht dann ja 2 8bit-Zugriffe, und wenn da der INT reinfunkt liest du das halbe word mit dem alten und das halbe mit dem neuen Inhalt ....
sowas kann kanz seltsame Reaktionen geben.
AVRfan
Benutzer
Avatar
Geschlecht: keine Angabe
Alter: 70
Beiträge: 16
Dabei seit: 11 / 2009
Betreff:

Re: SetBit bei IO-Register nicht atomar, SBI wäre wünschenswert

 · 
Gepostet: 29.11.2015 - 15:12 Uhr  ·  #6
@Harald,

Words etc. können gegen Interrupt Zugriffe mit locked geschützt werden mit:
Var i : integer, locked; {Interrupt protected}
Harald_K
 
Avatar
 
Betreff:

Re: SetBit bei IO-Register nicht atomar, SBI wäre wünschenswert

 · 
Gepostet: 29.11.2015 - 17:34 Uhr  ·  #7
aha .. danke für die Info.
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 8 · Cache Hits: 14   125   139 · Page-Gen-Time: 0.018778s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI