Komunikace RS232 v Bascom AVR

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
ladislav64
Příspěvky: 2
Registrován: 21 led 2010, 01:00

Komunikace RS232 v Bascom AVR

#1 Příspěvek od ladislav64 »

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?

Uživatelský avatar
mtajovsky
Příspěvky: 3694
Registrován: 19 zář 2007, 02:00
Bydliště: Praha

#2 Příspěvek od mtajovsky »

BASCOM a jeho možnosti neznám, ale obecně se u asynchronního přenosu kromě rychlosti nastavují i další parametry:
- počet datových bitů (5/6/7/8/16)
- parita (n/e/o) - bez, sudá, lichá
- počet stop bitů (1/1,5/2)

Sedí i tohle?

Uživatelský avatar
AB1
Příspěvky: 312
Registrován: 23 lis 2009, 01:00

#3 Příspěvek od AB1 »

Kód je v pořádku.
Pro jistotu bych doplnil

Kód: Vybrat vše

$hwstack = 32
$swstack = 32
$framesize = 32
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.

Uživatelský avatar
rkozeluh
Příspěvky: 261
Registrován: 17 úno 2007, 01:00
Bydliště: Liberec

#4 Příspěvek od rkozeluh »

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.

Uživatelský avatar
nekmil
Příspěvky: 780
Registrován: 06 bře 2005, 01:00
Bydliště: Havířov

#5 Příspěvek od nekmil »

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

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“