Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2015:enc28j60

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
2015:enc28j60 [2016/01/15 20:31]
Martin Štěpnička [Popis funkce]
2015:enc28j60 [2016/01/16 02:41] (aktuální)
Martin Štěpnička [Zdrojový kód]
Řádek 33: Řádek 33:
 Po zapnutí dojde k inicializaci kitu ENC28J60 a program otevře server který čeká na 23 portu (telnet) na spojení. Pokud dojde k připojení klienta, server odešle uvítací zprávu a čeká na příkazy. Možné příkazy jsou následovné:​ Po zapnutí dojde k inicializaci kitu ENC28J60 a program otevře server který čeká na 23 portu (telnet) na spojení. Pokud dojde k připojení klienta, server odešle uvítací zprávu a čeká na příkazy. Možné příkazy jsou následovné:​
  
-  * help - zobrazí nápovědu +  ​* **help** - zobrazí nápovědu 
-  * color RRGGBB - rozsvítí RGB diodu barvou odpovídající HEXa barevnému kódu (jednotlivé intenzity barev jsou 8bitové) +  ​* **color** RRGGBB - rozsvítí RGB diodu barvou odpovídající HEXa barevnému kódu (jednotlivé intenzity barev jsou 8bitové) 
-  * stop - zhasne RGB diodu +  ​* **stop** - zhasne RGB diodu 
-  * exit - ukončí spojení a čeká na dalšího klienta+  ​* **exit** - ukončí spojení a čeká na dalšího klienta
  
-V programu je možné definicí preprocesorové proměnné #DHCP přepínat mezi IP adresou statickou nebo IP adresou získávanou z DHCP serveru.+V programu je možné definicí preprocesorové proměnné ​//#DHCP// přepínat mezi IP adresou statickou nebo IP adresou získávanou z DHCP serveru.
 ===== Demonstrace ===== ===== Demonstrace =====
 Následující video ukazuje funkčnost projektu. Jsou použity dvě náhodně vygenerované barvy pro ověření správného zobrazení: Následující video ukazuje funkčnost projektu. Jsou použity dvě náhodně vygenerované barvy pro ověření správného zobrazení:
Řádek 74: Řádek 74:
 #endif #endif
    
-//​prototypes+//​prototypes ​and global variables
 void print_line(string text); void print_line(string text);
 +EthernetClient client;
    
 //MAC address //MAC address
Řádek 81: Řádek 82:
 const uint16_t ​ MY_PORT = 23; const uint16_t ​ MY_PORT = 23;
 EthernetServer ​ server = EthernetServer(MY_PORT);​ EthernetServer ​ server = EthernetServer(MY_PORT);​
-EthernetClient client; 
  
 int main(void) int main(void)
Řádek 115: Řádek 115:
         uint8_t size;         uint8_t size;
         char buffer[256];​         char buffer[256];​
-        char color[2]; 
         ​         ​
         if (client = server.available())         if (client = server.available())
Řádek 138: Řádek 137:
                     //color setting ​                   ​                     //color setting ​                   ​
                     if (strncmp(buffer,​ "​color",​5) == 0)                     if (strncmp(buffer,​ "​color",​5) == 0)
-                    {  +                    {                     ​ 
-                     +                        char color[2]; ​   ​ 
-                        uint8_t ​red,​green,​blue+                        uint8_t ​col                                            
-                        sprintf(color,​ "​%c%c",​buffer[6],​buffer[7]); ​                    ​ +                        ​ 
-                        sscanf(color,​ "​%x",​ &red); +                        sprintf(color,​ "​%c%c",​buffer[6],​buffer[7]); ​//get HEX char                    ​ 
-                        sprintf(color,​ "​%u", ​red); +                        sscanf(color,​ "​%x",​ &col);  
-                        rled = (float)(~atoi(color) & 0xff)/255;+                        sprintf(color,​ "​%u", ​col); // convert to DEC number 
 +                        rled = (float)(~atoi(color) & 0xff)/​255; ​// inverse number, set value to PWM between 0-1
                         ​                         ​
                         sprintf(color,​ "​%c%c",​buffer[8],​buffer[9]); ​                                             sprintf(color,​ "​%c%c",​buffer[8],​buffer[9]); ​                    
-                        sscanf(color,​ "​%x",​ &green); +                        sscanf(color,​ "​%x",​ &col); 
-                        sprintf(color,​ "​%u", ​green);+                        sprintf(color,​ "​%u", ​col);
                         gled = (float)(~atoi(color) & 0xff)/​255;  ​                         gled = (float)(~atoi(color) & 0xff)/​255;  ​
                                                                                            
                         sprintf(color,​ "​%c%c",​buffer[10],​buffer[11]); ​                                             sprintf(color,​ "​%c%c",​buffer[10],​buffer[11]); ​                    
-                        sscanf(color,​ "​%x",​ &blue); +                        sscanf(color,​ "​%x",​ &col); 
-                        sprintf(color,​ "​%u", ​blue);+                        sprintf(color,​ "​%u", ​col);
                         bled = (float)(~atoi(color) & 0xff)/​255; ​                                             bled = (float)(~atoi(color) & 0xff)/​255; ​                    
- 
                     }                     }
                     //turning off all LEDs                     //turning off all LEDs
Řádek 179: Řádek 178:
                     {                                    {               
                         client.write((uint8_t*)">​ ", 2);                         client.write((uint8_t*)">​ ", 2);
-                    }                                                         +                    }                                                          
-                    ​+
                  }                  }
                  ​client.stop();​                  ​client.stop();​
Řádek 197: Řádek 195:
 } }
 </​code>​ </​code>​
- 
- 
 ===== Závěr ===== ===== Závěr =====
 Zadaní projektu bylo kompletně splněno a vše je funkční tak jak má být. Během řešení jsem neměl s ničím problém a na zadání jsem byl dostatečně připraven jak z předchozích zkušeností tak z předmětu MPOA. \\  Zadaní projektu bylo kompletně splněno a vše je funkční tak jak má být. Během řešení jsem neměl s ničím problém a na zadání jsem byl dostatečně připraven jak z předchozích zkušeností tak z předmětu MPOA. \\ 
 Velikou výhodou bylo nalezení již hotové knihovny k řadiči ENC28J60. Bez toho bych byl nucen strávit několik dní studiem datasheetu k obvodu a následným experimentováním. Použití HEXa barevného kódu pro nastavování barvy mi přijde jako zajímavé řešení, kterým je využit celý rozsah možností RGB LED diody. Velikou výhodou bylo nalezení již hotové knihovny k řadiči ENC28J60. Bez toho bych byl nucen strávit několik dní studiem datasheetu k obvodu a následným experimentováním. Použití HEXa barevného kódu pro nastavování barvy mi přijde jako zajímavé řešení, kterým je využit celý rozsah možností RGB LED diody.
2015/enc28j60.1452886310.txt.gz · Poslední úprava: 2016/01/15 20:31 autor: Martin Štěpnička