Multiprocesorová komunikácia s 8051 od Diversant Software
Projekty > 8051 > Návody
232.NET - Serial RS232 Network
V praxi sa v súčasnej dobe čoraz častejšie stretávame s potrebou komunikácie viacerých mikroprocesorov navzájom. Situácia sa nám podstatne zjednodušuje integrovaným sériovým rozhraním RS232, CAN, I2C, Ethernet, prípadne iných komunikačných rozhraní. Sériový typ komunikácie je oproti paralelným formám podstatne jednoduchšie, pretože používa malý počet komunikujúcich vodičov. V praxi stačia na vytvorenie obojsmernej komunikácie 1 až 2 vodiče. Väčšina mikroprocesorov obsahuje integrované sériové komunikačné rozhranie RS232, preto sme sa rozhodli vytvoriť jednoduchý komunikačný model pre RS232. Ako základ sme si vzali technologicky vyspelejší a náročnejší Ethernet 802.3, ktorý je štandardom v oblasti počítačových sietí. Pre nás je podstatný samotný princíp komunikačného modelu. V tomto modeli má každý komunikujúci unikátnu MAC adresu ktorá ho jednoznačne identifikuje na fyzickej úrovni a IP adresu ktorá znova identifikuje zariadenie na logickej úrovni. K dátam ktoré sa odosielajú sa pripojí na začiatok dátovej oblasti blok ktorý obsahuje zdrojovú a cieľovú adresu. Na koniec tohoto bloku sa pripojí tzv. CRC kontrolný súčet, ktorý chráni prepravovaný blok dát pred poškodením pri transporte od zdroja k cieľu. Rovnaký model je použitý aj v tomto prípade. Zdrojová, cieľová adresa, veľkosť dátovej oblasti, CRC sú kvôli jednoduchej implementácii do 8051 len 8 bitové štruktúry. Podľa potreby je ich možné modifikovať. Takýmto spôsobom je možné vytvoriť komunikáciu nielen medzi dvojicou autonómnych systémov až do 1000m vzdialenosti a dokážeme jednoznačne identifikovať zdroj a cieľ komunikácie.
V našom prípade položku "SFD", "EtherType" nepoužijeme. Využijeme len "Preamble" identifikátor začiatku dátového paketu tzv. Tokenom "^" ktorý sme si zadefinovali ako štartovací znak, zdrojovú a cieľovú "MAC" adresu, dátovú oblasť "Payload" a kontrolný súčet "FCS" (Frame Check Sum) t.j. "CRC". Túto modifikovanú štruktúru budeme kvôli jednoduchosti programu odosielať pomocou funkcie putchar() a prijímať pomocou getchar(), prípadne vysielanie a príjem bude pre zvýšenie efektívnosti riadený prerušením. Celý program je napísaný v jazyku C s použitím RTX51 Full. S výhodou využíva oddelené prijímacie a vysielacie registre mikroprocesora S0CON, takže pregram je plne duplexný t.j. FDX. Pamäťové štruktúry paketu (Packet51) sú staticky umiestnené v pamäťovom priestore xdata. Štruktúra MessageToSend a ReceivedMessage sú umiestnené do pamäti pomocou výkonných funkcií operačného systému RTX51 Full os_get_block(), ktorý je už alokovaný pomocou funciie os_create_pool(). Odoslanie packetu sa uskutoční pomocou funkcie RTX51 os_send_message(). Možno sa niekomu môže zdať použitie funkcie os_send_message() ako zbytočné, ale funkcia obsahuje tzv. Buffer organizovaný ako (FIFO First-In First-Out) ktorý môže naraz zachytiť a spracovať až 8 správ v poradí ako prišli. Ako prvá je teda spracovaná tá správa ktorá čaká najdlhšie v rade, ktorá prišla ako prvá. K stiahnutiu sú k dispozícii dva varianty 232.NET, kde jeden používa RTX51 Tiny a druhý RTX51 Full.
Ethernet packet 802.3
Postup zapuzdrenia Ethernet rámca do IP Packet-u do vyšších vrstiev protokolov OSI modelu.
Podobná štruktúra Ethernet 802.3 je použitá aj v prípade komunikačného programu 232.NET, ktorý s výhodou používa všetky možnosti úspešného protokolu TCP/IP overeného praxou.
Program multiprocesorovej komunikácie s RTX51 Full si môžete stiahnúť kliknutím na nižšie uvedenú ikonu.
Program multiprocesorovej komunikácie s RTX51 Tiny si môžete stiahnúť kliknutím na nižšie uvedenú ikonu.
Aktualizácia údajov bola vykonaná dňa 28.11.2024.