bidirectional RS485 ?
Re: bidirectional RS485 ?
Som jag läser det hela har du en krets som kör med synkron kommunikation (SPI) och det är nog bara att bita i sura äpplet och placera en sändare/mottagare vid varje ledning. Alternativet är att koppla in en krets med lite IQ och köra RS485 men det är ju en värdering du måste göra om det är värd det.
Re: bidirectional RS485 ?
I princip kan du ju styra den här DE-signalen av en icke återtriggbar monovippa vars tid är obetydligt längre än den tid det tar att skicka ett tecken. (Egentligen bör det här såklart göras med någon form av digital krets för att det inte ska bli oexakt p.g.a. toleranser, temperaturvariationer o.s.v.)
Klarar AD-specialkretsen att hantera halv duplex sådär i största allmänhet, d.v.s. klarar den att "hålla igen" med sändandet till det slutat komma in data på dess ingång?
Om du använder en hybrid mellan RS422 och RS485 så spelar det ingen roll om specialkretsen kan "hålla igen" eller inte, och tiden på den där monovippan blir då inte så kritisk heller och det funkar dessutom även om den är återtriggbar. Med hybrid menar jag att nån slags gemensam styrburk sänder data till alla andra enheter på ett par, och alla andra enheter skickar ut data till styrburken på ett annat par.
(För övrigt tror så är väl RS485 & co kortslutningssäkert så elektriskt är det ingen fara om två enheter råkar sända samtidigt. Dubbelkolla dock detta innan du litar på vad jag säger, det här kommer fritt ur minnet).
Klarar AD-specialkretsen att hantera halv duplex sådär i största allmänhet, d.v.s. klarar den att "hålla igen" med sändandet till det slutat komma in data på dess ingång?
Om du använder en hybrid mellan RS422 och RS485 så spelar det ingen roll om specialkretsen kan "hålla igen" eller inte, och tiden på den där monovippan blir då inte så kritisk heller och det funkar dessutom även om den är återtriggbar. Med hybrid menar jag att nån slags gemensam styrburk sänder data till alla andra enheter på ett par, och alla andra enheter skickar ut data till styrburken på ett annat par.
(För övrigt tror så är väl RS485 & co kortslutningssäkert så elektriskt är det ingen fara om två enheter råkar sända samtidigt. Dubbelkolla dock detta innan du litar på vad jag säger, det här kommer fritt ur minnet).
Re: bidirectional RS485 ?
Jag har funderat ganska ordentligt och vill inte hitta på något hemmabygge som kanske slutar fungera pga små tidstoleranser eller nåt annat jobbigt. Min lösning som jag kom på i natt var att jag kör med enbart en gemensam SS eller CE (slave select = chip enable) för alla slavar, men låta den gå genom ett shiftregister på slavsidan som läser av en adressbyte:
Om jag ska kommunicera med SPI- slav nr 26:
1) SS är först hög (dvs. normalt passivt tillstånd)
2) kör ut en byte på SPI bussen utan att sänka SS. Denna innehåller slavadressen (26).
3) datan kommer in i shiftregistret hos varje slav.
4) ss sätts nu låg . Denna påverkar även latchen och output enable på shigtregistret.
5) shiftregistrets utgångar tolkas i hårdvaran och om det stämmer sätte slavens egen SS låg.
6) data överförs i båda riktningar x antal bytes.
7) slavens SS går hög igen när SPI-bussens SS går hög.
Nu kan jag prata med 256 slavar på min SPI buss på 1200 meters avstånd med en enda Chip select!
Och eftersom datalinjen har dominant låg bit så sänder master höga bitar (0xFF) när den ska ta emot data.
Om jag ska kommunicera med SPI- slav nr 26:
1) SS är först hög (dvs. normalt passivt tillstånd)
2) kör ut en byte på SPI bussen utan att sänka SS. Denna innehåller slavadressen (26).
3) datan kommer in i shiftregistret hos varje slav.
4) ss sätts nu låg . Denna påverkar även latchen och output enable på shigtregistret.
5) shiftregistrets utgångar tolkas i hårdvaran och om det stämmer sätte slavens egen SS låg.
6) data överförs i båda riktningar x antal bytes.
7) slavens SS går hög igen när SPI-bussens SS går hög.
Nu kan jag prata med 256 slavar på min SPI buss på 1200 meters avstånd med en enda Chip select!
Och eftersom datalinjen har dominant låg bit så sänder master höga bitar (0xFF) när den ska ta emot data.
