Raspberry PI , UART a RS485

Tomáš Hamouz hamouz na divesoft.cz
Pátek Březen 7 09:23:29 CET 2014


Teď si nejsem jistý kde jsem to četl, možná i zde na konferenci (jsem
teď líný hledat), ale celkem funkční je metoda kdy se přepíná na
vysílání start bitem a je tam jeden restartovatelný monostabilní obvod
(74123), který je nastaven na dobu o málo delší než je trvání jednoho
znaku.

Tzn. vůbec směr neovládáte explicitně z programu, ale jakmile začne
UART vysílat, driver se přepne a po skončení se sám přepne zpět.

Výhoda je že to funguje nezávisle na tom jak se dodávají data do
UARTu.

Tomáš


> Zdravím,

> chtěl bych připojit Raspberry PI na RS485 sběrnici. Po HW stránce je to
> snadné a zdá se, že vše funguje. Nicméně narazil jsem na problém v 
> Raspberry..

> Mám v něm Raspbian a ovládání píšu v Pythonu (pyserial). Využívám 
> klasický UART + jeden GPIO na přepínání TX/RX převodníku 75176.

> # RS485 TX
> GPIO.output(12, 1)
> # posle data na port
> port.write("AHOJSVETE\n\r")
> # time.sleep(0.1)
> # RS485 RX
> GPIO.output(12, 0)

> Problém je v tom, že metoda write odešle data do nějakého lowlevel 
> bufferu UARTu a tím skončí. Poté ihned následuje přepnutí převodníku do
> režimu příjmu a tím pádem neodvysílání části dat. Nejprimitivnější 
> řešení je zařazení nějaké prodlevy, během které se stihnou data odeslat
> - nicméně tato prodleva neřeší délku dat, vytížení OS a vůbec je to 
> takto špatně. Hledal jsem v dokumentaci pyserialu nějakou metodu nebo 
> atribut, který by mě řekl, že odesílání již skončilo, avšak bez výsledku
> - jediný kandidát outWaiting() v pyserialu v Raspbery není.

> Nemáte, prosím, někdo nápad, jak z tohho ven?

> Děkuji

> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list