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
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#16 Příspěvek od Andrea »

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?
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.

Jenda_KL
Příspěvky: 1173
Registrován: 10 zář 2008, 02:00
Bydliště: Kadaň
Kontaktovat uživatele:

#17 Příspěvek od Jenda_KL »

AB1 píše:Propojit galvanicky výstupy Tx asi není moc dobré.
Spojím všechny RX a k nim přes R-D připojím všechny TX a mám síť hotovou včetně možnosti poznat kolizi, kde může klábosit každý s každým. Vše ostatní je už o schopnostech programátora.

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

#18 Příspěvek od sewerman_cz »

Jenda_KL píše:
AB1 píše:Propojit galvanicky výstupy Tx asi není moc dobré.
Spojím všechny RX a k nim přes R-D připojím všechny TX a mám síť hotovou včetně možnosti poznat kolizi, kde může klábosit každý s každým. Vše ostatní je už o schopnostech programátora.
Tomu nerozumím?
Co je R-D? Odpr a dioda?

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

#19 Příspěvek od WLAB »

sewerman_cz píše:A nějaké nakopnutí k RS-485 by bylo?
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.
de omnibus dubitandum est

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

#20 Příspěvek od WLAB »

R-D? pocitam, ze chce takto udelat z TX vystupu misto push-pull OC. R je pak pull-up. Ovsem vlastnosti takove fyzicke vrstvy budou bidne, pro neco rozsahlejsiho nepouzitelne. To by bylo lepsi pak v takovem pripade misto R-D pouzit budic fyzicke vrstvy CANu.
de omnibus dubitandum est

Jenda_KL
Příspěvky: 1173
Registrován: 10 zář 2008, 02:00
Bydliště: Kadaň
Kontaktovat uživatele:

#21 Příspěvek od Jenda_KL »

[budič CANu]
nějaký konkrétní?

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

#22 Příspěvek od WLAB »

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

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

#23 Příspěvek od Andrea »

Třeba 82C251.

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

#24 Příspěvek od sewerman_cz »

Po prostudování základních informací ohledně RS485 bych se chtěl zeptat.
UART 9-bit komunikace - kde se ve slave ukládá jeho adresa? Uložím adresu do proměnné a poté kontroluji přijatá data z UART a kontroluji zda souhlasí adresa?
RS485
Obrázek
Nepochopil jsem k čemu slouží /RE a DE když je stejně spojuji?

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

#25 Příspěvek od sewerman_cz »

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.

Uživatelský avatar
Niki31
Zablokován
Zablokován
Příspěvky: 131
Registrován: 05 črc 2008, 02:00

#26 Příspěvek od Niki31 »

I2C podporuje rezim multimaster.Vyhladaj si specifikacie.

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

#27 Příspěvek od sewerman_cz »

Niki31 píše:I2C podporuje rezim multimaster.Vyhladaj si specifikacie.
I2C je ale pro komunikaci na krátkou vzdálenost. Nebo ne?

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

#28 Příspěvek od WLAB »

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.
de omnibus dubitandum est

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

#29 Příspěvek od sewerman_cz »

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]

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

#30 Příspěvek od WLAB »

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....
de omnibus dubitandum est

Odpovědět

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