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.
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.
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
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...
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.
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:
Falls Du im Hauptprogramm nicht 10sec stehen bleiben willst, setze einen Timer...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
Lesezeichen