Jednoduchá jednosmerná komunikácia dvoch PIC

Zdravim. Rad by som “donutil” dva mikrokontrolery spolu komunikovat. Ide o jednosmernu komunikaciu (zatial). Jedina myslienka bola urobit to na zaklade casu vysielanie signalu “1”. Teda, prvy PIC na nejakom porte nahodi 1-tku druhy PIC na pine spojenom s tym pinom kde je jednotka zacne merat cas, pokial sa ta jednotka nezmeni na “0”. A na zaklade toho kolko namera sa budu volat podprogramy. Nooo neviem ci je to najstastnejsie riesenie. Ak mi moze niekto pomoct co uz to robil, bol by som velmi rad. Dakujem :slight_smile:
PS: Dufam, ze som to vysvetlil zrozumitelne, ale radsej privitam nejake ine riesenie :slight_smile:

:arrow_right: administrator: přejmenováno z "Komunikacia dvoch PIC"

Proč nepoužiješ nějaké komunikační rozhraní, ktrerých má procesor několik? Nejjednodušší je uart. Na obo stranách nastavíš stejnou rychlost, zapneš a to je vše. Pak už stačí jen poslat data. Druhý je přijme a zpracuje. Na jednosměrnou komunikaci ti stačí také 1 vodič (TX vysílače připojit na RX přijímače).

CAu, tak jak udelat komunikaci nezi 2 PICama je vic (nepises o jakej de typ), treba UART,I2C, SPI, IR,Bluetooth, nebo budes vysilat jenom impulzy a na druhy strane je pocitat, zalezi k cemu je ta komunikace urcena ,

Nooo ten co bude dostavat udaje bude najpravdepodobnejsie 16F88. A ten co bude vysielat este neviem. Nie je hotovy este cely projekt. To som nevedel ze to ma v sebe komunikacne rozhranie. Idem si to nastudovat, ak sa zaseknem, ozvem sa :slight_smile: Ide o to, ze jeden procesor bude riadit 3 dalsie, ktore budu mat v rezii 24 RGB diod :slight_smile:

Pro řízení více procesorů je více variant.
UART v 9-bit režimu, SPI (vybraný procesor určuje pin SS - slave select), I2C.
To I2C bude pro tebe asi nejvhodnější. Už ve svém protokolu obsahuje adresu a řízení toku, je určeno právě pro komunikaci několika obvodů v zařízení.

Ak budes chciet silou mocou len jeden komunikacny vodic tak sa da pouzit 1wire od dalasu nevyhodou je casovanie a odrusenie zbernice.
Doporucujem nieco co pouzije dva vodice jeden na data a jeden na hodiny res 3 lebo aj gnd nepises vzdialenosti na ktore to ma behat…

Mam 4 vodice k dispozicii. 2 na napajanie a 2 na data (ako USB :smiley: ) Vzdialenost. nooo najdlhsia je cca 10m a najkratsia asi 2m.

10m už není úplně zanedbatelná vzdálenost, ale I2C by při použití nižší rychlosti stále mělo běhat. Vhodnější by ovšem už byla rs485, která má diferenciální přenos a 2 datové vodiče(kroucená dvoulinka) jí také stačí.

Mám odskoušenou I2C na cca 11m, měřím jedno vzdálené teplotní čidlo. Na 400khz to nechtělo fungovat, ale na 100khz to jede v pohodě.

Nikde som sa nedocital, ci tie procesory musia bezat na rovnakej frekvencii. 100khz neprichadza do uvahy. Okrem komunikacie to musi zvladat PWM regulaciu 24 LED diod. Takze najprv skusim 8Mhz a ked bude malo, tak krystal.

to je mysleno jako rychlost zbernice ,ne procesoru, prosesor ti pak muze bezet na kolika MHz chces i kazdej na jiny (samo v ramci technickych moznosti) :wink:

jaaaaj. No, super super. Potom to moze tak byt. :slight_smile: Uvidime jak to dopadne. Moj vlastny programator je totiz este na ceste. Dojde az v januari, takze potom sa s tym budem trapit.

Uz som sa do toho pustil a spojazdnil som komunikaciu AUSART. I2C som zatial nerozbehal a ani sa nejak nechystam. Len potrebujem vediet, ci AUSART dokaze komunikovat aspon na tych 10m, mate nejake skusenosti ?? Na frekvencii az tak velmi nezalezi, ale kolko maximalne vam slo ? Dakujem :slight_smile:

USART je pouze komunikační protokol. Neřeší vzdálenost, pouze formát přenášených dat (datový rámec = počet přenášených bytů, start-bit, stop-bit, parita …).
Vzdálenost řeší způsob propojení zařízení mezi sebou (I2C, RS-232, RS-485 …). Je to otázka spolehlivosti přenosu v rušivém prostředí. Vlastnosti, výhody a nevýhody jednotlivých způsobů jsou velmi dobře vysvětleny i v datasheetech jednotlivých mikrořadičů.

Doporučuji výborný článek zde: hw.cz/rs-232

Vl.

Stranka je super, aj ked ma velmi nepohla,… Vyrozumel som z toho, ze budem potrebovat este nejakeho chrobaka na RS485, alebo RS232, comu by som sa ale rad vyhol. I2C komunikacia by teoreticky mala byt funkcna pre moje ucely, ale problem je ze ani cesky ani slovensky DS mi nepomaha :smiley: :smiley: :smiley: Boli by ste niekto taky laskavy a upol tu nejaky vas funkcny program kde ste pouzili I2C, lebo absolutne mi nie je jasny system komunikacie cez tento protokol,… :frowning: Dakujem.

INKOGNITTO, nejsem si jist, zda si rozumíme. I2C byla původně navržena firmou Phillips jako komunikační sběrnice v jejich televizních přijímačích. Rozhodně neplánovali, že by se signály sběrnice tahaly mimo základní desku. Pokud to chceš risknout, nic proti tomu. Ale opakuji - pro komunikaci mezi zařízeními do cca 10m slouží sběrnice RS-232, která je mnohem odolnější proti rušení a pro větší vzdálenosti pak RS-485.
Ten “chrobák”, kterému se zuby nehty bráníš, stojí v nejlevnějším provedení okolo 10,- Kč. K tomu ještě čtyři kondenzátory 0,1uF asi po koruně. Totéž na přijímací straně.

Opravdu Ti investice cca 30,- Kč nestojí za spolehlivý přenos?

Vl.

Cau, myslim ze Honza3 tady uz par prikladu uvadel, tak skus pohledat , nebo hw.cz/teorie-praxe/navrhy-vyvojare/art1922-strucny-popis-sbernice-i2c-jeji-prakticke-vyuziti-k-pripojeni-e

v peniazoch absolutne nie je problem, len sa to snazim vyrobit tak, aby som v skatulke zabral co najmenej miesta, lebo sa bojim ako sa mi to tam vsetko zmesti, preto som sa chcel vyhnut dalsiemu integracu, ale ako vidim tak sa mi to nepodari :smiley: :smiley:

Nasiel som si riesenie, ktore by mi snad aj vyhovovalo.
schemu si predstavujem nejak takto
extremeelectronics.co.in/pic … ematic.gif
to znamena, ze dorobim chrobaka, ktory bude zabezpecovat komunikaciu. Len si este neviem celkom technicky presne predstavit, ako budem komunikovat na jednej dojlinke s 3 procesormi.

:arrow_right: administrator: přiloženy externí soubory
pic18f4520_usart_schematic.gif

No, však to je klasika - jako z datasheetu :slight_smile:.
V čem je problém? Toto je odzkoušené a funguje to.
Nevidím tam nikde ty tři procesory. Jak to má fungovat?
Vl.