Forum: Compiler & IDEs ATMEGA32 & ENC28J60 Kommunikationproblem


von Basti (Gast)


Lesenswert?

Hallo,

ich hab schon ein wenig programmiert. Auch auf einem ATMega. Doch jetzt 
komm ich nicht weiter. Ich habe mir zum üben und testen ein NET-I/O 
Board von Pollin bestellt. Nun wollte ich eine einfach Software dafür 
entwickeln. Angefangen habe ich damit, das ich die LEDs leuchten lassen 
wollte. Doch es funktioniert nicht. Und jetzt stellt sich mir die Frage 
warum nicht:


Initalisierung:

void enc_init(void)
{
  const uint8_t MAC_ADR[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
  enc_start();
  uint8_t reset = 0xff;
 spi_send(&reset,1);
  while((readETHReg(ESTAT)&(1<<CLKRDY))!=1);
  USART_String("Fertig");
  writeETHReg(MAADR0, MAC_ADR[0]);
  writeETHReg(MAADR1, MAC_ADR[1]);
  writeETHReg(MAADR2, MAC_ADR[2]);
  writeETHReg(MAADR3, MAC_ADR[3]);
  writeETHReg(MAADR4, MAC_ADR[4]);
  writeETHReg(MAADR5, MAC_ADR[5]);
  enc_stop();
}

Schreiben der PHY Register:

void writePHYReg(uint8_t reg, uint16_t data)
{
  if(reg > PHLCON)
  {
    USART_String("Uengueltiges PHY-Register");
    return;
  }
  selectBank(BANK2);
  writeETHReg(MIREGADR, reg);
  writeETHReg(MIWRL, (uint8_t)data);
  writeETHReg(MIWRH, ((uint8_t)(data>>8)));
}

Das senden per SPI funktioniert meines Errachtens (mit dem Oszilloskop 
nachgeprüft. Sieht gut aus denke ich). Auch die Serielle Schnittstelle 
funktioniert.

Der Aufruf aus der Main:

writePHYReg(PHLCON, 0xAB8);


Habe ich etwas übersehen?

Besten Dank

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.