c't

c't-Projekte - Mailinglisten


[Voriger (Datum)] [Nächster (Datum)] [Voriger (Thread)] [Nächster (Thread)]
[Nach Datum][Nach Thread]

RE: [ct-bot]Patch für Fehler in delay-Funktion

Absender: Timo Sandmann
Datum: Mo, 18.09.2006 19:35:49
In-reply-to: <IGENLJCPGFNDONOPHHAOAEIPCHAA.ctbot@xxxxxxxxxxxxxxxxxxx>


Jörg Schüler-Maroldt schrieb:

> Hallo,
> 
> die delay-Funktion im ct-Bot funktioniert so nicht sauber.
> Der Fehler liegt in der timer.c / timer.h Der Aufruf von 
> timer_get_ms() und timer_get_s() nacheinander kann immer 
> durch einen Interrupt unterbrochen werden und beim Überlauf 
> von time_ms Differenzen von einer Sekunde hervorrufen.

Hallo,

das Problem leuchtet mir schon ein, aber die Lösung nicht so ganz:

> ...
> Der Zugriff auf eine 16-Bit Variable (time_ms_tick) kann 
> nicht unterbrochen werden, da es sich nur um eine 
> Assembler-Anweisung handelt.

Wird uint t1=time_ms_tick; nicht zu _zwei_ LDS-Anweisungen in Assembler?
Dann könnten doch auch die wieder unterbrochen werden und das ganze ändert
nichts, oder sehe ich das falsch? 

Viele Grüße,
Timo