Seriova komunikace RS485

Petr Labaj labaj na volny.cz
Středa Listopad 22 20:34:36 CET 2023


Mně se zdálo, že jste psal, že to Arduino nevyšle. Nikoli že by něco 
nepřijalo.
Vysílání je v knihovnách Arduino dělané jako neblokující, přes nějaký 
buffer?
Pak by se zřejmě dalo použít i nějaké blokující, kde by jiné IRQ neměly 
vliv na funkci.

PL

********************

Dne 22.11.2023 v 20:21 Jirka Mww napsal(a):
> Pane Zárubo,
> přivedl jste mne na jednu myšlenku, kterou zítra vyzkoušim. Mám tam 
> přerušení 4mS, opsané z jiného projektu, ale v podstatě to tak často 
> nepotřebuju, počítám ta přerušení do 250 a hlavní smyčku pouštím po 
> sekunde. Nějak jsem na to zapomněl, že to tak je, dělám na tom je po 
> chvilkach.
> Zitra to přerušení přepisu na delší interval a uvidím, jestli to bude 
> mít efekt. Ještě jednou díky za nakopnuti. Pokud neuspěji, vyndáme ten 
> osciloskop..
>
>
> Dne st 22. lis 2023 19:07 uživatel Martin Záruba <swz na volny.cz> napsal:
>
>     Mám podezření, že to bude souviset s ne plnohodnotnou obsluhou
>     přerušení. Tedy to, co jsem sám nevěděl, že pokud nastane více
>     přerušení současně, priority pouze určují pořadí spuštění rutin,
>     ale neznamená to, že jestliže běží rutina s nižší prioritou a
>     vznikne vyšší přerušení, že se ta nižší přeruší, obslouží se ta
>     výšší, pak pokračuje ta nižší a pak hlavní program. Jinak
>     řečeno... Neumí vnořovat přerušení.
>
>     Mám podobný problém, kde, přerušení časovačem mám každých 50uS.
>     Ono to není v mém případě důležité, aby to bylo přesně 50uS. Pokud
>     nenastává jiné přerušení, vidím na osciloskopu, že to sedí. Pokud
>     ale nastává přerušení od seriového portu, interval 50uS není přesný.
>
>     Nevím, zda to nemůže být Váš případ, kdy dojde k tak zásadní
>     deformaci šířku pulzu na seriovém portu, že se data přenesou
>     špatně. Takže se přikláním k tomu, co napsal pan Labaj.
>
>     Martin Záruba
>
>     Dne 22.11.2023 v 18:36 Petr Labaj napsal(a):
>>     Přiznávám, že by mě to zajímalo.
>>     Tedy pro obecnou osvětu a poučení, i když ve Vašem konkrétním
>>     případě to dokážete ošéfovat pomocí SW.
>>
>>     Připojil bych na ten převodník jen osciloskop a kontrolní PC, nic
>>     jiného. Na druhé straně by nikdo neodpovídal.
>>     A do Arduina dát jednoduchý program, který bude vysílat stále
>>     dokola třeba po 2 sekundách ten string.
>>
>>     Pokud to tady bude OK (na osciloskopu i přijetím na na kontrolním
>>     PC), tak nechat HW stejně, ale posílat to Vašim původním
>>     programem, pokud umí posílat výzvy i bez odpovědi.
>>     Pokud to opět bude OK, tak teprve pak připojit ten odpovídač a
>>     hledat tam.
>>
>>     Máte 4-kanál, tak by asi nebyl problém ho odpíchnout od Tx dat,
>>     která by byla vstupem pro ten převodník (tj. výstupní drát z
>>     Arduina).
>>
>>     PL
>>
>>     **********************
>>
>>     Dne 22.11.2023 v 18:13 Jirka Mww napsal(a):
>>>     Dobrý den,
>>>     To s tím rozdělením jsem zkoušel, nebyla tam žádná změna i když
>>>     jsem tam dal ještě navíc delay. Osciloskop mám, 4 kanál
>>>     paměťový, ale nevím, na co ho synchronizovat. Necháme to být, SW
>>>     to řeší
>>>
>>>     Dne st 22. lis 2023 18:05 uživatel Petr Labaj <labaj na volny.cz>
>>>     napsal:
>>>
>>>         Myslel jsem, že se Vám to s těmi odpory spravilo. A ono ne.
>>>         Tak to je skoro čas na plán B.
>>>         Máte osciloskop? Pokud je to jeden ze 40 pokusů, tak tohle
>>>         chytnout by měla být brnkačka. A zřejmě budou "načaté" i
>>>         ostatní přenosy, jen budou ještě v toleranci.
>>>
>>>         Co by udělalo Serial2.print("X1A") a pak Serial2.println("")
>>>         nebo jak se ty funkce na Arduinu jmenují? Prostě poslat to
>>>         CR dalším voláním.
>>>
>>>         PL
>>>
>>>         ********************
>>>
>>>         Dne 22.11.2023 v 17:42 Jirka Mww napsal(a):
>>>>         Díky za další rady, on ale bude problém asi jinde. Po
>>>>         doplnění těch opěrných odporů na A+ a B- se to začalo
>>>>         chovat o dost líp, ale po dopsání nějakých dalších řádků do
>>>>         Arduina ATMEGA se to zase trochu zhoršilo.
>>>>         Mám podezření, že ty procedury Arduina pro obsluhu
>>>>         sériových portů nejsou asi úplně nezávislé, nebo tomu vadí
>>>>         něco jiného z mého SW.   V podstatě s tím můžu žít, ty
>>>>         posílané povely se dají opakovat, když nepřijde včas
>>>>         relevantní odpověď.  Schema těch převodníků nemám, je to z
>>>>         Ali, drát na řízení směru toku  nemají, to co poslu se
>>>>         zároveň zpětně načte.  Ten co komunikuje s měničem GOODWE
>>>>         problémy nemá, komunikace 100%  chodí včetně CRC. Vyhození
>>>>         převodníků je trochu problém, relova deska pro obsluhu je
>>>>         SMD , musel bych tam okolo převodníku RS485 škrbat spoje,
>>>>         to se mi nechce. Raději budu řešit ty výpadky přes úpravu
>>>>         SW a už se tím dál nebudu zabývat
>>>>
>>>>         Zdravi
>>>>         Jirka Sloupenský  OK1MWW
>>>>
>>>>
>>>>         <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
>>>>         	Neobsahuje žádné viry.www.avast.com
>>>>         <https://www.avast.com/sig-email?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail>
>>>>
>>>>
>>>>
>>>>         út 21. 11. 2023 v 20:28 odesílatel Dodo Racek
>>>>         <dodoracek na gmail.com> napsal:
>>>>
>>>>             Tazko hadat, malo vstupnych informacii.
>>>>
>>>>             Obe strany su v istej chvili prepnute na vysielanie ?
>>>>
>>>>             Pri riadenom prepinani mozete prepnut na prijem  skor
>>>>             ako je odoslany posledny znak.
>>>>             Niektore obsluhy seriovej linky povazuju odoslanie za
>>>>             skoncene, ked je posledny byte vo vysielacom registri
>>>>             (ale este neodisiel po seriovej linke )
>>>>
>>>>             Automaticke prepinania sa robia rozne, od detekcie
>>>>             startbitu hrubym casovanim MKO, niektore sa snazia
>>>>             detekovat rychlost vysielania a nastavit cas prepnutia
>>>>             podla casu vyslania bytu a odhadnutej rychlosti... byva
>>>>             to rozne.
>>>>
>>>>             Mate linku zakoncenu na oboch stranach prislusnou
>>>>             zatazou ? Napr 120R + 1n
>>>>
>>>>             Mate definovane urovne linky, ked su obe strany na prijme ?
>>>>             Niektore prevodniky to robia "automaticky" a u
>>>>             niektorych je potrebne jeden vodic potiahnut odporom na
>>>>             zem a druhy vodic na +5v.
>>>>
>>>>             Niektore zapojenia prevodnikov 422/485 umoznuju zaroven
>>>>             citat, co sa lokalne vysiela a napr. detekovat chybu
>>>>             vysielania, ked sa iny vysielac na linke namontuje do
>>>>             komunikacie....
>>>>
>>>>             Chcelo by to ozajstne schemy tych prevodnikov.
>>>>             Ci mate chybu v prograne mozete overit tak, ze vyhodite
>>>>             prevodniky a pojdete Rx-Tx priamo na TTL urovniach.
>>>>
>>>>             Dodo
>>>>
>>>>
>>>>             Dňa ut 21. 11. 2023, 15:31 Jirka Mww
>>>>             <jirka.mww na gmail.com> napísal(a):
>>>>
>>>>                 Dobrý den,
>>>>                 ladím tady komunikaci mezi dvěma Arduiny, jedno je
>>>>                 Arduino Nano a druhé je Arduino Mega , příslušný
>>>>                 seriový kanál je na Mega serial2. Na Nano používám
>>>>                 HW seriový kanál. SW seriový kanál není vůbec
>>>>                 využit.   Na Arduinu Nano je modul RS485, který má
>>>>                 externí vstup pro přepínání směru přenosu, ten
>>>>                 obsluhuji svým SW a vše zdá se funguje správně.  Na
>>>>                 Arduinu Mega mám nějaký čínský modul RS485, který
>>>>                 takový vstup nemá , přepíná se sám, posílám jen
>>>>                 čtyři znaky pomocí funkce Serial2.println("X1A")
>>>>                 t.j. včetně CR na konci, většinou to funguje, ale
>>>>                 ten koncový znak, na který protistrana čeká, aby
>>>>                 příkaz provedla, se občas ( cca 1 x za 40 přenosů )
>>>>                 nepošle.  Linku monitoruji přes externí převodník a
>>>>                 PC ale efekt je stejný, jak na straně Arduino Nano,
>>>>                 tak na straně PC. Prostě ten koncový znak nepřijde
>>>>                 tam ani tam.   Komunikace s FVE měničem Goodwe přes
>>>>                 další port toho Arduino Mega mi funguje normálně.
>>>>                 Je tam podobný modul RS485 opět bez řízení směru
>>>>                 přenosu, je jenom galvanicky oddělený.  Nemáte
>>>>                 nějaký nápad, na co se zaměřit  ? Vkládání zpoždění
>>>>                 do různých relevantních částí programu nepomáhá.
>>>>
>>>>                 Zdravi
>>>>                 Jirka Sloupenský  OK1MWW
>>>>
>>>
>>>         _______________________________________________
>>>         HW-list mailing list  -  sponsored by www.HW.cz
>>>         <http://www.HW.cz>
>>>         Hw-list na list.hw.cz
>>>         http://list.hw.cz/mailman/listinfo/hw-list
>>>
>>>
>>>     _______________________________________________
>>>     HW-list mailing list  -  sponsored bywww.HW.cz  <http://www.HW.cz>
>>>     Hw-list na list.hw.cz
>>>     http://list.hw.cz/mailman/listinfo/hw-list
>>
>>
>>     _______________________________________________
>>     HW-list mailing list  -  sponsored bywww.HW.cz  <http://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 <http://www.HW.cz>
>     Hw-list na list.hw.cz
>     http://list.hw.cz/mailman/listinfo/hw-list
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored bywww.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20231122/2abc9a3f/attachment.htm>


Další informace o konferenci Hw-list