-         

Ergebnis 1 bis 5 von 5

Thema: Bascom rs232 robi steuerung

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    23.03.2006
    Beiträge
    68

    Bascom rs232 robi steuerung

    Anzeige

    also ich möchte meine roboter fernsteuern können..
    dazu habe ich eine RS232 funkbrücke für 60€ gekauft...


    der roboter soll normalerweise eine bestimme aufgabe abarbeiten(autonom rumfahren)

    und nur bei RS232 input befehlen steuerbarsein(also via hyperterminal zb.)



    dazu gehören dann verschiedene funktionen:
    Sensoren auslesen
    manuelle steuerung
    greifarm(aus servos) bedienen


    wie stell man das am besten in einem basic programm zusammen?



    do

    hauptaufgabe

    loop


    und dann via rxc interrupt UART auslesen?

    und die befehl auswertung auch im interrupt?

    und wie am besten die befehle auslesen?
    ich schick zb. "vor" dann muss halt der l293d schalten usw...



    mir gehts halts ums grundgerüst das am besten aufzusetzten..

    grüße max

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2007
    Beiträge
    386
    so mach ich es mit Bascom mit einem atmega 32:

    Code:
    config int2=rising
    
    On Int2 Int2_int
    
    Enable Interrupts
    Enable Int2
    
    Open "comb.2:19200,8,n,1" For Input As #1
    Open "comd.6:19200,8,n,1" For Output As #2
    
    do
       waitms 300
    loop
    
    End
    
    Int2_int:
       Disable Int2
       Enable Interrupts
       input #1, text
       waitms 5
       call empfang()
       enable int2
    Return
    
    sub empfang()
     If Text = "vor" Then
       M_wert_a = 100
       M_wert_b = 100
       Call Robby_vor()
     End If
     If Text = "zurueck" Then
       M_wert_a = 100
       M_wert_b = 100
       Call Robby_zurueck()
     End If
     If Text = "links" Then
       M_wert_a = 60
       M_wert_b = 60
       Call Robby_links()
     End If
     If Text = "rechts" Then
       M_wert_a = 60
       M_wert_b = 60
       Call Robby_rechts()
     End If
     If Text = "stop" Then
      Call Robby_aus()
     End If
    end sub

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    23.03.2006
    Beiträge
    68
    ich würde lieber das hardware UART nehmen.

    das ist doch softuart ne?


    die m_wert zahlen sind deine motor werte oder?
    da kann ich ja dann reinschreiben was ich will..

    oder?

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    ja, das ist Software UART ... kann man so machen, wenn die Hardware UART schon vergeben ist, ansonsten bietet sich die Hardware UART und der RXC Interrupt an. Die Auswertung würde ich nicht in der Interruptroutine machen, ein ungeschriebenes Gesetzt sagt, dass man die ISR so kurz wie möglich halten soll, da der AVR keine Interruptprioritäten hat und wenn ein INT ausgelöst ist kein INT bis zum Verlassen der ersten ISR ausgeführt wird, was aber manchmal nötig ist. Ich gehe bei solchen Sachen so vor, dass ich ein Flag setze, sprich UART auslesen, UDR in n Byte schreiben und ein zweites Byte auf Wert 1 setzen. In der Mainloop hab ich dann ne IF THEN, bei welcher das zweite Byte abgefragt wir. ist dies 1 wirds neu gesetzt zu Null und ein Unterprogramm angesprungen. Nur ein Vorschlag.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    29.07.2007
    Beiträge
    386
    ....ich würde lieber das hardware UART nehmen....

    dann legste den rtx auf int 0 oder 1 oder 2 , fertig.

    der udr ist für kurze abfragen , nach dem motto : a oder b oder c.

    wenn du wörter abfragen möchtest, ist das nix.

    Code:
    Enable Interrupts
    Enable Urxc
    On Urxc Isr_von_urxc
    
    Dim Text As String * 16
    
    Do
       Waitms 200
    Loop
    End
    
    Isr_von_urxc:
       If Udr = 13 Then
          .....
       End If
    Return

Berechtigungen

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