Hallo,
habe mein RNBFRA-Board fertig und möchte nach erfolgreichen Tests der mit gelieferten Programme selbst eine weing mit Bascom und dem Board rumexperimentieren.
Habe mir die Aufgabe gestellt einen Stepper mit 2 Tasten zu schalten. Nur "AN" und "AUS".
Dazu habe ich das Testprogramm 6 der CD hergenommen um die Eingänge zu überwachen und am Terminalprogramm auszugeben.
Die Taster habe ich hierzu mit Port 3 und 4 verbunden und will sie gegen GND schalten. Das funktioniert laut Terminal auch sehr gut.
Nun möchte ich die beiden Signal abfangen und damit den Motor steuern.
Die Rückgabewerte bei gedrückte Tasten sind 247 und 251.
Code:
'###################################################
'Testprogramm 6
'für
'RoboterNetz Standard-Roboter Board RBNFRA 1.2
'
'Aufgabe:
'Testet Eingangsport indem Wert über RS232
'übermittelt wird (9600 Baud einstellen)
'
'Autor: Frank
'Weitere Beispiele und Beschreibung der Hardware
'unter http://www.Roboternetz.de
'###################################################

$regfile = "m32def.dat"                                     ' oder bei Mega16 $regfile = "m16def.dat"

Const Writeeingabeport_adr = &H7E                           'I2C Adr PCF 2
Const Readeingabeport_adr = &H7F                            'I2C Adr PCF 2

Dim I2cdaten As Byte                                        'Datenbyte aus PCF8574


Dim I As Byte
Dim J As Word
Dim A As Word
Dim B As Word
Declare Sub Motor1_2
Declare Sub Motoren_aus
Declare Sub Wach

$baud = 9600
$crystal = 8000000                                          'Quarzfrequenz
Config Scl = Portc.0                                        'Ports fuer I2C-Bus
Config Sda = Portc.1


Config Pind.6 = Output                                      'Schrittmotoren Ein/Aus
Config Pinc.5 = Output                                      'Schrittmotor Links Richtung
Config Pinc.3 = Output                                      'Schrittmotor Links Step
Config Pinc.4 = Output                                      'Schrittmotor Rechts Richtung
Config Pinc.2 = Output                                      'Schrittmotor Rechts Step



I2cinit

 I2cstart
 I2cwbyte &H74                                              'Schreibbefehl an PCF3 schicken
     ' Led´s ein ,Motorendstufen ein, Port-Peripherie ein, RBN-Bus Sleep Modus aus (also Peripherie aktiv)
 I2cwbyte &B00000010                                        'Datenbyte an PCF3
 I2cstop



Portd.6 = 0                                                 'Schrittmotoren erst mal ausschalten

I2cdaten = 1

Wach

Sub Wach
   B = 251                                                  'Taste 2    (Port4)
   A = 247                                                  'Taste 1    (Port3)
   I = 0

   Do
      I2cstart
      I2cwbyte Readeingabeport_adr                          'Lesebefehl an PCF schicken
      I2crbyte I2cdaten , Nack                              'Datenbyte von PCF lesen
      I2cstop
      Waitms 50
      Print I ; " Eingangsport Wert" ; I2cdaten
      Incr I
      If I2cdaten = A Then Motor1_2                 
      If I2cdaten = B Then Motoren_aus
   Loop

End Sub Wach


'********************* Unterprogramme ****************************************************************

Sub Motor1_2
   Portc.5 = 0                                              'Richtung  Motor 1
   Portc.4 = 1                                              'Richtung  Motor 2
   Portd.6 = 1                                              'Motoren einschalten
   J = 2000

   Do
      Portc.2 = 0
      Portc.3 = 0
      Waitms 1
      Portc.2 = 1
      Portc.3 = 1
      Waitms 1
      J = J - 1

   Loop Until J < 1
      Portd.6 = 0

End Sub Motor1_2                                    'Motoren ausschalten


Sub Motoren_aus
   Portd.6 = 0

End Sub Motoren_aus
Wenn ich mich nun in der Schleife "Wach" befinde kann ich mit den Tasten die Schleife verlassen und springe ins Unterprogramm.
Ab diesen Zeitpunkt erfolgt aber keine Überwachung der Eingänge mehr.
Erst nach dem Abarbeiten des Unterprogramms.
Wie könnte ich es aber realisieren, das die Überwachung trotz Unterprogramm weiter läuft...???

Ich glaub ich seh den Wald vor lauter Bäumen nicht. ODER?
also bitte nicht gleich mit Steinen werfen.

Gruß robo_wolf