Forum: Mikrocontroller und Digitale Elektronik Timer in eCos unumgänglich?


von StefL_ (Gast)


Lesenswert?

Hi,

habe derzeit ein Problem mit eCos auf einem ARM946. Grundsätzlich ist 
die Aufgabe nicht schwer. Ich muss eine Variable alle 100µs überprüfen, 
sobald sich diese ändert, das ist ca. alle 4ms der Fall, muss eine 
Schleife in einem Task durchlaufen werden. Dies soll möglichst schnell 
nach Änderung der Variable geschehen, <30-50µs.

Lösung mit Task:
Ich brauche einen Task der alle 100µs ausgeführt wird. Ich habe aber ein 
bereits vorkonfiguriertes eCos das ich verwenden muss, wobei ich die 
Einstellungen die eCos betreffen nicht ändern kann.
Eine Pause von 1ms bekomme ich ohne Probleme mit cyg_thread_delay(1); 
hin.
Das ich bei einer 1 in cyg_thread_delay genau 1 ms Pause bekomme liegt 
an den Parametern: CYGNUM_HAL_RTC_NUMERATOR und 
CYGNUM_HAL_RTC_DENOMINATOR, oder? Aber wie mache ich jetzt eine Pause 
von 100µs???

Lösung mit Timer:
Am Anfang dachte ich mit einem Timer Interrupt wäre es sehr einfach, es 
stellte sich aber etwas anderes heraus. Mein Plan war es alle 100µs 
einen Timer Interrupt auszulösen, darin wird die Variable verglichen. 
Sobald sich diese verändert hat wird von der ISR in eine DSR gesprungen. 
Diese gibt eine Semaphore frei auf die im Task gewartet wird. Nach Plan 
sollte die Schleife im Task dann nach Änderung der Varibale durchlaufen 
werden. Soweit der Plan, bei einem Test stellte sich allerdings heraus 
das es bis zu 150µs, vom Aufruf der DSR bis zum Start der Schleife im 
Task, dauern kann.

Hat hier jemand eine Idee wie man das Problem lösen könnte.

Vielen Dank schon mal.

von StefL_ (Gast)


Lesenswert?

Ist niemand hier der mit eCos arbeitet???

von Paul (Gast)


Lesenswert?

Vielleicht mal eventflags oder condition variables ausprobieren; könnte 
sein das die schneller sind als Semaphoren.

von W.S. (Gast)


Lesenswert?

StefL_ schrieb:
> Ist niemand hier der mit eCos arbeitet???

Fast ein ganzes Jahr um, niemand hat geantwortet und jetzt weckt einer 
diesen Toten auf...

Ich sehe jedes Jahr so ein paar traurige Leute auf der Embedded in 
Nürnberg, die sich um eCos verdient machen wollen, aber auf meine Frage, 
ob man dieses tolle OS denn inzwischen auch für Fujitsus 32 Bitter 
compilieren könne, haben sie bislang stets verneint. Das sagt mir genug: 
Da ist kein Leben drin.

W.S.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.