Hallo an das Forum,
Ich weiß, hier verwenden die meisten Leute C oder Assembler.
Ich würde aber gerne weiter in Bascom Programmieren, da es VB ähnelt und ich damit beruflich zu tun habe.
Ich würde gern für eine Fahrende Bierkiste Drehzahl und Geschwindigkeit auslesen.
Der Bau der Geber stellt kein Problem dar. Die Zündung und die Antriebswelle sollen pro Umlauf nur ein Signal abgeben, aber ich verstehe die Funktionsweise der Timer nicht.
Mein Plan ist den Timer1 laufen zu lassen, die Drehzahl aus der Differenz eines alten und neuen Wertes zu errechnen und bei Erreichen des Geschwindigkeitssensor den Timer auf null zu setzen.
Der Timer läuft hoch, aber die Interrupts lösen anscheinend nicht aus
hier der Code:
Code:
$regfile = "m88def.dat"
$crystal = 16000000
$hwstack = 40
$swstack = 40
$framesize = 40
'Display Einrichten
Config Lcdpin = Pin , _
Db4 = Portb.0 , Db5 = Portd.7 , Db6 = Portd.1 , Db7 = Portd.0 , E = Portb.4 , Rs = Portb.5
Config Lcd = 16 * 2
Dim Drehzahl As Word
Dim Geschwindigkeit As Word
Dim D_timer_1 As Single
Dim D_timer_2 As Single
Dim G_timer As Single
Dim Timer_multi As Single
Config Pind.2 = Input 'drehzahl
Config Pind.3 = Input 'Geschwindigkeit
Portd.2 = 1
Portd.3 = 1
On Int0 Dreh_route
On Int1 Gesw_route
On Timer1 Timer_over
Config Int0 = Rising
Enable Int0
Config Int1 = Rising
Enable Int1
Enable Interrupts
Enable Timer1
Start Timer1
Config Timer1 = Timer , Edge = Rising , Prescale = 1024 'so niedrig, dass erlangsam zählt
Timer_multi = 1
Do
Cls
Upperline : Lcd Drehzahl ; " " ; Geschwindigkeit
Lowerline : Lcd D_timer_1 ; " " ; Timer1
Waitms 20
Loop
End
Dreh_route:
D_timer_2 = Tcnt1 * Timer_multi
If D_timer_2 > D_timer_1 Then Drehzahl = D_timer_2 - D_timer_1
D_timer_1 = D_timer_2
Return
Gesw_route:
G_timer = Timer1 * Timer_multi
Geschwindigkeit = G_timer
Timer1 = 0
Timer_multi = 0
Return
Timer_over:
Timer_multi = Timer_multi + 1
If Timer_multi > 100 Then Timer_multi = 1
Return
End
Lesezeichen