Raspberry PI , UART a RS485

hw na starhill.org hw na starhill.org
Pátek Březen 7 15:01:09 CET 2014


Tak se zdá, že je vyřešeno:

Balíčky pro Raspbian obsahovaly pyserial verze 2.5, kde není metoda outWaiting() implementována. Tak jsem ji doplnil 

port = serial.Serial("/dev/ttyAMA0", baudrate=50, timeout=3.0)
data="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
port.flushOutput()
port.write(data)
while port.outWaiting():
    pass
print "Vysilani dokonceno"


root na raspberrypi:/usr/local/bin/serial# date; ./test.py; date
Pá bře  7 14:59:23 CET 2014
Vysilani dokonceno
Pá bře  7 14:59:31 CET 2014



>---- Original Message ----
>From: "Pavel Poucha" <p.poucha na papouch.com>
>To: "'HW-news'" <hw-list na list.hw.cz>
>Sent: Pá, Bře 7, 2014, 9:59 AM
>Subject: RE: Raspberry PI , UART a RS485
>
>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
>
>_______________________________________________
>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