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







Zitieren

Lesezeichen