Timeout erzeugen

OP #4893494
Lesenswert?

Hi zusammen,

ich habe folgendes Problem und würde mich über Hilfe sehr freuen:

Ich möchte einen Timer in mein C Programm einbauen, um zu überprüfen, ob 
ein Gerät angeschlossen ist, oder nicht. Wenn sich die Zeitspanne 
zwischen den Übertragungen vergrößert, soll eine Gegenmaßnahme in Form 
eines Codes (M,001,000,001,E) ausgeführt werden. Wenn die Zeitspanne 
gleich bleibt, soll ein anderer Code (dieser variiert) ausgeführt 
werden.

Ich hoffe, dass Ihr mir helfen könnt :)

LG
Cankar
OP #4893888
Lesenswert?

Ich habe aber leider keine Ahnung, wie ich einen Timeout erzeugen kann.
Es tut mir leid, wenn das nicht so deutlich geworden ist, aber zu dem 
Zeitpunkt wo ich den Artikel geschrieben habe, habe ich mich anscheinend 
schon zu lange mit dem Thema befasst. :D
Deshalb habe ich mich nach außen hin wahrscheinlich sehr undeutlich 
ausgedrückt, obwohl es in meinem Kopf klar schien.
#4893904
Lesenswert?

Can K. schrieb:
> Ich habe aber leider keine Ahnung, wie ich einen Timeout erzeugen kann.

Du benötigst eine (Interrupt-)Funktion, die in regelmäßigen Abständen 
aufgerufen wird.
Bei jeder deiner Übertragungen zum angeschlossenen Gerät merkst du dir 
einen Zeitstempel.
In der Interrupt-Funktion guckst du dir dann die aktuelle Zeit an, und 
vergleichst sie mit dem Zeitstempel der letzten Übertragung.
Wenn die Zeitdifferenz über der von dir festgelegten Timeout-Schwelle 
ist, startest du deine "Gegenmaßnahme".

Ähnlich wie: täglich in den Kühlschrank gucken, aktuelles Datum mit 
Ablaufdatum der Milch vergleichen, wenn Zeitdifferenz zu groß -> 
Timeout.
Gast #4893940
Lesenswert?

Wenn du ein größeres C-Projekt hast und nichts für die
Zeiterfassung vorgesehen hast, solltest du das schleunigst
ändern.

Egal, ob es ein µC, oder ein µP ist, gibt es bestimmt einen
Timer im 1...16 ms Takt, mit dem auch Tasten validiert werden,
oder Abläufe getaktet werden, oder...

Wenn du dem mit ein paar Speicherstellen etwas Langzeit-
Auflösung (Überläufe zählen) gönnst, kannst du damit ohne
viel Aufwand Sekunden, Minuten, Monate,... identifizieren.
Einen Monat löst man mit 4 Byte auf eine ms auf!

Diese 4 Byte (oder 2 für einige Sekunden), hängst du als
Zeitstempel an jeden übertragenen Wert an und vergleichst
beim neuen Wert die Differenz der Zeitstempel.

Differenz > TimeOut: Tu was....

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