panier
01.01.2012, 12:03
Hallo zusammen,
und das Neue Jahr fängt nicht besser an, als das alte aufgehöhrt hat. :mad:
Ich hoffe Euer Start ist besser als meiner.
Problem: Mit dem RN-Minicontrol will ich am PC eingegebene Texte an das RN-Funk übergeben und gleichzeitig am PC den Empfang kontrollieren. Damit ist die RS232 für den PC erforderlich, das RN-Funk muss über eine Soft UART angesprochen werden (der Max ist beim RN-Runk entfernt).
Auf der anderen Seite der Funkstrecke sitzt ein RNmega128 mit Easyradio on Board, der allerdings 2 UARTs hat und damit an dem 2ten PC problemlos funktioniert.
Die Soft UART des RN-Minicontrol kann problemlos senden (es kommt alles am RN128 bzw. 2ten PC an), aber der Empfang ist mal da mal nicht, mal verstümmelt, mal genau 2 Zeichen (je nach Code Version und nicht klar reproduzierbar).
Getestet habe ich verschiedene Ports (auch PD3 mit INT1), in zig Kombinationen mit Buffer und ohne .....
Getestet habe ich auch eine Verbindung vom Funk (in) eine Kabelverbindung auf PD3 (--> Int1 Interrupt) was gar nicht funktioniert hat....
Ebenso hatte ich die Empfangsabfrage im Int1 --> da kam mal was ....
Könnt Ihr bitte mal drüber schauen --> ich bin mittlerweile betriebsblind
'################################################# #############
'
'Aufgabe:
' Lese alle Bytes vom Funk und gebe diese auf RS232 aus
' Lese alle Bytes vom PC via RS232 und gebe diese auf Funk aus
'
'
' Verkabelung:
' JP5 --> Pin 5 (PD4) mit dem Funkmodul TTL RS232 OUT verbunden
' --> Pin 4 (PB4) mit dem Funkmodul TTL RS232 IN verbunden
'
' RS232 --> PC Kabel
'
'################################################# #############
$regfile = "m168def.dat" 'Prozessor
$crystal = 16000000 'Quarzfrequenz
$hwstack = 32
$framesize = 32
$swstack = 32
$baud = 19200 'Für RS232, für Funk in Soft UART angegeben
On Int1 Int1_int 'Wenn PD3 den Status ändert. Für Soft UART benötigt?
Enable Int1
Config Int1 = Falling 'Auch Rising schon getestet
Enable Interrupts
Dim Funkempfang As Integer
Dim D As Integer
Dim X As Byte
Dim S As String * 1
Dim Sendetext As String * 30
Dim Empfangtext As String * 30
Config Serialout = Buffered , Size = 100
Config Serialin = Buffered , Size = 100
' ---------- Ende der Deklarationen -----------------------------------------
Print "Warte ich boote ..." ' Ausgabe am PC funktioniert gut
Open "comd.4:19200,8,n,1" For Output As #1 'jp5 Pin 5 linkester bzw. außen
Open "comb.4:19200,8,n,1" For Input As #2 'jp5 Pin 4 zweit linkester bzw. innen
D = 1
Funkempfang = 0
Wait 3
Print "Los geht's"
Do
Print " Schleife = " ; D 'Geht auf RS232 und PC
' ---------- RS232 abfragen und über Funk Ausgeben ------------------------
Sendetext = ""
While Ischarwaiting() <> 0 ' Wird vom RS232 gelesen
S = Inkey()
If S <> "0" Then
Sendetext = Sendetext + S
End If
Wend
If Len(sendetext) > 0 Then
Print "Sende jetzt: " ; Sendetext
Print #1 , Sendetext 'Geht gepuffert zum Funk
Print #1 , Len(sendetext)
End If
' ---------- bis hierhin funktioniert alles ------------------------
X = Inkey(#2)
While X <> 0
Print "Hurra X= " ;
Printbin X
Print
X = Inkey(#2)
If X = 0 Then
Print "Ende"
End If
Wend
D = D + 1
Wait 3
Loop
End
Int1_int:
Return
Zusatzfrage: Kann ich in das RN-Minicontrol einfach einen ATmega162 einbauen? Der hätte 2 UARTs.
Danke.
Gruß
Burkhard
und das Neue Jahr fängt nicht besser an, als das alte aufgehöhrt hat. :mad:
Ich hoffe Euer Start ist besser als meiner.
Problem: Mit dem RN-Minicontrol will ich am PC eingegebene Texte an das RN-Funk übergeben und gleichzeitig am PC den Empfang kontrollieren. Damit ist die RS232 für den PC erforderlich, das RN-Funk muss über eine Soft UART angesprochen werden (der Max ist beim RN-Runk entfernt).
Auf der anderen Seite der Funkstrecke sitzt ein RNmega128 mit Easyradio on Board, der allerdings 2 UARTs hat und damit an dem 2ten PC problemlos funktioniert.
Die Soft UART des RN-Minicontrol kann problemlos senden (es kommt alles am RN128 bzw. 2ten PC an), aber der Empfang ist mal da mal nicht, mal verstümmelt, mal genau 2 Zeichen (je nach Code Version und nicht klar reproduzierbar).
Getestet habe ich verschiedene Ports (auch PD3 mit INT1), in zig Kombinationen mit Buffer und ohne .....
Getestet habe ich auch eine Verbindung vom Funk (in) eine Kabelverbindung auf PD3 (--> Int1 Interrupt) was gar nicht funktioniert hat....
Ebenso hatte ich die Empfangsabfrage im Int1 --> da kam mal was ....
Könnt Ihr bitte mal drüber schauen --> ich bin mittlerweile betriebsblind
'################################################# #############
'
'Aufgabe:
' Lese alle Bytes vom Funk und gebe diese auf RS232 aus
' Lese alle Bytes vom PC via RS232 und gebe diese auf Funk aus
'
'
' Verkabelung:
' JP5 --> Pin 5 (PD4) mit dem Funkmodul TTL RS232 OUT verbunden
' --> Pin 4 (PB4) mit dem Funkmodul TTL RS232 IN verbunden
'
' RS232 --> PC Kabel
'
'################################################# #############
$regfile = "m168def.dat" 'Prozessor
$crystal = 16000000 'Quarzfrequenz
$hwstack = 32
$framesize = 32
$swstack = 32
$baud = 19200 'Für RS232, für Funk in Soft UART angegeben
On Int1 Int1_int 'Wenn PD3 den Status ändert. Für Soft UART benötigt?
Enable Int1
Config Int1 = Falling 'Auch Rising schon getestet
Enable Interrupts
Dim Funkempfang As Integer
Dim D As Integer
Dim X As Byte
Dim S As String * 1
Dim Sendetext As String * 30
Dim Empfangtext As String * 30
Config Serialout = Buffered , Size = 100
Config Serialin = Buffered , Size = 100
' ---------- Ende der Deklarationen -----------------------------------------
Print "Warte ich boote ..." ' Ausgabe am PC funktioniert gut
Open "comd.4:19200,8,n,1" For Output As #1 'jp5 Pin 5 linkester bzw. außen
Open "comb.4:19200,8,n,1" For Input As #2 'jp5 Pin 4 zweit linkester bzw. innen
D = 1
Funkempfang = 0
Wait 3
Print "Los geht's"
Do
Print " Schleife = " ; D 'Geht auf RS232 und PC
' ---------- RS232 abfragen und über Funk Ausgeben ------------------------
Sendetext = ""
While Ischarwaiting() <> 0 ' Wird vom RS232 gelesen
S = Inkey()
If S <> "0" Then
Sendetext = Sendetext + S
End If
Wend
If Len(sendetext) > 0 Then
Print "Sende jetzt: " ; Sendetext
Print #1 , Sendetext 'Geht gepuffert zum Funk
Print #1 , Len(sendetext)
End If
' ---------- bis hierhin funktioniert alles ------------------------
X = Inkey(#2)
While X <> 0
Print "Hurra X= " ;
Printbin X
X = Inkey(#2)
If X = 0 Then
Print "Ende"
End If
Wend
D = D + 1
Wait 3
Loop
End
Int1_int:
Return
Zusatzfrage: Kann ich in das RN-Minicontrol einfach einen ATmega162 einbauen? Der hätte 2 UARTs.
Danke.
Gruß
Burkhard