Forum: Mikrocontroller und Digitale Elektronik Timeout erzeugen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Can K. (cankar)


Bewertung
-2 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Hmm, ja und?
Irgendeine Zeitbasis und eine Zähler-Variable.

von Joe F. (easylife)


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

von Can K. (cankar)


Bewertung
0 lesenswert
nicht 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)


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

Sollen wir eine De-Chiffriermaschine anwerfen?

von Joe F. (easylife)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.