habe meinen Code jetzt mal umgestrickt auf das Senden und Empfangen von Strings. Codes sehen folgendermaßen aus :
Sender :
Code:
'------------------------ CPU Config -------------------------
$regfile = "m8def.dat"
$crystal = 1000000
Baud = 1200
'------------------------ Port Config --------------------------
Config Portb = Output
Config Portd.2 = Output
'------------------------ Alias ----------------------------------
Rs485 Alias Portd.2
'-------------------------- Subs -------------------------------
'--------------------------- RS485 -------------------------------
Rs485 = 0
Enable Interrupts
'----------------------------- Dims ------------------------------
Dim Wert As String * 4
'---------------------------------- Mainprogramm ------------------
Main:
Rs485 = 1
Print "test"
Do
Loop Until Ucsra.txc = 1
Set Ucsra.txc
Rs485 = 0
Wait 3
Rs485 = 1
Print "abcd"
Do
Loop Until Ucsra.txc = 1
Set Ucsra.txc
Rs485 = 0
Wait 3
Goto Main
und Empfänger :
Code:
----------------- CPU Config ---------------------------
$regfile = "m16def.dat"
$crystal = 1000000
$baud = 1200
'--------------- Portdefinition ------------------------
Config Porta = Output
Config Portb = Output
Config Portd.7 = Input
Config Portd.6 = Input
Config Portc = Output
Config Portd.2 = Output
'---------------------------------------- LCD ----------------------------------
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.4 , Rs = Portc.5
'----------------------------------- Timer --------------------
Enable Interrupts
'-------------- Alias -----------------------------------
Led1 Alias Porta.7
Led2 Alias Porta.6
Led3 Alias Porta.5
Led4 Alias Porta.4
Backlight Alias Portb.4
Rs485 Alias Portd.2
'-------------------------- RS485 -----------------------
Rs485 = 0
On Urxc Onrxd
Enable Urxc
'-------------------- Dims ---------------------------
Dim Wert As String * 4
'------------------- Main -------------------------------
Cls
Cursor Off Noblink
Locate 1 , 1
Lcd "Testempfang"
Backlight = 1
Led2 = 1
Led3 = 1
Led4 = 1
'-------------------- Hauptprogramm ---------------
_start:
Goto _start
'---------- Einlesen ----------
Onrxd:
Input Wert
Locate 2 , 1
Lcd Wert
Return
Jetzt habe ich folgendes Phänomen :
Wenn ich den Empfänger einschalte, dann zeigt er mit beim ersten empfang korrekt den Text "test" auf dem lcd an. Sendet der Sender dann abcd, kommt beim empfänger am lcd nur "#abc" und dann wieder "#tes". Also nur beim einschalten funktioniert es einwandfrei. Kann da was mit dem Buffer nicht stimmen ? Im Anhang sind noch zwei Bilder. Beim ersten klappt es nicht, da kommt ein wirres Zeichen und dann die restlichen 3 Buchstaben. Beim zweiten klappt es einwandfrei.
mfg Kay
Lesezeichen