AVR USART multiprocesorová komunikace

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
sewerman_cz
Příspěvky: 289
Registrován: 13 úno 2011, 01:00
Bydliště: Brno
Kontaktovat uživatele:

AVR USART multiprocesorová komunikace

#1 Příspěvek od sewerman_cz »

Při procházení možností propojení více mcu jsem narazil na USART multiprocesorová komunikace.
Má s tím někdo zkušenosti? Případně nevíte někdo o knihovnách pro avr?
Princip jsem asi pochopil Rx z master čipu jde na všechny Tx slave čipů, Tx master na slave Rx.
Zajímalo by mne jestli může v takovéto konfiguraci vyvolat komunikaci slave mcu nebo zda ji vždy musí vyvolat master mcu?

Uživatelský avatar
Crifodo
Příspěvky: 14471
Registrován: 11 říj 2005, 02:00

#2 Příspěvek od Crifodo »

když komunikaci vyvolá slave, tak už to asi není slave?

Uživatelský avatar
forbidden
Příspěvky: 8808
Registrován: 14 úno 2005, 01:00
Bydliště: Brno (JN89GF)
Kontaktovat uživatele:

#3 Příspěvek od forbidden »

Pokud bude na sběrnici víc jak dvě zařízení, jedno z nich musí být master, který bude komunikaci zahajovat. Jinak hrozí, že dva začnou vysílat zaráz a komunikace nebude fungovat. V podstatě si můžeš napsat vlastní jednoduchej komunikační protokol podle svých potřeb, klidně i přes USART.

Uživatelský avatar
Panda38
Příspěvky: 713
Registrován: 21 lis 2012, 01:00
Bydliště: Most, Praha, Lanžhot
Kontaktovat uživatele:

#4 Příspěvek od Panda38 »

Při použití I2C může zahájit komunikaci kdokoliv: http://cs.wikipedia.org/wiki/I%C2%B2C

Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#5 Příspěvek od Andrea »

A od kdy? Na I2C zahajuje komunikaci master.

Uživatelský avatar
Panda38
Příspěvky: 713
Registrován: 21 lis 2012, 01:00
Bydliště: Most, Praha, Lanžhot
Kontaktovat uživatele:

#6 Příspěvek od Panda38 »

I2C používá detekci kolizí - může zahájit vysílání když je sběrnice v klidovém stavu, ale když během vysílání zjistí kolizi datového bitu, vysílání přeruší.

Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#7 Příspěvek od Andrea »

Ale zahájit ji může jen master.

Uživatelský avatar
WLAB
Příspěvky: 867
Registrován: 13 zář 2005, 02:00
Bydliště: Praha

#8 Příspěvek od WLAB »

Nejak se z toho vyratil ten UART......

To je otazka, co tou multiprocesorovou UART komunikaci myslely ty materialy, ktere jsi videl. Klidne to muze byt "ring" TX-RX-TX..., nebo sbernice (treba rs485) v rezimu master-slave, token-ring (multimaster), dovedu si predstavit i jakousi obdobu "CSMA/CD".... Ale nejspis se bude jednat o "9-bitovou" komunikaci, kdy se nastaveny 9 bit pouziva jako SOF znacka nebo jako oznacovac adresnich (popr. ID) dat na sbernici. Nektere MCU s devatym bitem umi specialne nakladat (treba vyvolani preruseni jen tehdy, je-li nastaven) atd.
de omnibus dubitandum est

Uživatelský avatar
AB1
Příspěvky: 312
Registrován: 23 lis 2009, 01:00

#9 Příspěvek od AB1 »

Princip jsem asi pochopil Rx z master čipu jde na všechny Tx slave čipů
Propojit galvanicky výstupy Tx asi není moc dobré.

Uživatelský avatar
sewerman_cz
Příspěvky: 289
Registrován: 13 úno 2011, 01:00
Bydliště: Brno
Kontaktovat uživatele:

#10 Příspěvek od sewerman_cz »

Měl jsem na mysli tu 9-bitovou komunikaci, ale nikde jsem nenašel nic víc než to co je napsána v DS.
Master by měl odeslat v prvním přenosu adresu požadovaného zařízení (9bit v log1) a poté už komunikuje pouze s mcu se spravnou adresou (9 bit v log 0)
V podstatě všechny slave čekají dokud jim nepříjde jejich adresa. Všechnu ostatní komunikaci vypouští.

Základ, ale byl že jsem hledal nějakou sběrnici po které by mohlo jednoduše komunikovat několik mcu a každý z nich by mohl tu komunikaci zahájit.

Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#11 Příspěvek od Andrea »

Tak použij třeba RS-485.

Uživatelský avatar
sewerman_cz
Příspěvky: 289
Registrován: 13 úno 2011, 01:00
Bydliště: Brno
Kontaktovat uživatele:

#12 Příspěvek od sewerman_cz »

A nějaké nakopnutí k RS-485 by bylo?

Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#13 Příspěvek od Andrea »

Google nefunguje?

Uživatelský avatar
Panda38
Příspěvky: 713
Registrován: 21 lis 2012, 01:00
Bydliště: Most, Praha, Lanžhot
Kontaktovat uživatele:

#14 Příspěvek od Panda38 »

Tam ale také není podpora aby mohl zahájit kdokoliv komunikaci.

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?

Uživatelský avatar
sewerman_cz
Příspěvky: 289
Registrován: 13 úno 2011, 01:00
Bydliště: Brno
Kontaktovat uživatele:

#15 Příspěvek od sewerman_cz »

Google funguje, ale zatím se mi nepodařilo najít nějaký příklad s více mcu.

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“