Timeout in C

Gast #2851169
Lesenswert?

Hallo Welt,

ich habe ein Xilinx-Board, auf dem zwei Microblaze' über zwei FSL-Busse 
mit einander kommunizieren.

Der eine Microblaze ist dabei der Master und braucht eine 
Timeout-Funktion. Dh. µC-Master pollt µC-Slave an ( "haste was zu 
senden?" ), und wenn µC-Slave nach einer vorbestimmten Zeit nicht 
antwortet, hört µC-Master auf von der FSL zu lesen.

Ja, mache ich jetzt diese Timeout-Funktion?
Auf dem µC-Master läuft ein Echtzeitsystem mit mehreren Threads, 
insofern wäre ein Lösung mittels Interrupt wohl nicht so schön.


Vielen Dank schonmal.
Persönliche Seite #2851191
Lesenswert?

olpo schrieb:
> Auf dem µC-Master läuft ein Echtzeitsystem mit mehreren Threads,
> insofern wäre ein Lösung mittels Interrupt wohl nicht so schön.

Das System wird einen Timerinterrupt haben, und Du wirst die Ticks der 
Systemzeit abfragen können. Zu Beginn Deiner Operation bestimmst Du den 
aktuellen Tick-Stand, und dann überprüfst Du zyklisch, ob das erwartete 
Ereignis eingetreten ist. Ist es das nicht, bestimmst Du den jetzt 
aktuellen Tick-Stand und kannst die Differenz zwischen diesem und dem 
Start-Tick-Stand mit Deinem maximal zulässigen Timeout-Wert vergleichen. 
Ist der noch nicht überschritten, kann sich Dein Thread beispielsweise 
schlafen legen, um dann wieder so einen Überprüfungszyklus 
durchzuführen.

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