Hi,
also da stecken noch ein paar Mankos in deinem Code. So darf der Interrupt nicht auf LowLevel definiert werden, sonst werden ständig Interrupts ausgelöst wenn das Signal auf GND liegt. Es soll aber nur ein Interrupt pro Takt aufgerufen werden. Der Fehler erklärt auch warum trotz nicht angeschlossenen Tachosignal werte entstehen. Leider hab ich mich mit Tachosignal noch nicht beschäftigt, aber ich nehme doch an das es pro Umdrehung einfach einen Impuls liefert.
Also solltest du erst mal checken ob die Impulse wirklich kommen. Ich hab dir das Programm ein wenig verändert. Probier es so mal.
Jetzt reagiert der Interrupt auf fallende Pegel. Zudem ist ein Pullup Widerstand eingeschaltet, so das der Port generell auf High gelegt wird.
Wenn alles klappt, müsste jetzt der Wert am Display mit den Umdrehungen ansteigen. Ich hab dir noch ein Wait eingefügt, damit du auch was am Display lesen kannst.
Gruß Frank
Code:
$regfile = "M8def.dat"
$crystal = 8000000
Config Lcd = 20 * 4
Config Lcdbus = 4
Config Lcdpin = Pin
Config pind.2=input
portd.2=1 'PullUp ein
Config Int0 = Falling
Dim Zehler As Long
Dim Ausgabe As Long
On Int0 Int0_int
Enable Int0
Enable Interrupts
Do
Ausgabe = Zehler
Cls
Lcd Ausgabe
Wait 1
Loop
Int0_int:
Incr Zehler
Return
End
Lesezeichen