RS 485 SerCtrlXX

werner mehl
Benutzer
Avatar
Gender:
Age: 68
Posts: 49
Registered: 02 / 2012
Subject:

RS 485 SerCtrlXX

 · 
Posted: 01.03.2021 - 18:49  ·  #1
Hallo Zusammen,
ich habe seit Jahren keine RS 485 Schnittstelle mehr in der Hand gehabt und habe jetzt wahrscheinlich ein Verständnisproblem mit der Richtungssteuerung.

Der Code sieht im Prinzip so aus.

Prinzipieller Code;

Device = xmega256A3U, VCC = 3.3;

import SysTick, SerPortE0, SerPortE1, SerPortF0, SerPortD0;

define
SysTick = 10; {msec}

// RS 485
SerPortD0 = 9600 , Stop1; {9600 Baud, 1Stopbit}
TxBufferD0 = 40 , iData; {8 Byte Buffer und Int}
RxBufferD0 = 40 , iData; {8 Byte Buffer und Int}
SerCtrlD0 = PortA, 2, Positive; // RS 485 Sende- Empfangsumschaltung

loop
Ser_EnableD0(True); // RS485 Treiber auf Senden umschalten
// mDelay(1); // 1 mS warten, nur zur Sicherheit
Write(SerOutD0, getWKS485); // Wolkensensor abfragen
// mdelay(1); // 1 mS warten, nur zur Sicherheit
Ser_EnableD0(False); // und RS485 Treiber wieder auf lesen umschalten
endloop

------------------
und erhalte die Fehlermeldung

Var or Symbol expected

Ich kenne dieses vorgehen aus einem älteren Mega128 Projekt, das problemlos funktioniert.
Die vorhandenen Beispiele sind auch nicht sehr ergiebig.
Es wäre nett, wenn mir jemand auf die Beine helfen könnte.
Merlin
Administrator
Avatar
Gender:
Age: 24
Posts: 1409
Registered: 03 / 2005
Subject:

Re: RS 485 SerCtrlXX

 · 
Posted: 01.03.2021 - 19:54  ·  #2
What is the definition for getWKS485? Have you copied the function/constant over from your old project?
werner mehl
Benutzer
Avatar
Gender:
Age: 68
Posts: 49
Registered: 02 / 2012
Subject:

Re: RS 485 SerCtrlXX

 · 
Posted: 02.03.2021 - 08:44  ·  #3
Entschuldigung, mein Fehler.
Der String ist als Konstante vordefiniert.
Hier sind noch weitere Infos.

Const:
CR : char = #13;
LF : char = #10;
Cz : Char = Char($1A);

getWKS485 : String = '?10U' + CR + LF;

Fehlerposition Cursor.

Ser_EnableD0(True); // RS485 Treiber auf Senden umschalten
----------------^
----------------|
---- Error pos here


ERROR: Var or symbol expected
ERROR: ';' expected
ERROR: Identifier expected
ERROR: error

Ich war eigentlich der Meinung dass ich beim Handling der Schnittstelle einen Fehler mache, weil die Fehlermeldung auf das Ser_Enable zeigt.
werner mehl
Benutzer
Avatar
Gender:
Age: 68
Posts: 49
Registered: 02 / 2012
Subject:

Re: RS 485 SerCtrlXX

 · 
Posted: 02.03.2021 - 10:39  ·  #4
ich habe mir gerade eine Bitvariable zur RS485 Steuerung definiert mit der ich die Umschaltung manuell mache. Das funktioniert. Der ansonsten unveränderte Code wird auch problemlos compiliert.
rage
Benutzer
Avatar
Gender: n/a
Age: 65
Homepage: processanalytik.de
Posts: 237
Registered: 02 / 2007
Subject:

Re: RS 485 SerCtrlXX

 · 
Posted: 02.03.2021 - 14:12  ·  #5
Hallo Werner,

da ich meist den Slip-Treiber benutze kenn ich mich damit nicht wirklich aus, der Slip-Trieber macht da sozusagen transparent. Aber im Handbuch steht auf Seite 75 eigentlichfür den XMEGA
Code

Procedure SetSerEnable(Usart : tUSARTenum; const ena : boolean);
und nicht Ser_Enable, die sind nur für die anderen Atmel-Typen.

LG Ralf
werner mehl
Benutzer
Avatar
Gender:
Age: 68
Posts: 49
Registered: 02 / 2012
Subject:

Re: RS 485 SerCtrlXX

 · 
Posted: 02.03.2021 - 14:39  ·  #6
Hallo Ralf, besten Dank für den Einwurf!
Ich habe mich auf die Compilerhilfe verlassen, SetSerEnable finde ich in meiner Hilfe nicht. Version 5.10.10
Ich werde mir das Handbuch herunterladen und mal nachlesen.
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 14 · Cache Hits: 14   110   124 · Page-Gen-Time: 0.031662s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI