PIC - zahájení a ukončení sériové komunikace přes USART

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
p4ul
Příspěvky: 317
Registrován: 29 srp 2007, 00:00

PIC - zahájení a ukončení sériové komunikace přes USART

#1 Příspěvek od p4ul »

Ahoj, komunikuju s PIC přes USART a COM port. Komunikace je v pořádku (příjem i vysílání). PIC přijímá data v přerušení a posílá normálně v programové smyčce, kde se nachází také kód pro blikání diod. A teď 2 problémy.

1.
Zapnu PIC. Diody blikají. Na straně PC otevřu COM port. Diody přestanou blikat (PIC se asi sekne). Musím vypnout a zapnout PIC a pak komunikace běží.

2.
Na straně PC otevřu COM port. Zapnu PIC. Diody blikají a vesele se komunikuje. Zavřu COM port. Diody přestanou blikat (PIC se asi sekne).

Nevíte čím to je, že se PIC při otevření nebo zavření COM portu PIC zastaví?
Nevíte jak to ošetřit? Už mě nebaví pořád vypínat a zapínat PIC.
Uživatelský avatar
jankop
Příspěvky: 679
Registrován: 04 dub 2007, 00:00
Kontaktovat uživatele:

#2 Příspěvek od jankop »

S ohledem na poskytnuté informace odpověď trochu zobecním:
"Jářku, bude to asi pokažený! Buď máš chybu v hardware, nebo software, nebo v obojím."
Uživatelský avatar
mikollar
Příspěvky: 1477
Registrován: 26 pro 2004, 00:00
Bydliště: Košice - okolie

#3 Příspěvek od mikollar »

nemoze to byt tym ze pri zapinani resp vypiani COM portu posiela PC nejake znaky, ktore v programe PIC niesu osetrene a sekne sa porgram? Len tipujem :?
Uživatelský avatar
p4ul
Příspěvky: 317
Registrován: 29 srp 2007, 00:00

#4 Příspěvek od p4ul »

:idea: už jsem na to přišel..je nutné reagovat na chyby:

if (RCSTAbits.OERR)
{
// nastala chyba overrun, musime ji vynulovat vypnutim a zapnutim prijimani
RCSTAbits.CREN = 0;
RCSTAbits.CREN = 1;
} else if (RCSTAbits.FERR)
{
// framming error napravime prectenim dat (w = RCREG)
ReadUSART();
}
Odpovědět

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