Forum: PC-Programmierung [Raspberry Pi] Wie Signaldauer ohne blockieren verlängern?


von 16-Bit Frickler (Gast)


Lesenswert?

Wenn ein Signal auf der seriellen Leitung der Steckerleiste des Raspi 
gesendet wird und ich dies sehen möchte, dann schalte ich einfach 
während des Sendens der Daten über einen GPIO Port eine LED ein. Bei 
kurzen Aktivitäten sieht man das Aufleuchten der LED aber nur sehr 
schlecht. Bei einem gewöhnlichen uC würde ich in einer ISR die 
Einschaltzeit der LED verlängern - denn ein einfaches delay() im 
Hauptprogramm wäre eine schlechte Lösung da dies den Programmablauf 
anhält.
Wie kann man das auf dem Raspi realisieren? Bietet time.h hierfür eine 
Lösung (Timer im Hintergrund starten... ) an?
Ich habe keine Erfahrung wie man eine ISR auf nem Raspi realisiert oder 
ob das auf so einem System überhaupt einen Sinn macht.

von asdfasd (Gast)


Lesenswert?

Warum machst du nicht einfach einen printf auf die Console?

Das, was einem Interrupt am nächsten kommt, sind Signals. Du kannst z.B. 
mittels "signal/sigaction" und "alarm/setitimer" so ein Signal nach 
einer angegebenen Zeit auslösen. Signal-Handler haben allerdings so 
einige Stolperfallen (insbesondere welche Funktionen dort überhaupt nur 
benutzt werden dürfen), so dass ich das einem Anfänger nicht unbedingt 
empfehlen würde. Die einfachste Debug-Methode unter Unix/Linux ist mMn 
wirklich ein popeliges printf.

von Stefan S. (chiefeinherjar)


Lesenswert?

Warum nicht ganz klassisch ein Monoflop - beispielsweise mit einem 
NE555???

von A. S. (Gast)


Lesenswert?

High efficient LED nehmen, maximaler Strom. Dann siehst Du jedes Byte.

von 16-Bit Frickler (Gast)


Lesenswert?

Nö, ne Hardware-Lösung kommt nicht infrage mir geht's bei dem Projekt 
vordergründig um den Lernaspekt.

>Warum machst du nicht einfach einen printf auf die Console?
Um quasi Zeit zu erzeugen?
Weiß nich...

Ich bin kein besonderer Freund von Linux, wohl aber vom Programmieren in 
C. Die Lösung mittels Signal-Handler werde ich mit mal anschauen.

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.