Forum: Mikrocontroller und Digitale Elektronik Timeout in C


von olpo (Gast)


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.

von Rufus Τ. F. (rufus) Benutzerseite


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.

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.