- LiFePO4 Speicher Test         
Ergebnis 1 bis 5 von 5

Thema: variable für 10 sec. nicht zählen

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    09.01.2006
    Ort
    Hamburg
    Alter
    40
    Beiträge
    40

    variable für 10 sec. nicht zählen

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,

    ich habe einen zähler beim atmega128 an den 7 int eingängen fungtionirt auch soweit alles bestens nur mein problem ist nach jedem gezählten impuls soll dieser impuls selbs wenn er noch mal kommt erst nach 10 sec wider gezählt werden baue ich dort wait 10 ein bleibt er ja so lange in der rotine drinne und er arbeitet nicht weietr erst wenn er wider aus der rotine ist gibt es da noch eine andere möglichkeit?

    ich seteh momentan auf dem schlauch.

    denke Nico
    Wer Rechtschreibfehler findet, darf sie behalten.

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    13.05.2005
    Alter
    32
    Beiträge
    601
    hi,

    ich glaube das liegt an dem "wait 10" versuch es lieber mal mit "waitms 10000". Beim meinem Atmega 8 bleibt er mit wait auch sehr lange in der Rutine steken.
    Grüße Furtion

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.02.2005
    Ort
    Hamburg
    Alter
    38
    Beiträge
    4.255
    nen Fall für den Timer...
    Wenn du ein Signal empfangen hast, setzt du ne Variable dafür als Zeichen für "gesperrt" und initialisierst nen Zähler. Im Timer-Interrupt (zb alle 1/10sec) zählst du dann hoch, und wenn ein Kanal bei 10sec angekommen ist, wird er wieder freigeschaltet...

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    09.01.2006
    Ort
    Hamburg
    Alter
    40
    Beiträge
    40
    das mit dem timer hört sich gut an mein gedanke war nur sobalt ich dann im Timer-Interrupt bin können doch keine anderen interupts ausgelöst werden oder verstehe ich da was falsch. soll er alle 1/10 sec in die rotine springen?

    gruß nico
    Wer Rechtschreibfehler findet, darf sie behalten.

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    27.03.2004
    Beiträge
    185
    In einer ISR sollten keine zeitaufwendigen Befehle stehen! Ich würde in der ISR nur ein Flag (Set Zaehlimpuls) setzen und im Hauptprogramm sinngemäß schreiben:
    Code:
    'Pseudocode
    DIM Zaehler as Word
    '...
    Do 
     If Zaehlimpuls=1 Then
      INCR Zaehler 
      Wait 10
      Reset Zaehlimpuls 'jetzt werden alle Ereignisse der letzten 10sec gelöscht
     END IF
    Loop
    Falls Du im Hauptprogramm nicht 10sec stehen bleiben willst, setze einen Timer...

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad