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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.