c't Projekte - c't-Bot und c't-Sim -
Mailinglisten
[Voriger (Datum)]
[Nächster (Datum)]
[Voriger (Thread)]
[Nächster (Thread)]
[Nach Datum][Nach Thread]
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