Stránka 2 z 3

Napsal: 19 úno 2013, 20:40
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.

Napsal: 19 úno 2013, 20:43
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.

Napsal: 19 úno 2013, 20:51
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?

Napsal: 19 úno 2013, 21:37
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.

Napsal: 19 úno 2013, 21:42
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.

Napsal: 19 úno 2013, 22:01
od Jenda_KL
[budič CANu]
nějaký konkrétní?

Napsal: 19 úno 2013, 22:14
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.

Napsal: 19 úno 2013, 22:16
od Andrea
Třeba 82C251.

Napsal: 20 úno 2013, 08:03
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?

Napsal: 20 úno 2013, 12:00
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.

Napsal: 20 úno 2013, 15:17
od Niki31
I2C podporuje rezim multimaster.Vyhladaj si specifikacie.

Napsal: 20 úno 2013, 15:21
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?

Napsal: 20 úno 2013, 17:57
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.

Napsal: 20 úno 2013, 20:51
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]

Napsal: 20 úno 2013, 22:49
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....