Hallo,
Ich habe in meinem Projekt eine Software-Entprellung, die mittels
1 | if( hw.semaDebounce->get_And_Reset_If_Larger(10) )
|
aller 5ms (Zeitbasis sind hier 500µs) eine Tasterauswertung laufen lässt
und am Ende den Entprellzustand zurück gibt.
Seltsam war aber, dass der Code viel schneller als in 5ms Abständen
ausgeführt wurde. Nach einer Weile rumprobieren blieb übrig, dass in der
"return"-Variante anscheinend das Delay übersprungen wird. Denn als ich
die Funktion testweise mal als "void" setzte, lief das alles
erwartungsgemäß.
Anbei hab ich mal den AssemblyCode beider Varianten gegenübergestellt
und dort sieht man, dass die Zeilen 7 bis 9 in der return-Variante
fehlen. Das ist nämlich genau der Funktionsteil der Delay-Funktion.
(Dort habe ich den Delay so gesetzt, dass ich 1-Sekunden printouts
bekomme.)
Was für Ideen habt ihr zu diesem Problem und wie kann ich das beheben?
Danke schon mal im Voraus.
Hannes