Problem mit AVR-NET-IO und ENC28J60

bloblo

Neues Mitglied
11. Mai 2010
1
0
0
Sprachen
Hallo zusammen

ich habe vor einer Woche das AVR-NET-IO-Board von Pollin bekommen und jetzt angefangen mit der Programmierung des µC für eigene Zwecke. Allerdings scheitert es schon an der Kommunikation zwischen dem Atmega32 und dem ENC28J60. Wenn ich versuche über SPI einen Befehl an den ENC28J60 zu senden stehen permanent falsche Werte im Register SPDR.

Eigentlich versuche ich nur das Regster ECON1 auszulesen.

Der Atmega wird mit folgenden Werten initialisiert:
Code:
PORTB = 0x00;
DDRB = 0xB0;
SPCR = 0x50;
SPDR = 0x00;

und die aufgerufenen ENC-Funktionen sehen wie folgt aus:

Code:
void enc_start(){
  ENC_CSPORT = (1<<ENC_CSPIN); // ENC_CSPIN = 4
}

void enc_stop(){
  ENC_CSPORT = (0<<ENC_CSPIN); // ENC_CSPIN = 4
}

unsigned char enc_rcr(unsigned char reg, unsigned char method) {
  enc_start();
  SPDR = ENCMD_RRCR | reg; // 0x00 | 0x1F -> 0x1F
  while(!(SPSR & (1 << SPIF)));
  SPDR = 0;
  while(!(SPSR & (1 << SPIF)));
  if(method) { // zum lesen von PHY-Registern
    SPDR = 0;
    while(!(SPSR & (1 << SPIF)));
  }
  enc_stop();
  return(SPDR);
}

In der Main-Funktion erfolgt dann der Aufruf
Code:
unsigned char reg_econ1;
reg_econ1 = enc_rcr(ECON1, 0); // ECON1 = 0x1f;

Der Code stammt übrigens von triplay.de. Die Zeile die mir jetzt Probleme bereitet ist das Bitweise ODER von ENCMD_RRCR und reg. Eigentlich sollte 0x1F rauskommen aber in SPDR steht 0xFF (laut Ausgabe auf den COM-Port) oder 0x00 laut AVRStudio drin.

Entferne ich den ENC klappt es und die richten Werte stehen drin. Hat vlt. jemand eine Idee wieso, weshalb oder warum der Wert nicht in das Register übernommen wird?
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)