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