- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 7 von 7

Thema: __ Zeitschleife ohne Programmunterbrechung (Aller NeuAnfang ist schwer)

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    07.06.2019
    Beiträge
    147
    DANKE für deine Klarheit Crypi

    Millis() läuft direkt ab Prg.Start, "StartZeit" wird später im Programm gesetzt, daher die Abweichung.
    Das millis() direkt ab Prg.Start läuft, habe ich verstanden!
    Warum aber "StartZeit" eine "0" ausgibt obwohl 1 Zeile darüber "StartZeit" die akt. millis() einliest (=2451ms) ist mir immer noch schleierhaft.

    - - - Aktualisiert - - -

    Ich habe "static" einmal gelöscht, seitdem ist millis() und "StartZeit" gleich.
    Sieht so aus, als wenn die static-Variable bei Programmstart die millis() einliest...
    __________________________________________________ _
    | Sprache: C | Teensy 3.2 | Arduino 2.x | Status: EwigerAnfaenger |

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.209
    Wenn du zeitgesteuerte Abläufe haben willst, ohne den Controller durch delay()'s zu blockieren, schau dir einfach mal das mitgelieferte Beispiel "BlinkWithoutDelay" ganz genau an.
    Wenn man das ein bisschen umstrickt, kann man damit prima Timer bauen, die ohne jegliches delay() funktionieren.
    Ich packe da regelmässig nen Sekundentick (oder auch kürzer, je nach Intervall, dass ich benötige) rein, den ich dann für alles Mögliche benutzen kann. Damit kann man problemlos auch mehrere unterschiedliche Zeitintervalle realisieren.
    Da der Aufruf der Timer-Funktion nur einige Mikrosekunden dauert, merkt man den im normalen Programmablauf gar nicht.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.214
    Ich würde auch das Konzept von Rabenauge anwenden.
    Ich lass da immer im Timer Interrupt einen oder mehrere Variablen herunterzählen.
    Wenn dann eine auf 0 ist wird ein Flag gesetzt das dann in der Hauptschleife abgefragt wird.
    Im Hauptprogramm wird dann die Aktion ausgelöst und bei Bedarf das Flag wieder gelöscht und, für erneutes Ausführen, die Variable wieder neu gesetzt.
    Dadurch wird das Hauptprogamm nur für die Timer Interupts unterbrochen und man kann in die Interrupt Routine mehrere Zeitintervalle einbauen.
    Bei 100ms Timer Intervall ein Counter mit 10 ergibt eine Sekunde bei 100 wären es 10 Sekunden.

Ähnliche Themen

  1. Aller Anfang ist schwer :-)
    Von rauf81 im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 24.11.2011, 07:10
  2. Aller Anfang ist schwer
    Von Jägermeister im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 3
    Letzter Beitrag: 29.08.2009, 23:28
  3. Aller Anfang ist schwer
    Von priescen im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 27.08.2007, 18:52
  4. Aller anfang ist schwer...
    Von Gregor1984 im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 02.09.2006, 13:50
  5. Aller Anfang ist schwer
    Von BIG Muzzy im Forum Microcontroller allgemeine Fragen/Andere Microcontroller
    Antworten: 17
    Letzter Beitrag: 04.05.2005, 08:33

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress