Ez inkább ipari környezetben lehet fontos:
Az RS485 kommunikációnál a BASCOM-ból PRINT paranccsal megy ki az adat a HW UART fele, miután a kommunikációs irányt beállítottuk. Az adatfogadásnál (pl. válasz) a kommunikációs irányt megfordítjuk. És aitt a bibi. A HW UART ugyanis pufferelt, azaz lehet hogy még az _előtt_ váltunk irányt hogy az összes adat elment volna.
Ennek kivédésére két lehetőségünk van:
- várakozást építünk be a programba az adatirányváltás elé (ekkor nem lehet azonnali válasz).
- figyeljük van e még karakter az adási pufferben (megszakítással jelzi a UART)
- SW portot használunk ott (ha jól emlékszem) nincsen puffer (hacsak nem kértünk).
RS485 praktikus tanács
Helló!
Átnyálazgattam az oldalon az RS485 leírásokat, de egy dologban még mindig nem vagyok tökéletesen biztos.
Mindenütt irányváltásról beszélünk, holott értelmezésem szerint csak az adásnál kell figyelni arra, hogy ne blokkoljuk a feleslegesen a csatornát. A vétel folyamatosan be lehet kapcsolva.
Amikor adni akarok, akkor a DE lábat magasba húzom, amikor befejeztem az adást, akkor alacsonyba.
A leírások alapján eközben a folyamatosan olvashatok is, vagyis akár azonnal visszaolvasom, saját adásomat.
Miért fontos ez a kérdés? Ha olvasom is amit kiírtam, akkor detektálhatok collosion-t. Bár erről eddig még sehol sem esett szó. De azért bizonyára számolni kell ezzel a lehetőséggel (pláne hosszú vezetékek esetén).
Jó a gondolatmenetem? Kössz,
Balázs
PS: még egy kérdés, amiben megerősítést kérnék:
- Ha jól emlékszem, akkor SN65176B és SN75176B között csak energetikai különbségek vannak.
- Az SN75172, SN75174, illetve a SN75173, SN75175 viszont más, mert azokkal csak vagy adni, vagy venni tudsz. Csak egy irányúak.
Átnyálazgattam az oldalon az RS485 leírásokat, de egy dologban még mindig nem vagyok tökéletesen biztos.
Mindenütt irányváltásról beszélünk, holott értelmezésem szerint csak az adásnál kell figyelni arra, hogy ne blokkoljuk a feleslegesen a csatornát. A vétel folyamatosan be lehet kapcsolva.
Amikor adni akarok, akkor a DE lábat magasba húzom, amikor befejeztem az adást, akkor alacsonyba.
A leírások alapján eközben a folyamatosan olvashatok is, vagyis akár azonnal visszaolvasom, saját adásomat.
Miért fontos ez a kérdés? Ha olvasom is amit kiírtam, akkor detektálhatok collosion-t. Bár erről eddig még sehol sem esett szó. De azért bizonyára számolni kell ezzel a lehetőséggel (pláne hosszú vezetékek esetén).
Jó a gondolatmenetem? Kössz,
Balázs
PS: még egy kérdés, amiben megerősítést kérnék:
- Ha jól emlékszem, akkor SN65176B és SN75176B között csak energetikai különbségek vannak.
- Az SN75172, SN75174, illetve a SN75173, SN75175 viszont más, mert azokkal csak vagy adni, vagy venni tudsz. Csak egy irányúak.
Az irányváltás fontos. Ha a homidon állandó vétel van, és TE adsz, akkor visszhangként visszajut a chipedbe. Így vétel előtt a soros buffert állandóan törölgetni kell.
Az adás-vétel láb egymás invertjei. Így közösítve H vagy L szinttel kezelhető az adás és a vétel kérdése, nem kell két lábat beáldozni.
Az RS485 protokokollok master-slave alapúak. Multimasteres nem nagyon van belőle. Illetve nem mikronoktrolleres környezetben. Én a BenBusz és a Modbus-t használom. Ezek készen vannak
Az adás-vétel láb egymás invertjei. Így közösítve H vagy L szinttel kezelhető az adás és a vétel kérdése, nem kell két lábat beáldozni.
Az RS485 protokokollok master-slave alapúak. Multimasteres nem nagyon van belőle. Illetve nem mikronoktrolleres környezetben. Én a BenBusz és a Modbus-t használom. Ezek készen vannak