Scarabol
28.05.2010, 17:25
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:
'----------------------------------------------------------------------
' 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
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:
'----------------------------------------------------------------------
' 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