This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| et:examples:communication:ethernet [2015/03/03 12:04] – 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 15: | Line 15: | ||
| Ethernetil baseeruvas lokaalvõrgus jagatakse andmevood väiksemateks kaadriteks (inglise keeles //frame//). Iga kaader peab sisaldama saatja ja vastuvõtja MAC aadressi ja andmeid veakontrolliks. MAC aadress on unikaalne 48-bitine võrguseadmele tootja poolt antud number. Etherneti kaadri keskosas on piirkond ülekantavate andmete jaoks. Andmed võivad sisaldada teiste protokollide kaadreid, nagu näiteks IP protokolli (inglise keeles //Internet Protocol// | Ethernetil baseeruvas lokaalvõrgus jagatakse andmevood väiksemateks kaadriteks (inglise keeles //frame//). Iga kaader peab sisaldama saatja ja vastuvõtja MAC aadressi ja andmeid veakontrolliks. MAC aadress on unikaalne 48-bitine võrguseadmele tootja poolt antud number. Etherneti kaadri keskosas on piirkond ülekantavate andmete jaoks. Andmed võivad sisaldada teiste protokollide kaadreid, nagu näiteks IP protokolli (inglise keeles //Internet Protocol// | ||
| - | 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 | + | 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 |
| 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. | 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. | ||
| Line 33: | Line 33: | ||
| </ | </ | ||
| - | Hoolimata hulgast | + | Hoolimata hulgast |
| ===== Praktika ===== | ===== Praktika ===== | ||
| Line 53: | 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 85: | 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 98: | 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, | ||
| - | ~~PB~~ | + | < |
| <code c> | <code c> | ||
| // Kodulabori Etherneti kasutamise näidisprogramm | // Kodulabori Etherneti kasutamise näidisprogramm | ||
| - | // Kodulabor | + | // Kodulabor |
| #include < | #include < | ||
| #include < | #include < | ||
| Line 193: | Line 192: | ||
| else | else | ||
| | | ||
| + | |||
| // " | // " | ||
| plen=ethernet_load_data(buf, | plen=ethernet_load_data(buf, | ||