uCOS-III Semaphore

Gast #4556313
Lesenswert?
• ▲
▼
Hallo !

Ich habe unter Arm Cortex M4 einen Semaphor in uCOS-III.


Wenn ich 2x hintereinander (im gleichen Task) einen OSSemPend() 
durchführe, also
1
timeout = 100; /* 0.1 s */
2

3
OSSemPend(rtos_sem_p, timeout, OS_OPT_PEND_BLOCKING, NULL, &err);
4
...
5
OSSemPend(rtos_sem_p, timeout, OS_OPT_PEND_BLOCKING, NULL, &err);
6
...

und nirgendwo ein OSSemPost() abgesetzt wird, würde ich mir erwarten, 
dass der zweite Aufruf in das Timeout läuft. Er blockiert aber, egal was 
ich für timeout verwende. Übrigens: OS_OPT_PEND_BLOCKING heisst laut 
Manual nur, dass der Semaphor erst einmal auf das timeout wartet, bevor 
er signalisiert, dass das Pend schiefgegangen ist.

Ich wollte eigentlich bloß testen, ob der Timeout Mechanismus 
funktioniert, sehe nun aber, dass es hier scheinbar nicht so 
funktioniert, wie ich es mir vorstellte.


Woran kann das liegen?

Danke !
(Firma: fritzler-avr.de) #4556649
Lesenswert?
• ▲
▼
Da ist jetzt die Frage wie denn das System seine Clock Ticks bekommt 
oder ob überhaupt.
Der Timeout kommt ja bei deinem Beispiel erst nach 100 Clock Ticks.
Diese müssen dem RTOS mitgeteilt werden, vllt ist das einfach zu lang 
per Tick oder die kommen nicht an.
Wenn das Delay auch nicht geht, dann weist das doch sehr stark auf das 
clock Tick Problem hin.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren