-diese Library dient zum ansteuern eines externen Moduls
mit einem ENC28J60 Ethernet-IC.
-im Moment sind nur die Protokolle “ARP,ICMP,UDP” implementiert
-mit einem mitgelieferten PC-Programm können Daten per UDP-Protokoll ausgetauscht werden.
-das IC ist an den SPI-Bus angeschlossen,
aus dem Grund wird auch der SPI-Treiber
“MK3_2560_SPI.h” benötigt
Funktionen :
1 2 3 4 5 6 7 | void EXT_INIT_ETH(void); // zum init des ENC28J60 void EXT_ETH_START(void); // Ethernet aktivieren void EXT_ETH_RESET(void); // reset vom ENJ28J60 void EXT_ETH_POLL(void); // Polling-Betrieb : Check ob Daten vorhanden bool EXT_ETH_UDP_IN(char *ptr); // check ob UDP-String empfangen void EXT_ETH_UDP_OUT(const char *ptr); // String per UDP senden bool EXT_ETH_CHECK_HOST(void); // check ob Host auf ARP antwortet |
Beispiel :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | //----------------------------------------------------------------------------- // Title : bsp_ub039_mk3_ext_eth2 //----------------------------------------------------------------------------- // Funktion : Externes Modul : Ethernet-Modul mit ENC28J60 // Schaltung : myAVR MK3 + ETH-Modul //----------------------------------------------------------------------------- // Prozessor : ATMega2560 // Takt : 16 MHz // Sprache : C // Date : 16.12.2011 // Version : 1.0 // Autor : UB //----------------------------------------------------------------------------- #define F_CPU 16000000 #include <avr/io.h> #include <ub_mk3_2560/MK3_2560_LCD.h> #include <ub_ext_module/EXT_MOD_ETH.h> //----------------------------------------------------------------------------- // Hinweis : Quick-Jumper Port-C+A muss gesetzt sein // - das Ethernet-Modul muss angeschlossen sein // - das Programm zeigt die eigene IP-Adresse an // und muss auf einen "PING" von einem PC antworten // - die Anzahl der gesendeten und aller empfangenen Packete // wird auch angezeigt //----------------------------------------------------------------------------- int main (void) { unsigned int wert=0; MK3_INIT_LCD(); // init des LCD MK3_LCD_CLEAR(); // LCD loeschen MK3_LCD_LIGHT(true); // beleuchtung einschalten MK3_LCD_STRING_AT(0,0,"ETH-Modul Test:02"); // Init vom ENC28J60 EXT_INIT_ETH(); if(ENC28J60.status_ok==true) { // starten vom Ethernet-Modul EXT_ETH_START(); MK3_LCD_STRING_AT(0,16,"ENC28J60 OK"); if(USE_ETH_INTMODE==1) { MK3_LCD_STRING_AT(0,24,"Interrupt-Mode"); } else { MK3_LCD_STRING_AT(0,24,"Polling-Mode"); } MK3_LCD_STRING_AT(0,40,"myIP="); MK3_LCD_PRINT_UTYP(ETH_Setting.own_ip[0],DEZ_U0); MK3_LCD_PRINT_STRING("."); MK3_LCD_PRINT_UTYP(ETH_Setting.own_ip[1],DEZ_U0); MK3_LCD_PRINT_STRING("."); MK3_LCD_PRINT_UTYP(ETH_Setting.own_ip[2],DEZ_U0); MK3_LCD_PRINT_STRING("."); MK3_LCD_PRINT_UTYP(ETH_Setting.own_ip[3],DEZ_U0); } else { MK3_LCD_STRING_AT(0,16,"ENC28J60 Error"); MK3_LCD_STRING_AT(0,24,"> Hardware pruefen !"); MK3_LCD_STRING_AT(0,56,"Modul ohne Funktion"); } while (true) { if(ENC28J60.status_ok==true) { // wenn alles OK if(USE_ETH_INTMODE!=1) { // im Polling-Betrieb EXT_ETH_POLL(); } // Anzahl der TX und RX Packete anzeigen wert=ENC28J60.tx_packete; MK3_LCD_STRING_AT(0,56,"TX="); MK3_LCD_PRINT_UTYP(wert,DEZ_U0); wert=ENC28J60.rx_packete; MK3_LCD_STRING_AT(45,56,"RX="); MK3_LCD_PRINT_UTYP(wert,DEZ_U0); wert=ENC28J60.rx_unknonwn; MK3_LCD_STRING_AT(90,56,"?="); MK3_LCD_PRINT_UTYP(wert,DEZ_U0); } } return 0; } |
Hier die Library zum download :
Hi deine UB_EXT_MOD_ETH_v300 lässt sich leider nicht herunterladen.
Desweiteren habe ich schon deine TWI Lib zum Ansteuerung von mehreren CPU`s verwendet. Klappt soweit sehr gut ich habe lediglich noch das Problem das mein Master (AVR32bit C-Control) leider nicht zu meinen Slav`s (Mega8A) schreiben kann. Weis leider nicht mehr weiter woran das noch liegen könnte den das Lesen vom Slave funktioniert tadellos.
MFG
bei mir geht das runterladen. zu deinem Fehler kann ich nichts sagen.