Seriova komunikace RS485

Jirka Mww jirka.mww na gmail.com
Středa Listopad 22 20:21:26 CET 2023


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
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.czHw-list na list.hw.czhttp://list.hw.cz/mailman/listinfo/hw-list
>
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.czHw-list na list.hw.czhttp://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ší část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20231122/fd67b17e/attachment-0001.htm>


Další informace o konferenci Hw-list