So also ich habe das ganze jetzt mal mit dem Debounce befehl gemacht bin mir aber immernoch nicht sicher ob das so hinhaut. Ausprobieren kann ichs momentan nicht weil ich meinen MC geschrottet habe... (Programmer war im eimer). Kann mir eventuell noch mal jemand auf die Sprünge helfen ob das so geht und falls nicht was ich für fehler gemacht habe? Ich bin mir nicht sicher ob ich nicht in der SUB "Eingangerkannt" bereits wieder prüfen muss ob der Eingang wieder auf high steht.

Hier mein Code:

Code:
$regfile = "2313def.dat"                     'ATtiny2313 Definitionen laden
$framesize = 32
$swstack = 32
$hwstack = 32
$crystal = 8000000                           '8MHZ Systemtakt einstellen
$baud = 9600

Config Portb.0 = Output                     'PortB.0 ist mein Ausgang an dem die LED hängt

Config Pind.5 = Input                       'PIND.5 ist mein Signaleingang
Portd.5 = 1                                  'Internen Pullup Widerstand aktivieren

Config Timer1 = Timer , Prescale = 256     'Timer einstellen
Enable Timer1                               'Timer starten
On Timer1 Isr_von_timer1                    'Sprungmarke bei Overflow einstellen
Enable Interrupts                          'Interrupts aktivieren
Timer1 = 34285                              'Timer auf 34285 einstellen damit eine Sekunde realisiert ist


Dim Signale As Integer                     'Meine Zählervariable in der die Signale pro Sekunde gezählt werden
Signale = 0                                  ' Signale erst mal auf 0 setzen

Do

  Debounce Pind.5 , 0 , Eingangerkannt      'Überprüfen ob PIND.5 auf low gezogen wurde
  Debounce Pind.5 , 1 , Leer                'Überprüfen ob PIND.5 wieder auf high steht um doppeltzählen zu vermeiden

Loop

End



Eingangerkannt:
Incr Signale                                  'Die Sinale Variable wird um 1 erhöht

Return


Leer:
                                               'Hier passiert nichts. Nur zum Sicherstellen das nicht doppelt gezählt wird
Return



Isr_von_timer1:

If Signale > 3 Then                           'Überprüfen ob mehr als 3 Signale in der Sekunde angekommen sind
Portb.0 = 1                                    'Falls ja wird PORTB.0 auf High gesetzt (LED geht an)
Else
Portb.0 = 0                                    'Falls nicht wird PORTB.0 auf Low gesetzt (LED geht aus bzw. bleibt aus)
End If
Wait 1                                         'Eine Sekunde Pause damit man das Leuchten der LED sehen kann
Signale = 0                                    'Zählervariable wieder auf 0 setzen um eine neue Messung zu veranlassen
Timer1 = 34285                                 'Timer wieder auf 34285 vorstellen um wieder eine Sekunde zu messen


Return