- 3D-Druck Einstieg und Tipps         
Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 39

Thema: Eingänge an RNBFRA-Board überwachen - Neuling

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.11.2005
    Ort
    Bayern
    Alter
    55
    Beiträge
    310

    Eingänge an RNBFRA-Board überwachen - Neuling

    Anzeige

    LiFePo4 Akku selber bauen - Video
    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

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    36
    Beiträge
    1.614
    warum machstn überhaupt das mit j?

    das brauchste doch gar nicht so wie ich das ssehe, dann macht der ne drehung, bis du den taster loslässt

    ansonsten könnteste noch des mit dem i²c-interrupt machen, aber da könnte es sein, das dir schritte verlorengehen...

    wie genau ist das mit den beiden werten, schwankt das?

    Martin
    Ich will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds, Entwickler von Linux

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.11.2005
    Ort
    Bayern
    Alter
    55
    Beiträge
    310
    Hi x-raider,
    Das mit dem "J = 2000" ist nur damit der Motor nicht ewig werkelt. Taste 1 ("A") gedrückt - Er springt in die Motorschleife und nach 10 Umdrehungen ist Schluß und er springt in die Schleife zurück. Das sollte im Normalfall auch gar nicht drin sein.
    Die beiden Werte ergeben sich durch die Eingänge bei 3 eben 247(1111 0111) und bei 4 ist es 251(1111 1011).
    Wie meinst Du das mit dem i2c-interupt?
    Gruß robo_wolf

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    36
    Beiträge
    1.614
    achsoo, ich verstehe, alos normalerweise haben doch die I²C bausteine alle ne INT-leitung hat der das auch?

    das mit j = 2000 das brauchste doch gar nicht, mach einfach die ganze schleife dad rin weg, und lass den sich nur einmal bewegen, dann springt er bei jedem tastendruck einmal in die subroutine, und drehtn stück, wenn du jetzt dauerhaft drückst, dann dreht er sich eben auch dauerhaft, oder seh ich das falsch?

    Martin
    Ich will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds, Entwickler von Linux

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.11.2005
    Ort
    Bayern
    Alter
    55
    Beiträge
    310
    Hi x-ryder,
    also: Die Aufgabe sieht eigendlich ganz einfach aus.
    Die Taste1 soll den Motor laufen lassen die Taste2 soll den Motor dann wieder stoppen. (elektrisch gesagt: Taste1 läßt einen Schütz anziehen und mit ihm die Selbsthaltung. ->Motor läuft. Taste2 unterbricht die Selbsthaltung und der Schütz fällt ab.) ->Motor steht

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    36
    Beiträge
    1.614
    also dann musstes mit nem flag machen:
    hauptprogramm:
    wenn flag = 1 dann dreh den motor
    wenn nicht, dann überprüfe die tasten
    geh zu hauptprogramm

    motor:
    dreh den motor einen schritt
    return

    taste:
    überprüfe welche taste gedrückt wurde
    wenn taste_an dann flag = 1
    wenn taste_aus dann flag = 0
    return

    sollte so laufen, bei bedarf schreib ich dir dein programm mal um

    Martin
    Ich will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds, Entwickler von Linux

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.11.2005
    Ort
    Bayern
    Alter
    55
    Beiträge
    310

    nicht ganz

    nicht ganz oder denke ich falsch?

    hauptprogramm:
    wenn flag = 1 dann dreh den motor
    wenn nicht, dann überprüfe die tasten
    geh zu hauptprogramm

    in dem Fall würde de Motor drehen und die Tasten würden nciht abgefragt, da flag ja = 1 ist. Also kann ich den Motor einschalten aber nicht aus.

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    36
    Beiträge
    1.614
    ach ja, klar ^^ einfach immer tasten abfragen lassen, egal was kommt ^^

    sorry, iss schon spät für nen ewigen kaffeesäufer wie mich ^^

    Martin
    Ich will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds, Entwickler von Linux

  9. #9
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    02.11.2005
    Ort
    Bayern
    Alter
    55
    Beiträge
    310
    ja, jetzt hast du es

    Wobei das mit dem Interupt sicher eleganter ist.
    Vielleicht hast du ja doch mal ein paar Minuten Luft und überarbeitest mal den Code, damit ich mir vorstellen kann, wie es mit den Interupts so funktioniert.

    Trotzdem erst einmal vielen Dank für deine Bemühungen mit mir Grünschnabel.
    Gruß Silvio

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    01.03.2004
    Ort
    Bielefeld (JA, das gibt es!)
    Alter
    36
    Beiträge
    1.614
    nene du, ich süppel eh schon zu viel kaffee, ich geh jetz pennen, aber morgen kannich dir das schreiben ^^

    Martin
    Ich will Microsoft wirklich nicht zerstören. Das wird nur ein gänzlich unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds, Entwickler von Linux

Seite 1 von 4 123 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests