Forum: Mikrocontroller und Digitale Elektronik ENC28J60 und HCS12


von Michael O. (ebito)


Lesenswert?

Hallo zusammen,

ich habe mir das ENC28J60-H von Olimex gekauft. Habe das ganze dann an 
meinen HCS12 (Dragon12-Board) angeschlossen.

Wenn ich ein Ethernet-Kabel vom ENC28J60 zum PC lege, geht die grüne LED 
an und die Orange blinkt gelegentlich (soweit so gut).

Wenn ich nun über SPI Daten an den Controller schicke gehen beide LEDs 
aus und der PC meldet, dass kein Ethernetkabel mehr angeschlossen sei.

Handelt es sich hier um einen Fehler in der Hardware oder doch eher in 
der Software?

Mein SPI Treiber:
1
void initSPI(void){
2
  
3
4
 uint i;
5
 
6
 DDRS = DDRS | 0xE0; /* SS, SCLK, MOSI outputs */
7
 WOMS = 0;
8
 
9
  
10
  SPI0CR1 = 0x56;
11
  
12
  SPI0CR2 = 0x18;
13
  SPI0BR = 0x00;
14
15
  
16
  i = SPI0SR;
17
  
18
  
19
  
20
  
21
}
22
23
uint SPIWrite(uchar * ptrBuffer, uint ui_Len)
24
{
25
  uint i,stat;
26
  
27
  stat= SPI0SR;
28
  
29
  if (ui_Len == 0)           // no data no send
30
    return 0;
31
32
    for (i=0;i<ui_Len;i++)
33
    {
34
      SPI0DR= *ptrBuffer++;     // load spi tx reg
35
      while(!(SPI0SR)){}   // wait for transmission to complete
36
    }
37
38
    return i;
39
}
40
41
42
43
uint SPIRead(uchar * ptrBuffer, uint ui_Len)
44
{
45
uint i,stat;
46
47
  stat= SPI0SR;
48
49
  for (i=0;i<ui_Len;i++)
50
  {
51
    SPI0DR= 0xff;                  // dummy transmit byte
52
    
53
   while(!(_SPI0SR.Bits.SPTEF)){}    
54
                         
55
    *ptrBuffer++ = SPI0DR;         // read data from SPI data reg, place into buffer
56
  }
57
  return i;
58
}

danke im vorraus

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.