Zeig doch einfach mal deinen Auswerte Quellcode.
Zeig doch einfach mal deinen Auswerte Quellcode.
Hier mein kleines Programm
Sub main()
'Initialisierung der Mini-Station
MINI_INIT()
'Endlosschleife
Do While True
OUTPUT1_ON() 'Ausgang aktiv
AbsDelay (50) 'kurze Pause
OUTPUT1_OFF() 'Ausgang inaktiv
'lesen
For X = 1 To 1000 Step 1
If INPUT_1(0) = 1 Then A=A+1 Hier Ist mein Denkfehler, wenn ich den sensor aktiviere den geht das signal auf 1 und nur für maximal 30 ms auf 0 ich hab diese zeile auf "If INPUT_1(0) = 0 Then A=A+1" geändert und jetzt geht es
End If
Next
If A > 9 Then OUTPUT7_ON() : End If
If A > 7 Then OUTPUT6_ON() : End If
If A > 5 Then OUTPUT5_ON() : End If
If A > 3 Then OUTPUT4_ON() : End If
If A > 2 Then OUTPUT3_ON() : End If
If A > 1 Then OUTPUT2_ON() : End If
AbsDelay (500) 'kurze Pause
OUTPUT2_OFF()
OUTPUT3_OFF()
OUTPUT4_OFF()
OUTPUT5_OFF()
OUTPUT6_OFF()
OUTPUT7_OFF()
A=1
End While
Vielen dank führ die Mühe und für den Hinweis auf das Program, ich war fest überzeugt das kein Signal 0 ist und ein signal 1, es ist aber andersrum und da das Signal sehr kurz ist hab ich es nicht gemerkt.
Ich nehmer gern noch Tips an wie ich das Signal besser auslesen kann.
Wenn das Board bzw. der Controller den du verwendest, Interrupts unterstützt wäre das damit wesentlich effizienter auszuwerten.
danke für den Tip, ich lese mich gerade etwas ein, seit 64 zeiten hab ich nicht mehr wirklich Programme geschrieben.Aber die Messergebnisse der Sensoren sind nicht so wie ich es gern hätte und das lieg sicher am Programm
zum einen gib es diese Funktion
"Es stehen zwei (Mega32) bzw. drei (Mega12unabhängige Timer zur Verfügung. Timer_0 mit 8 Bit,
Timer_1 und Timer_3 mit 16 Bit (nur Mega12. Die Timer verfügen über einen programmierbaren
Vorteiler. Mit dem Timer läßt sich eine Zeit festlegen, nach der ein Interrupt ausgelöst wird. In der
Interruptroutine lassen sich dann bestimmte Verarbeitungsschritte ausführen"
oder diese funktion
"Diese Funktion nutzt den Capture-Interrupt ( INT_TIM1CAPT). Der Puls
wird zwischen einer steigenden und der nächsten fallenden Signalflanke gemessen. Die Periode wird
zwischen zwei steigenden Signalflanken gemessen. Durch die Input Capture Funktion gehen
Programmlaufzeiten nicht als Ungenauigkeit in das Meßergebnis ein"
leider fehlt mir etwas die zeit die ich gern hätte um hier voran zu kommen
Lesezeichen