Dobrý den všech,
potřeboval bych poradit s komunikací RS232. Začínám programovat v jazyce BASCOM AVR a nastal mi problém se zobrazováním na terminálu. V simulátoru vše funguje, jak má ale na terminálu zobrazení nefunguje.
přikládám jednoduchý program z heplu:
$regfile = "m8515.dat"
$baud = 19200
$crystal = 8000000
Do
Print "Hello world:"
Waitms 25
Loop
End
na terminálu se zobrazuje toto:
<88>0΀#NUL#CANĆ<Ŕ>ŕ>ţ>#NUL8ţó>8?Ŕ>Ŕ<88>0΀#NUL8ć<Ŕ>Ŕ>ţ>#NUL8ţó>8?ŕ#RSŔ<88#RS0gŔ#NUL8Ć<ŕ>Ŕ>ţ>#NUL8ţó#RS8?Ŕ>ŕ<88>0Ć€#NUL#CANĆ<Ŕ>ŕ>ţ>#NUL#CANţó>8?Ŕ>Ŕ<#CAN8>0΀#NUL8ć<Ŕ>Ŕ>ţ>#NUL8ţó>8?ŕ>Ŕ<88>0΀#NUL8Ć<ŕ>Ŕ>ţ>#NUL8ţó#RS8?Ŕ>Ŕ<88>0Î
Zkoušel jsem měnit rychlost připojení i emulaci terminálu a pořád nic. Poradíte?
Komunikace RS232 v Bascom AVR
Moderátor: Moderátoři
Kód je v pořádku.
Pro jistotu bych doplnil
Nejčastější příčinou bývá nesprávný kmitočet oscilátoru.
Ten by měl být řízený krystalem.
Interní oscilátor může mít větší odchylku než povolené 2%.
Cestu mezi mikroprocesorem a PC zkouším tak, že vytáhnu procesor z patice a na patici propojím piny RXD TXD. Terminál pak opakuje vyslané znaky.
Pro jistotu bych doplnil
Kód: Vybrat vše
$hwstack = 32
$swstack = 32
$framesize = 32
Ten by měl být řízený krystalem.
Interní oscilátor může mít větší odchylku než povolené 2%.
Cestu mezi mikroprocesorem a PC zkouším tak, že vytáhnu procesor z patice a na patici propojím piny RXD TXD. Terminál pak opakuje vyslané znaky.
Jaký používáš převodník mezi PC a procesorem?
Jednou jsem použil nějaké snad dlouho používané zapojení s tranzistory, ale nefungovalo to, i když test na spojení Rx a TX běhal OK.
Celkem mě to dalo zabrat, než jsem na to přišel. potom jsem použil maxima a byl pokoj, no vlastně nebyl, nakonec tam stejně skončil převodník na USB.
Jednou jsem použil nějaké snad dlouho používané zapojení s tranzistory, ale nefungovalo to, i když test na spojení Rx a TX běhal OK.
Celkem mě to dalo zabrat, než jsem na to přišel. potom jsem použil maxima a byl pokoj, no vlastně nebyl, nakonec tam stejně skončil převodník na USB.
zkus "zesynchronizovat rychlosti" $Baud a nastavení terminálu
a to Waitms 25 - není to příliš rychle ?
$regfile = "m32def.dat"
$crystal = 14745600 'krystal v Hz
$baud = 9600 'COM1:9600,N,8,1
$hwstack = 32
$swstack = 32
$framesize = 32
'-------------------------------------------------------------------------------
Dim A As Byte , B As Byte
Dim S As String * 26
Do
Wait 1
For A = 1 To 26
B = A + 64
S = S + Chr(b)
Next
Print S
S = ""
Print "Ano vytiskli jsme 26 znaků ASCII"
Print
Loop
End 'konec programu
a to Waitms 25 - není to příliš rychle ?
$regfile = "m32def.dat"
$crystal = 14745600 'krystal v Hz
$baud = 9600 'COM1:9600,N,8,1
$hwstack = 32
$swstack = 32
$framesize = 32
'-------------------------------------------------------------------------------
Dim A As Byte , B As Byte
Dim S As String * 26
Do
Wait 1
For A = 1 To 26
B = A + 64
S = S + Chr(b)
Next
Print S
S = ""
Print "Ano vytiskli jsme 26 znaků ASCII"
Loop
End 'konec programu