PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit Parity bei Mega 162



Simon79
12.05.2005, 15:38
Hallo,

folgendes Problem:
Ich verwende beim Mega 162 beide Coms.
Konfiguriert werden Sie folgendermaßen:

$regfile = "m162def.dat"
$crystal = 18432000

$baud = 115200
$baud1 = 115200

Config Com1 = Dummy , Synchrone = 0 , Parity = Even , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Com2 = Dummy , Synchrone = 0 , Parity = Even , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Serialin = Buffered , Size = 160
Config Serialin1 = Buffered , Size = 160

Open "COM1:" For Random As #1
Open "COM2:" For Random As #2
Echo Off

Die Kommunikation funktioniert aber nur, wenn ich im Terminal die Parität auf "NONE" eingestellt habe.
Ich kann in den beiden Config-Zeilen ändern, was ich will, es ändert sich nix.
BUG oder mein Fehler??

Bin für jede Hilfe dankbar!!

Simon

Simon79
13.05.2005, 10:30
Habs selbst hinbekommen.
Falls jemand auch dieses Problem hat, hier der Code.
Ist zwar alles zu Fuss gemacht und viel Text, aber es läuft einwandfrei.


'....General Settings
$regfile = "m162def.dat"

'************************** USART0 GLOBALS *************************
'*

Dim Usart0_control_a As Byte
Dim Usart0_control_b As Byte
Dim Usart0_control_c As Byte

'*
'************************** USART1 ALIASES *************************
'*

Rxc_0 Alias Usart0_control_a.7 '[R ] receive complete
Txc_0 Alias Usart0_control_a.6 '[R/W] transmit complete
Dre_0 Alias Usart0_control_a.5 '[R ] data register empty
Fre_0 Alias Usart0_control_a.4 '[R ] frame error
Dor_0 Alias Usart0_control_a.3 '[R ] data overrun
Par_0 Alias Usart0_control_a.2 '[R ] parity error
U2x_0 Alias Usart0_control_a.1 '[R/W] x2 transmission speed
Mpc_0 Alias Usart0_control_a.0 '[R/W] multiprocessor communication mode

Rxcie_0 Alias Usart0_control_b.7 '[R/W] receive complete interrupt enable
Txcie_0 Alias Usart0_control_b.6 '[R/W] transmit complete interrupt enable
Dreie_0 Alias Usart0_control_b.5 '[R/W] data register empty interrupt enable
Rxcen_0 Alias Usart0_control_b.4 '[R/W] receiver enable
Txcen_0 Alias Usart0_control_b.3 '[R/W] transmitter enable
Cscz2_0 Alias Usart0_control_b.2 '[R/W] character size select bit 3
Urxb8_0 Alias Usart0_control_b.1 '[R ] received data bit 8 (for 9-bit communications... must be inspected before data register)
Utxb8_0 Alias Usart0_control_b.0 '[R/W] transmit data bit 8 (for 9-bit communications... must be written before writing data register)

Resrv_0 Alias Usart0_control_c.7 '[R/W] reserved bit for future use... set to 0
Async_0 Alias Usart0_control_c.6 '[R/W] asnyc / sync select.... 0 = async, 1 = sync
Parm1_0 Alias Usart0_control_c.5 '[R/W] parity mode select bit 1
Parm0_0 Alias Usart0_control_c.4 '[R/W] parity mode select bit 0
Stopb_0 Alias Usart0_control_c.3 '[R/W] stop bit select... 0 = 1 stop bit, 1 = 2 stop bits
Cscz1_0 Alias Usart0_control_c.2 '[R/W] character size select bit 1
Cscz0_0 Alias Usart0_control_c.1 '[R/W] character size select bit 0
Ucpol_0 Alias Usart0_control_c.0 '[R/W] clock polarity for synchronous operation

'************************** USART1 GLOBALS *************************
'*



Dim Usart1_control_a As Byte
Dim Usart1_control_b As Byte
Dim Usart1_control_c As Byte

'*
'************************** USART1 ALIASES *************************
'*

Rxc_1 Alias Usart1_control_a.7 '[R ] receive complete
Txc_1 Alias Usart1_control_a.6 '[R/W] transmit complete
Dre_1 Alias Usart1_control_a.5 '[R ] data register empty
Fre_1 Alias Usart1_control_a.4 '[R ] frame error
Dor_1 Alias Usart1_control_a.3 '[R ] data overrun
Par_1 Alias Usart1_control_a.2 '[R ] parity error
U2x_1 Alias Usart1_control_a.1 '[R/W] x2 transmission speed
Mpc_1 Alias Usart1_control_a.0 '[R/W] multiprocessor communication mode

Rxcie_1 Alias Usart1_control_b.7 '[R/W] receive complete interrupt enable
Txcie_1 Alias Usart1_control_b.6 '[R/W] transmit complete interrupt enable
Dreie_1 Alias Usart1_control_b.5 '[R/W] data register empty interrupt enable
Rxcen_1 Alias Usart1_control_b.4 '[R/W] receiver enable
Txcen_1 Alias Usart1_control_b.3 '[R/W] transmitter enable
Cscz2_1 Alias Usart1_control_b.2 '[R/W] character size select bit 3
Urxb8_1 Alias Usart1_control_b.1 '[R ] received data bit 8 (for 9-bit communications... must be inspected before data register)
Utxb8_1 Alias Usart1_control_b.0 '[R/W] transmit data bit 8 (for 9-bit communications... must be written before writing data register)

Resrv_1 Alias Usart1_control_c.7 '[R/W] reserved bit for future use... set to 0
Async_1 Alias Usart1_control_c.6 '[R/W] asnyc / sync select.... 0 = async, 1 = sync
Parm1_1 Alias Usart1_control_c.5 '[R/W] parity mode select bit 1
Parm0_1 Alias Usart1_control_c.4 '[R/W] parity mode select bit 0
Stopb_1 Alias Usart1_control_c.3 '[R/W] stop bit select... 0 = 1 stop bit, 1 = 2 stop bits
Cscz1_1 Alias Usart1_control_c.2 '[R/W] character size select bit 1
Cscz0_1 Alias Usart1_control_c.1 '[R/W] character size select bit 0
Ucpol_1 Alias Usart1_control_c.0 '[R/W] clock polarity for synchronous operation

'... Einstellungen für Com1

Reset Async_0
Reset U2x_0
Set Rxcen_0
Set Txcen_0
Reset Rxcie_0
Reset Txcie_0
Set Resrv_0
Reset Cscz2_0
Set Cscz1_0
Set Cscz0_0
Set Parm1_0
Reset Parm0_0
Reset Stopb_0
Reset Mpc_0

Ucsr0a = Usart0_control_a
Ucsr0b = Usart0_control_b
Ucsr0c = Usart0_control_c
Reset Ucsr0c.7


'... Einstellungen für Com2

Reset Async_1
Reset U2x_1
Set Rxcen_1
Set Txcen_1
Reset Rxcie_1
Reset Txcie_1
Set Resrv_1
Reset Cscz2_1
Set Cscz1_1
Set Cscz0_1
Set Parm1_1
Reset Parm0_1
Reset Stopb_1
Reset Mpc_1

Ucsr1a = Usart1_control_a
Ucsr1b = Usart1_control_b
Ucsr1c = Usart1_control_c
Reset Ucsr1c.7



$crystal = 18432000
$baud1 = 115200
$baud = 115200




Do
Waitms 100
Open "COM1:" For Random As #1
Open "COM2:" For Random As #2
Print #1 , "Text via Com1"
Print #2 , "Text via Com2"
Close #1
Close #2
Loop
end

PicNick
13.05.2005, 14:58
Das ist mein 1000. Post, ich geb' einen aus.
@Simon: Ist ja enorm, aber darf man fragen, was du mit dem Paritybit in diesem Falle eigentlich tust, bzw, was es dir hilft ?

Simon79
17.05.2005, 07:01
Die Software ist für ein Universalmodul mit jew. 4 OC-Ein-bzw.Ausgängen und zwei COm-Schnittstellen.
Ich muss die Schnittstellen flexibel halten, da ich z.Zt. noch nicht weiss, welche Geräte angeschlossen werden, das Modul später eingebaut ist und ich nur noch die Möglichkeit habe, über COM zu konfigurieren.
Habe mit Bascom gesprochen und die Version 1.11.7.7 erhalten.
Diese Version scheint genau dieses Problem zu lösen sowie sprachliche Schwächen des Compilers zu beheben. Als nur zu empfehlen.