Hallo,
ich habe folgendes Programm:
Code:
$regfile = "M48def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 10
$framesize = 40
Dim Zeitpunkt As Word
Dim A As Byte
Zeitpunkt = 0
'Servo
Config Servos = 1 , Servo1 = Portb.1 , Reload = 10
Config Portb.1 = Output
'Pumpe 1 an PD7
Pumpe1 Alias Portd.5
Config Pumpe1 = Output
'Motor Stauchen an PD6
Stauchen Alias Portd.6
Config Stauchen = Output
'Motor Streckenan PD7
Streckenalias Portd.7
Config Strecken = Output
'Pumpe 2 an PB0
Pumpe2 Alias Portb.0
Config Pumpe2 = Output
'TASTER 1 an PD2
Taster1 Alias Pind.2
Config Pind.2 = Input
Portd.2 = 1
'Taster 2 an PD3
Taster2 Alias Pind.3
Config Pind.3 = Input
Portd.3 = 1
On Int0 Zweiter
On Int1 Erster
Config Int0 = Falling
Config Int1 = Falling
Enable Int0
Enable Int1
Enable Interrupts
Servo(1) = 60
Pumpe1 = 1 : Pumpe2 = 0
Do
Loop
Zweiter:
Strecken = 0 : Stauchen = 0 : Servo(1) = 40
Pumpe1 = 1 : Pumpe2 = 1
Waitms 1000
Pumpe1 = 0 : Pumpe2 = 1
Waitms 2000
Strecken = 1 : Stauchen = 0
Return
Erster:
Strecken = 0 : Stauchen = 0 : Servo(1) = 50
Pumpe1 = 1 : Pumpe2 = 1
Waitms 1000
Pumpe1 = 1 : Pumpe2 = 0
Waitms 2000
Strecken = 0 : Stauchen = 1
Return
Return
Mein Problem liegt darin, das in den beiden Interrupt-Routinen beide Motoren 0 sein sollen und gelichzeitig der Servo eine Position abfahren soll.
Doch dies tut das Programm leider nicht.
Eigentlich müsste passieren:
Stecken + Stauchen = 0 -> Korrekt
Servo = Position anfahren -> macht er aber leider erst zum Schluss
pumpen mit Pausen
Strecken bzw Stauchen
Der Servo bewegt sich erst wieder wenn, Strecken und Stauchen = 1 bzw. 0 ist.
Woran dies liegt kann ich mir leider nicht erklären hoffentlich habt ihr eine Lösung zu meinem Problem
Über Antworten würde ich mich sehr freuen
Gruß
Martin
Lesezeichen