Nějak nechápu, kam míříš. I2C i SPI jsou synchronní rozhraní, takže je tam potřeba generovat hodiny a ty generuje master, slave je přijímá. Takže vždy zahájí komunikaci master a slave odpovídá. Nemůže komunikovat master s masterem nebo slave se slavem.Panda38 píše:Andreo a když to I2C principielně podporuje, myslíš že by nešlo použít SPI rozhraní s otevřeným kolektorem a vysílat kdykoliv, obejít se bez spouštění masterem?
AVR USART multiprocesorová komunikace
Moderátor: Moderátoři
- sewerman_cz
- Příspěvky: 289
- Registrován: 13 úno 2011, 01:00
- Bydliště: Brno
- Kontaktovat uživatele:
Budic fyzicke vrstvy treba LTC485 nebo jiny z tisice vyrabenych. Zapojeni je samovysvetlujici, jen je potreba v SW vyresit rizeni pripojovani vysilace na bus. A rozumne je udelat zapojeni takove, aby procesor v resetu nepripojoval vysilac na bus.sewerman_cz píše:A nějaké nakopnutí k RS-485 by bylo?
de omnibus dubitandum est
Treba TJA1043 a mel bych to i s podporou power-managementu. Ale s UARTem jsem ho jeste nezkousel, jen s CANem. Ale nevidim duvod proc by to nemelo fungovat... Sice budou problemy se synchornizaci a na UARTu se clovek o kolizi dozvi (bez pridavne obvodariny) az po celem vyslanem bajtu, takze ikdyz tam bude "montazni soucin", tak protoze se pri kolizi stejne bajt odesle cely, bude kolidovana zprava bez zaruky validity. Takze bez nejakeho kontrolniho souctu a "jam" paketu se to neobejde... Ale s R-D to bude totez.
de omnibus dubitandum est
- sewerman_cz
- Příspěvky: 289
- Registrován: 13 úno 2011, 01:00
- Bydliště: Brno
- Kontaktovat uživatele:
- sewerman_cz
- Příspěvky: 289
- Registrován: 13 úno 2011, 01:00
- Bydliště: Brno
- Kontaktovat uživatele:
Zkusím si odpovědět sám:
Ve slave je adresa uložena jako konstanta.
Master pošle první paket jako adresu (TXB8 = 1).
Všechny slave paket přijmou a zkontrolují adresu pokud adresa sedí nastaví bit MPCM=0 a přijímají data
Po ukončení komunikace nastaví MPCM = 1
RE a DE slouží k přepínání mezi vysíláním a přijímáním.
Ve slave je adresa uložena jako konstanta.
Master pošle první paket jako adresu (TXB8 = 1).
Všechny slave paket přijmou a zkontrolují adresu pokud adresa sedí nastaví bit MPCM=0 a přijímají data
Po ukončení komunikace nastaví MPCM = 1
RE a DE slouží k přepínání mezi vysíláním a přijímáním.
- sewerman_cz
- Příspěvky: 289
- Registrován: 13 úno 2011, 01:00
- Bydliště: Brno
- Kontaktovat uživatele:
Ano, AVR to dela zhruba jak pises... Ale je to trochu opicarna, ja bych radeji videl samostane preruseni podminene 9 bitem.... ale rozhodne je to (casove) lepsi nez cist nejaky flag v obecne obsluze preruseni periferie.
V tom schematu bych nechal prijimac stale aktivni (vyhnes se tak nutnosti definovat klidovou uroven v okamziku jeho nekativity, coz by mohlo mit pri opemenuti za nasledek falesne startbity)...
DE bych pripojil pres pull-down na zem, aby behem resetu, nebo je-li pin jako Hi-Z vstup se vysliac nahodne neaktivoval.
Navic deaktivaci RE\ si odpojis priposlech a zhorsis moznost pripadne detekce kolize.
V tom schematu bych nechal prijimac stale aktivni (vyhnes se tak nutnosti definovat klidovou uroven v okamziku jeho nekativity, coz by mohlo mit pri opemenuti za nasledek falesne startbity)...
DE bych pripojil pres pull-down na zem, aby behem resetu, nebo je-li pin jako Hi-Z vstup se vysliac nahodne neaktivoval.
Navic deaktivaci RE\ si odpojis priposlech a zhorsis moznost pripadne detekce kolize.
de omnibus dubitandum est
- sewerman_cz
- Příspěvky: 289
- Registrován: 13 úno 2011, 01:00
- Bydliště: Brno
- Kontaktovat uživatele:
Snažím se ještě nalést něco ohledně multi master komunikace, ale nic kloudného jsem nenašel.
Mohl by multi master fungovat nějak takhle?
Master pošle před zahájením komunikace informaci pro všechny že se bude vysílat (pomocí speciální adresy na kterou budou reagovat všechny slave) Po ukončení komunikace pošle na všechny ukončení komunikace. Master se přepne na příjem. V tomto mezidobí může každý slave poslat data na master nebo jiny slave. Před a po pošle informaci o zahájení komunikace.
Pokud budou mít ostatní prvky informaci informaci o probíhající kolizi nebudou se snažit o komunikaci (pokud nebudou osloveni)[/quote]
Mohl by multi master fungovat nějak takhle?
Master pošle před zahájením komunikace informaci pro všechny že se bude vysílat (pomocí speciální adresy na kterou budou reagovat všechny slave) Po ukončení komunikace pošle na všechny ukončení komunikace. Master se přepne na příjem. V tomto mezidobí může každý slave poslat data na master nebo jiny slave. Před a po pošle informaci o zahájení komunikace.
Pokud budou mít ostatní prvky informaci informaci o probíhající kolizi nebudou se snažit o komunikaci (pokud nebudou osloveni)[/quote]
A vcem se takovy "master" lisi od tech ostatnich?
Takovahle komunikace v zasade mozna je, zarucit, aby nekdo nezacal vysilat do jiz beziciho ramce "jde", ale musi se vyresit otazka, kdy si dva vzpomenou "soucasne"..... aby se minimalizovala kolize a ta se pak spolehlive rozpoznala... Pokud chces detekovat kolize pouzij radeji nejakou fyzickou vrstvu, ktera zna recesivni a dominantni uroven (treba CAN
)......
Pokud mas znamy a pevny pocet jednotek, muzou si jednotky predvat "token" a udelas "token ring", master jen ten, kdo ma token. Smarejme jde pouzit i algoritmus, kde budou jednotky do ringu dynamicky vrazovat a vyrazovat.... psat to z nuly je hezky civceni....
A nebo se to vykasli a pouzij CAN nejen fyzickou vrstvu, ale i radic a mas sdileni fyzicky vrstvy vyreseny....
Takovahle komunikace v zasade mozna je, zarucit, aby nekdo nezacal vysilat do jiz beziciho ramce "jde", ale musi se vyresit otazka, kdy si dva vzpomenou "soucasne"..... aby se minimalizovala kolize a ta se pak spolehlive rozpoznala... Pokud chces detekovat kolize pouzij radeji nejakou fyzickou vrstvu, ktera zna recesivni a dominantni uroven (treba CAN
![Smile :-)](./images/smilies/icon_smile.gif)
Pokud mas znamy a pevny pocet jednotek, muzou si jednotky predvat "token" a udelas "token ring", master jen ten, kdo ma token. Smarejme jde pouzit i algoritmus, kde budou jednotky do ringu dynamicky vrazovat a vyrazovat.... psat to z nuly je hezky civceni....
A nebo se to vykasli a pouzij CAN nejen fyzickou vrstvu, ale i radic a mas sdileni fyzicky vrstvy vyreseny....
de omnibus dubitandum est