Leopard.basHallo an alle da Draußen


Ich bin hier als Neuling mit einem Problem und hoffe auf eure Hilfe.
Zur Vorgeschichte , mit dem Programm das ich geschrieben habe (ich komme leider nur mit Bascom zurecht weil ich früher schon mal mit Basic rumgespielt habe , von C+ und Assembler keine Ahnung ) sollen folgende Abläufe abgearbeitet werden.

1. Das Prog wartet auf den Befehl "Start" durch Fernsteuerung (Taster)
|
|
Funktioniert
|
|
2. Wenn Start erfolgt soll ein Motor über ein Relais (D91A.1.0 , Typ Readrelais) für eine vordefinierte Zeit anlaufen.
|
|
Funktioniert
|
|
3.Unmittelbar danach soll ein Servo mit der Geschwindigkeit x zum Anschlag fahren dann mit watms12 x-1 zurück.
|
|
macht das Prog nicht es dauert in etwa 1-1,5 Sekunden zwischen Motoraus und Servostart (gewünscht 0 Sekunden)
ehe der Befehl Ausgeführt wird
|
|
4. Der Motor soll wieder für eine vordefinierte Zeit anlaufen um zum Ausgagspunkt zurück zu kehren .
|
|
Macht das Prog , aber leider nicht immer sporadisch lässt es diesen Teil komplett weg.
|
|
5.Prog kehrt zum Ausgang zurück und wartet auf nächsten Impuls.
|
|
Funktioniert


Hier der Quelltext:

Code:
$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 16
$swstack = 8
$framesize = 24
Config Portb.2 = Input
Config Portb.1 = Output
Config Portb.0 = Output
Do					                                        'endlosschleife
Do					                                         'erste für motor 12V
Dim W As Integer				                                'Variable festlegen
Pulsein W , Pinb , 2 , 1			                                'Abfrage Fernsteuerung
If W <= 150 Then				                                'alles unter 150 (cirka die Mitte) keine Aktion
Portb.1 = 0				                                        'port bleibt aus
End If
If W > 150 And W <= 200 Then			                'alles über 150 und unter 200 Setzt port PB1 auf 5V
Portb.1 = 1
End If
Waitms 1500				                                 '1,5 Sekunden Warten dann PB1 auf 0V
Portb.1 = 0
Loop Until W > 150				                        'aus der ersten Schleife springen wenn W größer 150 ist

Hier dritt die Wartezeit auf obwohl keine engetragen ist 

Do					                                        'zeite für Servosteuerung
Config Servos = 1 , Servo1 = Portb.0 , Reload = 10	        'servo configurieren
Enable Interrupts				                                'Interrupts einschalten
Dim I As Byte
For I = 100 To 200
 Servo(1) = I
Next I
For I = 200 To 100 Step -1
  Servo(1) = I
  Waitms 12
Next I
Disable Interrupts				                                   'Ganz wichtig was du anschaltest solltest du auch ausschalten
I = 100
Loop Until I = 100				                                   'aus der zweiten Schleife springen wenn I größer 100 ist


Das Teil wird Sporadisch komplett ausgelassen


Dim Z As Integer				                                   'wert für Aussprung aus der dritten schleife festlegen
Z = 0
For Z = 1 To 300
Next Z
Portb.1 = 1				                                           'PB1 auf 5V setzen
Waitms 1500				                                  '1,5 Sekunden Warten dann PB1 auf 0V setzen
Portb.1 = 0
Loop Until Z = 300

Wenn ihr mir helfen könntet könnte ich das Projekt abschließen.
Grüße Henry