PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : UART Problem mit VDRIVE3 (Vdrive2)



Blue72
18.06.2013, 23:51
Hallo,

ich hatte das Problem schon im Bascom Forum gepostet aber leider keine Antwort bekommen.
Nun hoffe ich das hier evtl.jemand ist der mir hier weiterhelfen kann.

Zum Problem: Das Modul lässt sich initialisieren mit dem senden von einem "E", es gibt auch ein "E" zurück.

Wenn ich jetzt z.B. Kommandos senden will, bekomme ich immer "Bad command" zurück.
Am Terminal (ohne µC) funktioniert das VDrive3 ohne Probleme.

Hier der Testcode. Die langen Pausen sind absichtlich so gewählt:



$regfile = "xm128a4udef.dat"
$crystal = 32000000
$hwstack = 128
$swstack = 128
$framesize = 128

Config Osc = Enabled , 32mhzosc = Enabled , 32khzosc = Disabled
Config Sysclock = 32mhz , Prescalea = 1 , Prescalebc = 1_1
Config Priority = Static , Vector = Application , Lo = Enabled
Config Clock = Soft , Rtc = 1khz_int32khz_ulp


$lib "xmega.lib"


Config Com5 = 9600 , Mode = 0 , Parity = None , Stopbits = 1 , Databits = 8
Open "COM5:" For Binary As #5


On Usarte0_rxc Rxc_isr_usarte0
Enable Usarte0_rxc , Lo
Enable Interrupts


Config Eeprom = Mapped


$lib "glcdKS108.lib"


Config Graphlcd = 128 * 64sed , Dataport = Portd , Controlport = Porta , Ce = 5 , Ce2 = 6 , Cd = 2 , Rd = 3 , Reset = 1 , Enable = 4
Waitms 100


Initlcd


Setfont Font5x6


Dim Received_chr As Byte

Dim Tmp_str As String * 30
Dim Received_str As String * 30

Cls

Lcdat 1 , 1 , "Initialisierung VDRIVE3"

Wait 5

Print #5 , "E" ; Chr(13)

Wait 5

Lcdat 2 , 1 , "IPA"
Print #5 , "IPA" ; Chr(13)

Wait 5

Lcdat 3 , 1 , "ECS"
Print #5 , "ECS" ; Chr(13)

Wait 5

End


Rxc_isr_usarte0:

Received_chr = Inkey(#5)

If Received_chr = Chr(13) Then

Received_str = Tmp_str

Tmp_str = ""

Else

Tmp_str = Tmp_str + Chr(received_chr)

End If

Return


$include "font5x6.font"




Und hier die Antworten im Terminal:



Ver V2DAP2.0.0-SP1 On-Line:
Device Detected P2
No Upgrade
D:\>
E
D:\>
Bad Command
D:\>
Bad Command
D:\>


Hat hier vielleicht jemand einen tip für mich ?

Gruß
Blue

MagicWSmoke
19.06.2013, 03:41
Du hast beim Senden jeweils das Semikolon hinter Chr(13) vergessen, damit sendest Du noch ein zusätzliches CRLF, also <cmd> CRCRLF, klar verwirrt das :D

Blue72
19.06.2013, 10:09
Das wars :) Danke Dir.

Ich hatte sowas ähnliches in einem ganz alten Beitrag von Dir mal gelesen (über Google), da stand auch was von LF.
Ich dachte mir aber das ich ja gar keines sende, nur CHR(13). Aber "mit ohne Semikolon" sende ich natürlich ein LF mit dazu ....

Das ist schon das zweite Bier das ich Dir schulde ;-)

Gruß
Blue

MagicWSmoke
19.06.2013, 10:21
Das ist schon das zweite Bier das ich Dir schulde ;-)
Das erste Bier war deutlich schwerer zu verdienen :D

Blue72
19.06.2013, 15:24
Haha stimmt, da geb ich Dir recht ;)