- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 7 von 7

Thema: Frage zum SimpleTimer

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Unregistriert
    Gast
    Zitat Zitat von fredyxx Beitrag anzeigen
    Code:
      if (Zeitueberlauf = true)  {
    Ein Problem liegt schon mal in obiger Zeile. Dort sollte keine Zuweisung sondern ein Vergleich stehen.

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    13.01.2014
    Beiträge
    454
    Blog-Einträge
    3
    Genau!
    Code:
      
    if (Zeitueberlauf = true)  {
      timer1.disable(zeitId);      
      delay (1000);
    }
    entspricht:
    Code:
    Zeitueberlauf = true;
    if (Zeitueberlauf)  {
      timer1.disable(zeitId);
      delay (1000);
    }
    endspricht der unbedingten Code-Passage:
    Code:
    timer1.disable(zeitId);
    delay (1000);

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.03.2013
    Beiträge
    242
    Blöder Flüchtigkeitsfehler. Schaut man 10 mal hin und erkennt ihn nicht.

    Aber noch mal die Frage:

    Was bedeuten die Zahlen hinter "zeitId" und wieso wird die plötzlich negativ und bleibt auch so? Das ist auch nach der Korrektur so.

    Gruß

    fredyxx

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    schwer zu beantworten bei der bescheidenen arduino lib doku ... sehr mangelhaft imho

    aber aus dem GitHub Fork herausgelesen
    Code:
    int SimpleTimer::setTimer(long d, timer_callback f, int n) {
        int freeTimer;
    
        freeTimer = findFirstFreeSlot();
        if (freeTimer < 0) {
            return -1;
        }
    
        if (f == NULL) {
            return -1;
        }
    
        delays[freeTimer] = d;
        callbacks[freeTimer] = f;
        maxNumRuns[freeTimer] = n;
        enabled[freeTimer] = true;
        prev_millis[freeTimer] = elapsed();
    
        numTimers++;
    
        return freeTimer;
    }
    würde ich sagen, er teilt dir mit WELCHEN Timer er benutzt hat und mit -1 sagt er dass er keinen freien Timer gefunden hat

    soll dir sagen, dass du dich mit der lib nochmal befassen musst um heraus zu bekommen wie man einen belegten timer auch wieder freigibt oder wiederverwendet ... ich hab damit leider keine ERfahrug aber andere können dir sicher helfen

    Dein COde macht allerdings auch irgendwie keinen richtigen Sinn, egal ob ein Timer "Überläuft" oder nciht, in deiner loop wird imer weider ein neuer Intervall gestartet und das verbrennt dir natürlich deine Reserven, was bezweckst du mit dem Code?!
    Geändert von Ceos (09.06.2016 um 07:41 Uhr)
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.03.2013
    Beiträge
    242
    Dein COde macht allerdings auch irgendwie keinen richtigen Sinn, egal ob ein Timer "Überläuft" oder nciht, in deiner loop wird imer weider ein neuer Intervall gestartet und das verbrennt dir natürlich deine Reserven, was bezweckst du mit dem Code?!
    Da ich in einem umfangreicheren Programm Probleme damit habe, wollte ich hier nur mal testen, ob das UP überhaupt durchlaufen wird.

    Das andere Programm wollte ich aber keinem zumuten, um die Hilfsbereitschaft in diesem Forum nicht überzustrapazieren, zumal es noch logische Fehler enthält, an denen ich noch rumknabbere. Da habe ich die "==" aber richtig benutzt.

    Gruß

    fredyxx

    - - - Aktualisiert - - -

    würde ich sagen, er teilt dir mit WELCHEN Timer er benutzt hat und mit -1 sagt er dass er keinen freien Timer gefunden hat
    Das ist wohl so, denn mit dem Befehl " Serial.println ( timer1.getNumTimers());" wird ab -1 immer 10 (=slots) ausgegeben.

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.03.2013
    Beiträge
    242
    soll dir sagen, dass du dich mit der lib nochmal befassen musst um heraus zu bekommen wie man einen belegten timer auch wieder freigibt oder wiederverwendet
    Habe ich gemacht und festgestellt, dass für meine Zwecke der Befehl:

    zeitId = timer1.setInterval(5000, Zeitablauf1);

    der falsche war. Der Timer wird hier nach jeweils 5 s wieder neu gestartet und das geht wohl nur 10 (10 Slots) mal oder so ähnlich.

    Mit diesem Befehl:

    zeitId = timer1.setTimeout(5000, Zeitablauf1);

    wird der Timer nur ein Mal gestartet und dann nicht mehr; und so wollte ich das auch haben.

    Im Nachhinein eigentlich klar!!

    Gruß

    fredyxx

Ähnliche Themen

  1. Fehler bei der Benutzung von SimpleTimer
    Von fredyxx im Forum Arduino -Plattform
    Antworten: 3
    Letzter Beitrag: 30.05.2016, 11:57
  2. .:Anfänger Frage zu Sensoren:.(Neu! Frage zu meinem 1. Progr
    Von oceans94 im Forum Sensoren / Sensorik
    Antworten: 22
    Letzter Beitrag: 06.05.2008, 06:54

Berechtigungen

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

LiFePO4 Speicher Test