25-MOD_ETH-Library (ATMega)

-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 :

UB_EXT_MOD_ETH_v300

2 Antworten auf 25-MOD_ETH-Library (ATMega)

  1. Dennis sagt:

    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

    • admin_ub sagt:

      bei mir geht das runterladen. zu deinem Fehler kann ich nichts sagen.


Wie hat Dir dieser Artikel gefallen?

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Noch keine Bewertungen)
Loading...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.