Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
et:examples:communication:ethernet [2015/02/26 14:23] raivo.sellet:examples:communication:ethernet [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
-~~PB~~+<pagebreak>
 ====== Ethernet ====== ====== Ethernet ======
  
Line 9: Line 9:
  
 [{{ :examples:communication:ethernet:ethernet.png|Etherneti port}}] [{{ :examples:communication:ethernet:ethernet.png|Etherneti port}}]
-Ethernet on põhiline juhtmetega kohtvõrgu (inglise keeles //Local Area Network//, lühend LAN) tehnoloogia, mille kaudu on omavahel ühendatud enamik maailma arvutitest moodustades nii Interneti. Seda tutvustati esmakordselt aastal 1980 ja aastast 1985 standardiseeriti kui IEEE 802.3.+Ethernet on põhiline juhtmetega kohtvõrgu (inglise keeles //Local Area Network//, lühend LAN) tehnoloogia, mille kaudu on omavahel ühendatud enamik maailma arvutitest moodustades niimoodi interneti. Seda tutvustati esmakordselt aastal 1980 ja aastast 1985 standardiseeriti kui IEEE 802.3.
  
-Ethernet määrab juhtmete ja pistikute tüübid, kirjeldab füüsilise signaali ülekande ning määrab andmevahetuse formaadi. Ethernet on aluseks võrguprotokollidele nagu TCP/IP, millega tagatakse Interneti ja muude võrkude toimimine. Selle standardid on tihedalt seotud OSI füüsilise kihiga, täites mudeli kahe alumise kihi (füüsiline kiht ja lülikiht) funktsioone. +Etherneti standard määrab juhtmete ja pistikute tüübid, kirjeldab füüsilise signaali ülekande ning määrab andmevahetuse formaadi. Selle standardid on tihedalt seotud OSI füüsilise kihiga, täites mudeli kahe alumise kihi (füüsiline kiht ja lülikiht) funktsioone. Algusaegadel kasutati Etherneti ülesehitamiseks koksiaalkaableid, mis vastasid standardile 10BASE5. Praegu kasutatakse nii vasest keerupaari kui ka fiiberoptilisi kaableid. Ethernet võimaldab andmevahetust kõikide kohtvõrku ühendatud seadmete vahel kiirustega 10 Mbit/s kuni 100 Gbit/s. Etherneti standard on ajas hästi püsinud ja suurimad alternatiivid on hoopis juhtmevabad võrgustandardid, nagu WiFi ja mobiilsidevõrgud.
- +
-Algusaegadel kasutati Etherneti ülesehitamiseks koksiaalkaableid, mis vastasid standardile 10BASE5. Praegu kasutatakse peamiselt keerupaari ja fiiberoptilisi kaableid. Ethernet võimaldab andmevahetust kõikide kohtvõrku ühendatud seadmete vahel kiirustega 10 Mbit/s kuni 10 Gbit/s.+
    
-Etherneti-põhised süsteemid jagavad andmevood väiksemateks kaadriteks (inglise keeles //frame//). Iga kaader peab sisaldama saatja ja vastuvõtja MAC aadressi ja andmeid veakontrolliks. Kaadri keskosas on piirkond ülekantavate andmete jaoks. Andmed võivad sisaldada teiste protokollide päiseid, nagu näiteks IP protokoll (inglise keeles //Internet Protocol//). Veakontroll on realiseeritud 32-bitise tsükkelkoodkontrolli meetodil, kus saatepoolel rakendatakse edastamisele kuuluvale andmeplokile 32-bitist polünoomi, mille tulemusena saadav kood lisatakse plokile. Vastuvõtupoolel rakendatakse andmeplokile sama polünoomi ja kui tulemused kokku langevad, loetakse andmeedastus õnnestunuks. +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//). Veakontroll on realiseeritud 32-bitise tsükkelkoodkontrolli meetodil, kus saatepoolel rakendatakse edastamisele kuuluvale andmeplokile 32-bitist polünoomi, mille tulemusena saadav kood lisatakse plokile. Vastuvõtupoolel rakendatakse andmeplokile sama polünoomi ja kui tulemused kokku langevad, loetakse andmeedastus õnnestunuks
 + 
 +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 "asjad" vajavad omale aadressi. Lisaks päisele sisaldab IP pakett veel saadetist, mis on andmeväli suvaliste andmete edastamiseks. 
 + 
 +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 "GET", veebilehe nime ja mõningad parameetrid ning vastuseks saadab server kliendile HTML keeles soovitud veebilehe. Allolev näide on lihtsast HTML keeles veebilehest, mis kuvab tervitusteksti, viida ja rohelist värvi tekstiosa.
  
-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 //browser//) kasutajale kuvavad. HTML on lihtne kirjelduskeel, mis kasutab dokumendi vormindamiseks erinevaid märgendeid (inglise keeles //tag//). Allolev näide on lihtsast veebilehest, mis kuvab tervitusteksti, viite ja rohelist värvi tekstiosa. 
 <code html> <code html>
 <!DOCTYPE html> <!DOCTYPE html>
Line 30: Line 33:
 </code>  </code> 
  
 +Hoolimata hulgast protokollidest mida on vaja veebilehe edastamiseks on seda Ethernet liidese olemasolul võimalik teha ka mikrokontrolleriga, sest kõik teised protokollid on realiseeritavad tarkvaras. Kasutades mikrokontrollerit veebiserverina on võimalik oma veebibrauserist muuta kontrolleri väljundeid või lugeda sisendite olekut.
  
 ===== Praktika ===== ===== Praktika =====
Line 49: Line 53:
     // ENC28J60 seadistamine      // ENC28J60 seadistamine 
     enc28j60Init(mac);     enc28j60Init(mac);
-    enc28j60clkout(2); // Vaikimisi clkout 6.25 MHz muutmine 12.5 MHz +    // Vaikimisi clkout 6,25 MHz muutmine 12,5 MHz 
-    hw_delay_ms(12); // 12 ms+    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,0b0000 0100 0111 01 10); 
     enc28j60PhyWrite(PHLCON,0x476);     enc28j60PhyWrite(PHLCON,0x476);
     hw_delay_ms(12); // 12ms     hw_delay_ms(12); // 12ms
  
-    // Etherneti/ip kihtide seadistamine:+    // Etherneti/IP kihtide seadistamine
     init_ip_arp_udp_tcp(mac,ip,MYWWWPORT);     init_ip_arp_udp_tcp(mac,ip,MYWWWPORT);
 } }
Line 81: Line 85:
 } }
  
-// Vastuvõetud andmepaketist URL-i tuvastamine  +// Vastuvõetud andmepaketist URL-i tuvastamine ja pingile vastamine
-// Pingile vastamine+
 uint16_t ethernet_analyse_packet(uint8_t *buf,uint16_t plen) uint16_t ethernet_analyse_packet(uint8_t *buf,uint16_t plen)
 { {
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, mis on eelnevalt salvestatud muutujasse //gPlen//. Otsitakse sealt LED-i olekut määravat tunnust "/1" või "/0" Veebilehe HTML kood asub eraldiseisvas funktsioonis //ethernet_load_webpage// kus see on PSTR makroga salvestatud kontrolleri programmimälusse. 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, mis on eelnevalt salvestatud muutujasse //gPlen//. Otsitakse sealt LED-i olekut määravat tunnust "/1" või "/0" Veebilehe HTML kood asub eraldiseisvas funktsioonis //ethernet_load_webpage// kus see on PSTR makroga salvestatud kontrolleri programmimälusse.
 +<pagebreak>
 <code c> <code c>
 // Kodulabori Etherneti kasutamise näidisprogramm // Kodulabori Etherneti kasutamise näidisprogramm
-// Kodulabor II ühendused: CS - PE0, SCK - PE1, MISO - PE2, MOSI - PE3+// Kodulabor III ühendused: CS - PE0, SCK - PE1, MISO - PE2, MOSI - PE3
 #include <string.h> #include <string.h>
 #include <homelab/module/ethernet.h> #include <homelab/module/ethernet.h>
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 veebileht kuvamine               +            // Varem valmis laetud veebilehe kuvamine               
             ethernet_print_webpage (buf,gPlen);                 ethernet_print_webpage (buf,gPlen);   
         }         }
Line 189: Line 192:
     else     else
      plen=ethernet_load_data(buf,plen,PSTR("<font color=\"#FF0000\"> ON</font>"));      plen=ethernet_load_data(buf,plen,PSTR("<font color=\"#FF0000\"> ON</font>"));
 +     
     // "Refresh" nupu laadimine     // "Refresh" nupu laadimine
     plen=ethernet_load_data(buf,plen,     plen=ethernet_load_data(buf,plen,
et/examples/communication/ethernet.1424960583.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0