Raspberry PI , UART a RS485

Pavel Poucha p.poucha na papouch.com
Pátek Březen 7 09:59:27 CET 2014


Dobrý den,

s Raspberry PI používáme běžně přepínání RS485 signálem. Nejsem programátor,
tak teď konkrétně neporadím, ale jak koukám na schéma nějakého našeho
produktu, přepínání je připojeno na jeden GPIO. Pokud by se nedařilo,
napište mi prosím, vytáhnu z kolegů kus kódu.

Co se týče přepínání restartovatelným monostabilním obvodem je to možné. My
to máme uděláno ještě  jednodušeji a přitom spolehlivě v našich převodnících
UC485. (To zapojení se neměnilo od roku 1992 - což je už neuvěřitelných 22
let a UC485 je prodáno přes 11.000 ks :-) )

Řešení s monostabilním obvodem je ale rozumné jen v případech, kdy zařízení
(např. převodník) datům nerozumí. Tam, kde vysílač data zná (jako u
Raspberry nebo převodníků z USB apod.), je určitě lepší přepínání signálem.

S pozdravem
ing. Pavel Poucha
jednatel
pavel.poucha na papouch.com
Tel. +420 777 232 485

Papouch s.r.o.
Strašnická 1a, 102 00 Praha 10
Tel. +420 272 732 827
Fax +420 272 681 232

Máte-li chuť, navštivte naše stránky http://www.papouch.com/

-----Original Message-----
From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Tomáš Hamouz
Sent: Friday, March 7, 2014 9:23 AM
To: HW-news
Subject: Re: Raspberry PI , UART a RS485

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

_______________________________________________
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