TWI kommunikáció egymás válaszának figyelése

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

TWI kommunikáció egymás válaszának figyelése

Hozzászólás Szerző: csabeszq »

Sziasztok,

Van egy terepasztal, ahol 4-5 IC egymással TWI-n kommunikál.
Egy mester irányít, a többiek a buszon csücsülnek és ellátják adatokkal a mestert. Mindegyik IC-nek van egy vonala a mester felé, amit ha alacsonyra rak, azt jelenti, hogy mondani akar valamit. A mester ilyenkor kérdez (3 kábeles a kommunikáció, több kábel nem lehetséges csak gányolással).

A probléma az, hogy van két IC, ami igazából egymásnak is szolgáltat adatot, nemcsak a mesternek.

Szóval:
- IC1 jelzi, hogy mondandója van
- Mester kérdez, hogy micsoda
- IC1 elmondja, hogy ez történt
- Mester szól az IC2-nek, elmondja hogy az IC1 ezt mondta

Ennek így semmi értelme, mert az adat ott van a buszon, csak IC2-nek figyelnie kellene azt, hogy IC1 mit mondott a mesternek.

A kérdés, hogy lehetséges-e egy slave-nek egy másik slave beszédébe belehallgatni I2C-n?
(több címre figyelni lehetséges egyszerre a TWAMR regiszter használatával, de a lehallgatásról nincs információm)
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: TWI kommunikáció egymás válaszának figyelése

Hozzászólás Szerző: Robert »

Slave-Slave kommunikáció mikrokontrolleres környezetben (sem) létezik. Amit keresel az a multimaster mód (vagy annak elfajzottja).
Az nem jó, hogy
1, az INT vonalon jeleznek az eszközök, hogy hasfájásuk van (bejelzés)
2, master végigkérdezi őket, hogy kinek mi a problémája
3, ha a slave olyan választ ad, hogy "pisilni kell", akkor vele beszélget
4, ha a slave azt mondja, hogy "pistikének üzenem, hogy...", akkora master átmegy postásba. Csak előtte megkérdezi Pistikét, hoyg van e mindanivalója és hogy kíváncsi e Zolika üzenetére.
5, ha körbeért és mindenkitől már csak azt kapta, hogy nincs mondanivalóm, akkor értél a kommunikáció végére.

A minta a "tantónéni és az osztály" logikát követi.

U.i.: miért kellett minden slave-nak 1-1 vonal a master felé?
Openkollektoros módon meghajtani az INT vonalat? Vagy akár egy soros kondin át?
INT lehet INT0/INT1 vagy akár a minden lábon ott levő PCINT is...
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: TWI kommunikáció egymás válaszának figyelése

Hozzászólás Szerző: csabeszq »

Röviden a hardver:

Gondolom ismered a 14 pólusú szkáb apát, az egyszerűség kedvéért az egymásmellettieket összekötöttem: 7 vezeték. Ebből 4 tápfesz: 0V, 5V, 12V, stabilizálatlan, 3 kommunikáció: TWI + jelzés. Ebből a szkábcsatlakozóból 4 darab van egymás mellett, slot-oknak hívom. Ide lehet tetszőleges akármit bedugni. A jelzővezeték mindegyik slotnál más, a többi össze van kötve egymással.

Amikor indul a rendszer, egy 0x00 küldeményt ad (mindenkinek szól). Ekkor mindenki beállítja, hogy üzenete van. A mester egyesével végigmegy a lehetséges szolgákon, lekéri az üzenetet, amire a szolga visszaállítja a vonalát. Innen tudja meg a mester, hogy az adott szolga éppen melyik slot-ba van bedugva. Amikor a mesternek jelez, akkor a mester azonnal tudnifogja, hogy kivel dumál, akkor is, ha szerelés után össze-vissza dugsz mindent.

A mesternek van egy sora is (TWI queue), ahova a kéréseket tudja bepakolni. Elég bonyolult a dolga és a bejövő események kimenő események láncát indíthatják el, ezért volt szükség sorkezelésre. A buszon addig mennek a kérések, amíg a sor ki nem ürül. A berakott elemek azonosítóval rendelkeznek, innen tudja a mester, hogy a válasz melyik kérésre jött. A sorba be tudsz rakni mindenkinek szóló kérést, üzenet-küldést, adat-olvasást,...

Miért kellett külön vonal? Csak nem akarom az összes szolgát egyesével végigkérdezni, hogy meséld már el, hogy mi van. Lehet belőlük egy csomó. Egyébként a vezetékek nincsenek interruptra kötve, a mester időnként olvasgatja őket. A terepasztalon nem történnek olyan események, amik indokolnák a hogy us közeli válaszidőket produkáljak. Nem fénysebességgel mennek a vonatok :)
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: TWI kommunikáció egymás válaszának figyelése

Hozzászólás Szerző: csabeszq »

Egyébként valószínűleg megfogadom a tanácsod és a mester fogja postázni az IC-k egymásnak küldött adatait.
(és loggolja RS-232-n a PC felé, ahonnan látom, hogy nagyjából mi zajlik)
Válasz küldése