-         

Ergebnis 1 bis 6 von 6

Thema: Bascom SERIN SEROUT unterschiedliche Baudrate?

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    19.10.2009
    Beiträge
    67

    Bascom SERIN SEROUT unterschiedliche Baudrate?

    Anzeige

    Hi,

    ich würde gerne mit meinem AtMega168 auf einem Minicontrol die serielle Schnittstelle meines Routers auslesen und die Daten dann an meinen Computer schicken.

    Der Router hat eine Baudrate von 38400 und mein AtMega läuft mit 9600.

    Das Terminalprogramm auf meinem Rechner zeigt mir aber "fast" nur Quatsch an. Bis auf einige Buchstaben oder kurze Wörter steht auch viel Mist in der Ausgabe.

    Bsp:
    ion:203
    005 20070) 2:] M 4MBregi a 6raseors ] ARz

    AV
    [cAVM :
    ...............do<\n>[arHERAHz b


    [a[ar7ar7_

    L<20>?r?W???@<5>
    Wo liegt der Fehler?

    Ich benutze folgendes Program:
    Code:
    '----------------------------------------------------------------------
    '                         serin_out.bas
    '                    (c) 2002-2005 MCS Electronics
    ' demonstration of DYNAMIC software UART
    '----------------------------------------------------------------------
    
    'tip : Also look at OPEN and CLOSE
    
    $regfile = "m168def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 16000000
    $baud = 9600
    
    'some variables we will use
    Dim S As String * 10
    'buffer to save data
    Dim B As Long
    B = 0
    
    S = Chr(13) + Chr(13) + "Im ready" + Chr(13)
    Print S
    
    'DISABLE HW UART
    Ucsr0b = 0
    
    Do
       'first get some data via JP1
       Serin B , 4 , D , 2 , 38400 , 0 , 8 , 1
       'now send it
       If B <> 0 Then
         Serout B , 4 , D , 1 , 9600 , 0 , 8 , 1
         '                                      ^ 1 stop bit
         '                                  ^---- 8 data bits
         '                              ^-------- even parity (0=N, 1 = E, 2=O)
         '                         ^------------- baud rate
         '                   ^------------------- pin number
         '               ^----------------------- port so PORTA.0 and PORTA.1 are used
         '           ^--------------------------- for strings pass 0
         '      ^-------------------------------- variable
       End If
    Loop
    End
    
    'because the baud rate is passed with a variable in theis example, you could change it under user control
    'for example check some DIP switches and change the variable mybaud
    MfG
    Scarabol

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    19.10.2009
    Beiträge
    67
    Ich hab den Fehler schon selber gefunden:

    1. Ich habe den Speicher mit einem Array auf 500 Byte aufgepumpt
    2. Außerdem hab ich die if B = 0 Überprüfung entfernt.

    Hier mal der funktionierende Code:
    Code:
    '----------------------------------------------------------------------
    '                         serin_out.bas
    '                    (c) 2002-2005 MCS Electronics
    ' demonstration of DYNAMIC software UART
    '----------------------------------------------------------------------
    
    'tip : Also look at OPEN and CLOSE
    
    $regfile = "m168def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 16000000
    $baud = 9600
    
    'some variables we will use
    Dim S As String * 10
    'buffer to save data
    Dim B(512) As Byte
    'B(0) = 0
    
    S = Chr(13) + Chr(13) + "Im ready" + Chr(13)
    Print S
    
    'DISABLE HW UART
    Ucsr0b = 0
    
    Do
       'first get some data via JP1
       Serin B(1) , 511 , D , 2 , 38400 , 0 , 8 , 1
       'now send it
       Serout B(1) , 511 , D , 1 , 9600 , 0 , 8 , 1
            '                                      ^ 1 stop bit
            '                                  ^---- 8 data bits
            '                              ^-------- even parity (0=N, 1 = E, 2=O)
            '                         ^------------- baud rate
            '                   ^------------------- pin number
            '               ^----------------------- port so PORTA.0 and PORTA.1 are used
            '           ^--------------------------- for strings pass 0
            '      ^-------------------------------- variable
    Loop
    End
    
    'because the baud rate is passed with a variable in theis example, you could change it under user control
    'for example check some DIP switches and change the variable mybaud

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.556

    Re: Bascom SERIN SEROUT unterschiedliche Baudrate?

    Zitat Zitat von Scarabol
    Hi,


    MfG
    Scarabol

    versuche es mal damit:

    Code:
    Dim R As String * 10
    
    
    
    
    
    Do
    
    Open "comc.0:9600,8,n,1" For Output As #1
    Open "comc.1:9600,8,n,1" For Input As #2
    
    Input #2 "Test   " , R
    
    Print #1 , "hallo" ; R
    
    
    
    
    Close #1
    Close #2
    
    Loop
    Gruß Richard

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    19.10.2009
    Beiträge
    67
    Kann ich für $baud auch 38400 wie beim Router benutzen?

    Oder ist das zu schnell für den Atmega168?

    MfG
    Scarabol

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.556
    Zitat Zitat von Scarabol
    Kann ich für $baud auch 38400 wie beim Router benutzen?

    Oder ist das zu schnell für den Atmega168?

    MfG
    Scarabol
    Natürlich.

    Aber wir reden aneinander vorbei. Stelle Dir einmal vor Du bist
    das contol und ich bin die Fritz Box und wir Telefonieren. Ich spreche nur
    Plattdeutsch und Du nur Russisch, das klappt nicht. Die Baudraten müssen
    schon Passen.

    Die eine (Software-Schnittelle) bekommt von Hand eingetragen für RX/TX 38400 und wird an die Fritzbox angeschlossen.

    Die Andere (Hardware-Schnittelle)
    auch auf 38400 $baut 38400 eingestellt werden und wird mit dem PC
    verbunden. Die PC Baudrate muss dann angepasst werden.

    PCTX>>>>>>>HartwareRX>>>>>>>SoftwareTX>>>>>>FritzR X
    PCRX<<<<<<<HarwareTX<<<<<<<SoftwareRX<<<<<<FritzTX
    GND----------------GND--------------------GND-----------------GND

    Gruß Richard[/code]

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    19.10.2009
    Beiträge
    67
    Danke dir,

    ich habs hinbekommen:
    Code:
    ' Fritz Debug
    '
    ' This debugs Fritz Box Fon WLAN 7050
    ' serial output to RS232 via Minicontrol
    '
    ' made by Scarabol
    ' thx Richard
    
    $regfile = "m168def.dat"
    $framesize = 32
    $swstack = 32
    $hwstack = 32
    $crystal = 16000000
    $baud = 38400
    
    Print
    Print
    Print "Im ready!"
    Print
    
    Dim B As Byte
    B = 0
    
    Open "comd.2:38400,8,n,1" For Input As #2
    
    Do
    
    
       B = Waitkey(#2)
    
       If B > 0 Then
          Printbin B
       End If
    
    Loop
    
    Close #2
    MfG
    Scarabol

Berechtigungen

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