Hi,

ich habe noch mal weiterversucht und ein Display angehängt was mir direkt den Wert von compare1a ausgibt.
Ich habe den Eingang mit einer sich alle 100ms verändernden Frequenz beaufschlagt, und konnte beobachten, dass sich der compare1a-Wert auch ganz brav alle 100ms mitverändert (variiert zwischen 10 und 45)

@ Stefan: ich habe meine 5 sekunden schätzung noch mal genau ermittelt, und folgendes ergebnis bekommen:

4 sekunden Frequenzausgabe, 18 sekunden low signal, 2,5 sekunden Frequenzausgabe, 20 sekunden hi signal, 40 sekunden Frequenzausgabe, 14 sekunden hi signal.... usw.
Es lässt sich also absolut keine regelmäßigkeit erkennen, sowohl die Unterbrechungsdauer scheint zufällig, als auch das Unterbrechungssignal (hi oder lo). (P.S.: Es liegt definitiv kein Wackelkontakt vor)

Watchdog ist nicht an. Overflow einer Variable sollte es auch nicht sein. Ob ich die Timer richtig eingestellt habe weiß ich nicht (siehe code). Globale Variablen in den Interrupts mit volatile deklarieren? Ich weiß leider nicht was das bedeutet...

Code:
 $regfile = "m8def.dat"
 $crystal = 1000000                                         'Quarz: 1,000 MHz Intern


  '---------------------------------------------------------

  Tccr1a = &B01000000
  Tccr1b = &B00001100




Dim Pulsbreite As Long

Dim Faktor As Word







Dim ___lcdno As Bit
Config Lcdpin = Pin , E = Portc.3 , E2 = Portd.7 , Rs = Portc.2 , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5
Config Lcd = 20 * 4a , Chipset = Ks077
Config Lcdbus = 4
Config Pind.6 = Output                                      'RW=0
Portd.6 = 0
Config Pind.7 = Output
Portd.7 = 1                                                 'LCD Licht ein
Initlcd
Cursor Off
Cls









Config Pinc.0 = Input
Config Pinb.1 = Output
Config Pinb.0 = Input

Portb.0 = 1








Enable Interrupts



Do


Pulsein Pulsbreite , Pinb , 0 , 0







Pulsbreite = Pulsbreite * 255                               'Umrechnungsfaktor 2,55
Pulsbreite = Pulsbreite / 400
Pulsbreite = Pulsbreite * 512                               

Faktor = 490

Pulsbreite = Pulsbreite / Faktor





If Pulsbreite = 0 Then
Pulsbreite = 65535
End If


Compare1a = Pulsbreite










Waitms 100

Locate 1 , 3
lcd "     "
Locate 1 , 1
Lcd "c=" ; Compare1a


Loop




End