This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| et:examples:communication:ethernet [2015/02/26 14:23] – raivo.sell | et:examples:communication:ethernet [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ~~PB~~ | + | < |
| ====== Ethernet ====== | ====== Ethernet ====== | ||
| Line 9: | Line 9: | ||
| [{{ : | [{{ : | ||
| - | Ethernet on põhiline juhtmetega kohtvõrgu (inglise keeles //Local Area Network//, lühend LAN) tehnoloogia, | + | Ethernet on põhiline juhtmetega kohtvõrgu (inglise keeles //Local Area Network//, lühend LAN) tehnoloogia, |
| - | Ethernet | + | Etherneti standard |
| - | + | ||
| - | Algusaegadel kasutati Etherneti ülesehitamiseks koksiaalkaableid, | + | |
| - | Etherneti-põhised süsteemid jagavad | + | Ethernetil baseeruvas lokaalvõrgus jagatakse |
| + | |||
| + | IP ehk võrgukihi protokollil põhineb internet. Täpsemalt on see reeglistik, mida järgitakse pakettide saatmisel võrguseadmete vahel. IP paketti päises paikneb lisaks muudele andmetele ka 32-bitine IP aadress mille järgi toimub kõigi internetti püsivalt ühendatud seadmete identifitseerimine. Tänasel päeval on IP protokolli 32-bitisest aadressiruumist (~4 miljardit aadressi) väheks jäänud ja seepärast on seda asendamas IPv6, milles aadressiruum on 64-bitine. IPv6 tulekust sõltub veel asjadeinterneti (inglise keeles //Internet of Things//, lühend IoT) laiem levik, kuna kõik need " | ||
| + | |||
| + | IP paketi saatmisel puudub kontroll, kas see ikka jõudis kohale. Probleemi lahendamiseks arendati välja TCP protokoll, mille transpordikihiks on IP pakett. TCP pakett paikneb seega IP paketi sees. TCP on kui ühendus otspunktide vahel (näiteks kliendi ja serveri vahel). Andmevahetuse alguses saadab klient serverile ühenduse loomise soovi. Sellele vastab server paketiga ja saadab omakorda kliendile paketi sooviga luua ühendus. Kui klient selle soovi kinnitab, siis on ühendus kahe otspunkti vahel loodud ja saab alustada andmete vahetamisega. | ||
| + | |||
| + | TCP protokoll loob omakorda võimaluse erinevate andmete jaoks erinevaid porte (kanaleid) kasutada. Üks port, mis kannab nime HTTP ja numbrit 80, paneb aluse //World Wide Web//-ile (WWW). HTTP pordi kaudu edastatakse hüperteksti markeerimiskeelt (inglise keeles //HyperText Markup Language//, lühend HTML), mida kuvavad veebibrauserid. HTTP klient, ehk veebibrauser peab HTTP serverile edastama tekstikujul päringu " | ||
| - | Etherneti kasutatakse peamiselt veebilehtede edastamiseks serverilt kliendi veebilehitsejale. Mikrokontrolleril on võimalik realiseerida lihtsaid veebilehti, mille kaudu on omakorda võimalik muuta kontrolleri sisend-väljund viike või lugeda nendest infot. Lihtsamad veebilehed on realiseeritud HTML kirjelduskeele abil, mida veebilehitsejad (inglise keeles // | ||
| <code html> | <code html> | ||
| < | < | ||
| Line 30: | Line 33: | ||
| </ | </ | ||
| + | Hoolimata hulgast protokollidest mida on vaja veebilehe edastamiseks on seda Ethernet liidese olemasolul võimalik teha ka mikrokontrolleriga, | ||
| ===== Praktika ===== | ===== Praktika ===== | ||
| Line 49: | Line 53: | ||
| // ENC28J60 seadistamine | // ENC28J60 seadistamine | ||
| enc28j60Init(mac); | enc28j60Init(mac); | ||
| - | | + | // Vaikimisi clkout 6,25 MHz muutmine 12,5 MHz |
| - | hw_delay_ms(12); | + | enc28j60clkout(2); |
| + | hw_delay_ms(12); | ||
| | | ||
| // Magjack LED-ide seadistamine (vaata enc28j60 andmelehte, lehekülg 11) | // Magjack LED-ide seadistamine (vaata enc28j60 andmelehte, lehekülg 11) | ||
| // LEDB = kollane, LEDA = roheline | // LEDB = kollane, LEDA = roheline | ||
| // 0x476 on PHLCON LEDA = ühenduse staatus, LEDB = vastuvõtmine või edastamine | // 0x476 on PHLCON LEDA = ühenduse staatus, LEDB = vastuvõtmine või edastamine | ||
| - | // enc28j60PhyWrite(PHLCON, | ||
| enc28j60PhyWrite(PHLCON, | enc28j60PhyWrite(PHLCON, | ||
| hw_delay_ms(12); | hw_delay_ms(12); | ||
| - | // Etherneti/ip kihtide seadistamine: | + | // Etherneti/IP kihtide seadistamine |
| init_ip_arp_udp_tcp(mac, | init_ip_arp_udp_tcp(mac, | ||
| } | } | ||
| Line 81: | Line 85: | ||
| } | } | ||
| - | // Vastuvõetud andmepaketist URL-i tuvastamine | + | // Vastuvõetud andmepaketist URL-i tuvastamine |
| - | // Pingile | + | |
| uint16_t ethernet_analyse_packet(uint8_t *buf, | uint16_t ethernet_analyse_packet(uint8_t *buf, | ||
| { | { | ||
| Line 94: | Line 97: | ||
| Näide on mõeldud lihtsa veebiserveri loomiseks. Allpool toodud näiteprogramm loob IP aadressile 192.168.1.100 veebilehe, millel oleva lingi kaudu on võimalik lülitada sisse ja välja Kontrollermoodulil olevat LED-i. Selleks töödeldakse URL-is olevat informatsiooni, | Näide on mõeldud lihtsa veebiserveri loomiseks. Allpool toodud näiteprogramm loob IP aadressile 192.168.1.100 veebilehe, millel oleva lingi kaudu on võimalik lülitada sisse ja välja Kontrollermoodulil olevat LED-i. Selleks töödeldakse URL-is olevat informatsiooni, | ||
| + | < | ||
| <code c> | <code c> | ||
| // Kodulabori Etherneti kasutamise näidisprogramm | // Kodulabori Etherneti kasutamise näidisprogramm | ||
| - | // Kodulabor | + | // Kodulabor |
| #include < | #include < | ||
| #include < | #include < | ||
| Line 132: | Line 135: | ||
| // Lõputu tsükkel | // Lõputu tsükkel | ||
| - | while(1) | + | while (1) |
| { | { | ||
| // Pakettide muutmine, kuni endale määratud andmetega paketi saamiseni | // Pakettide muutmine, kuni endale määratud andmetega paketi saamiseni | ||
| Line 167: | Line 170: | ||
| gPlen=ethernet_load_webpage(pin_get_value(LED1)); | gPlen=ethernet_load_webpage(pin_get_value(LED1)); | ||
| - | // Varem valmis laetud | + | // Varem valmis laetud |
| ethernet_print_webpage (buf, | ethernet_print_webpage (buf, | ||
| } | } | ||
| Line 189: | Line 192: | ||
| else | else | ||
| | | ||
| + | |||
| // " | // " | ||
| plen=ethernet_load_data(buf, | plen=ethernet_load_data(buf, | ||