Stránka 1 z 1

PIC16F628A a RS 232

Napsal: 16 bře 2011, 20:11
od SJames
Ahoj :)

našel jsem tu sice několik témat, která se týkají komunikace po RS232, nicméně mi to moc nepomohlo.

Problém je v tom, že se mi nedaří rozchodit komunikaci mezi PICem a PC pomocí RS232. Nastavoval jsem vše podle datasheetu, tedy Baud Rate Generator, RCSTA i TXSTA registry. Nicméně, pokud v programu testuji bit RCIF (který má signalizovat přijetí "zprávy") neustále se jeví jako jednička, tedy přijato - i když nic přijmout nemohl.

Přikládám zdrojový kód, který jsem napsal, snad napoví víc :) Program by měl čekat na přijetí zprávy "65" (desítkových, tedy podle ASCII kódu písmeno A) a poté bliknout několikrát LEDkou (je to zatím jen test spojení). Tuto zprávu posílám pomocí programu napsaného ve Visual Bacisu. Signály přes RS232 k procesoru přicházejí (změřeno).

Předpokládám, že dělám nějakou hloupou chybu, ale nemůžu ji najít :/ Budu moc rád, když mi někdo zkušenější poradí :) Díky :)

Napsal: 16 bře 2011, 20:39
od kony2807
Pokud nepoužíváš přerušení , asi by si je měl raději zakázat - BCF INTCON,GIE .
Ale v budoucnu bude vhodnější příjem ošetřit rozhodně v přerušení a né v hlavním programu testování flagu - mohly by ti utíkat data zatím co je program jinde .

Mimochodem , proč definuješ adresy registrů pomocí EQU ? Stačí jejich názvy psát tiskacím a v hlavičce propojit kód s INC souborem příslušného procu.

Kód: Vybrat vše

include "p16f628.inc"

Druhé mimochodem , proč se po prvním přijetí znaku program vrací až na "init" a né na "start" .

Třetí : jak přesně je RS-232 připojen k procesoru ? Máš tam převodník úrovní (MAX232, ...) ?

Za pár minut doplním výsledek ze simulátoru .

Napsal: 16 bře 2011, 20:47
od SJames
Připojení PICu k RS232 je trošku taková divočina :) Používám převodník USB/RS232 a z tohohle COM podle výrobce lezou signály 0V a 5V - to si změřím ještě v pondělí na osciloskopu :)

Určitě přejdu na modernější způsob pojmenování registrů... tohle je starý zvyk ještě ze školy :)

Napsal: 16 bře 2011, 20:55
od kony2807
http://doveda.byl.cz/programy/pic_rs232.zip
Toto asi bude nejméně bolestná cesta k cíli ... Jinak celý tento web dopručuji prostudovat .

Napsal: 16 bře 2011, 21:11
od SJames
Díky, prostuduju to :) A snad to pomůže :)

Napsal: 16 bře 2011, 21:16
od procesor
K tomu RCIF....v PIR1 sa nedá urobiť..... bcf pir1,5. Ten bit sa dá iba čítať
Bit RCIF sa nuluje prečítaním dat z RCREG...čiže instrukciou movf RCREG,0.
Po resete je GIE=0, takisto aj RCIE=0...nemusia sa nulovať.