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







Zitieren


Lesezeichen