Forum: Mikrocontroller und Digitale Elektronik Timeout erzeugen


von Can K. (cankar)


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

: Bearbeitet durch User
von Rudolph R. (rudolph)


Lesenswert?

Hmm, ja und?
Irgendeine Zeitbasis und eine Zähler-Variable.

von Joe F. (easylife)


Lesenswert?

Hallo Herr Doktor,
mein Finger. Aber nicht, wenn der Fuß.

von Can K. (cankar)


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.

von Arduinoquäler (Gast)


Lesenswert?

Can K. schrieb:
> in Form eines Codes (M,001,000,001,E)

Sollen wir eine De-Chiffriermaschine anwerfen?

von Joe F. (easylife)


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.

: Bearbeitet durch User
von Jakob (Gast)


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....

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.