|
 |
 |
 |
|
|
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: Jörg Schüler-Maroldt
Datum: Mi, 20.09.2006 12:46:50
In-reply-to:
<002801c6db48$e25976c0$1401a8c0@user08>
Hallo Timo,
du hast leider recht, man muss die Funktion mit "cli" "sei" verriegeln.
uint32 timer_get_ms_ticks(void)
{
uint32 tick;
asm volatile("cli"); // Disabel Interrupt
tick=time_tick;
asm volatile("sei"); // Enable Interrupt
return tick;
}
In "delay.h" ist delay() falsch deklariert es muss
void delay(uint16 ms);
heißen
in "delay.c" fehlt
#include "delay.h"
deshalb ist der Fehler nicht aufgefallen.
Frage an AVR-Asm Kenner:
Sind im Timerinterrupt die Interupts gesperrt bis "reti" oder muss man das
selbst machen ?
Mein ctbot "muckt" aber noch mit der Funktion und ich melde mich wenn
es bei mir Funktioniert.
-----Ursprüngliche Nachricht-----
Von: ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx
[mailto:ct-bot-entwickler-bounces@xxxxxxxxxxxxxxxxx]Im Auftrag von Timo
Sandmann
Gesendet: Montag, 18. September 2006 19:36
An: 'Entwicklung rund um den c't-bot'
Betreff: RE: [ct-bot]Patch für Fehler in delay-Funktion
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
_______________________________________________
ct-bot-entwickler Mailingliste
ct-bot-entwickler@xxxxxxxxxxxxxxxxx
http://www.heise.de/bin/newsletter/listinfo/ct-bot-entwickler
|
|
|