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