Atmega128 & WIZ830MJ - XMEM Probleme

OP #2997060
Lesenswert?

Guten Abend,

ich habe mir vor kurzem ein kleines Board gebastelt mit einem Atmega128. 
Weiter hat das Board einen Aufnahme für ein WIZ830MJ Netzwerkmodul. Die 
beiden sind über die XMEM-Schnittstelle miteinander verbunden. Da ich in 
C noch nicht als zu bewandert bin, hab ich mich gestern mal wieder 
drangesetzt und wollte das Netzwerkmodul annäherungsweise zum laufen 
bekommen. Das Hauptproblem stellt hier die tolle neue Schnittstelle ala 
XMEM da. Durch Beispielcode, welchen ich zum WIZ830MJ gefunden habe, bin 
ich schon ein Stück weitergekommen. (wenn es hilf, kann ich diesen gerne 
reinstellen)

Nun zu meinem Problem:
Ich habe eine Grundroutine geschrieben, die mir erstmal den Inhalt des 
Moduls per USART ausgibt.
1
#include <avr/io.h>
2

3
typedef unsigned char uint8;
4

5
uint16_t laufer;
6
unsigned long sd;
7

8
void fkt_netzwerk_konfig()
9
{
10
  *((uint8*)0x1108) = 0x00;
11
  *((uint8*)0x1109) = 0x08;
12
  *((uint8*)0x110A) = 0xDC;
13
  *((uint8*)0x110B) = 0x01;
14
  *((uint8*)0x110C) = 0x02;
15
  *((uint8*)0x110D) = 0x03;
16
  
17
  for (laufer = 0x1100; laufer < 0x1180; laufer++)
18
  {
19
    UDR1 = *((uint8*)laufer);
20
    sd = 20000;
21
    while(sd--);
22
  }
23
}

soweit bekomme ich auch Werte am PC. Von 0x1108 bis 0x110D schreibe ich 
eine MAC-Adresse in das Modul. Beim auslesen bekomme ich dann aber 
Folgendes: (ich habe es immer in 8 Byte pro Reihe "formatiert")
1
0  0  0  0  0  0  0  0
2
8  8  1  1  3  3  0  0
3
0  0  0  0  0  0  0  0
4
0  0  0  0  208  208  8  8
5
8  8  8  8  8  8  8  8
6
8  8  8  8  8  8  8  8
7
255  255  0  0  0  0  40  40
8
0  0  0  0  0  0  0  0
9
0  0  0  0  0  0  0  0
10
0  0  0  0  0  0  0  0
11
0  0  0  0  0  0  0  0
12
0  0  0  0  0  0  0  0
13
32  32  177  177  32  32  26  26
14
32  32  140  140  32  32  127  127
15
0  0  0  0  0  0  0  0  
16
0  0  0  0  0  0  0  0

Das Problem ist, dass ich nur jeden zweiten Wert bekomme und dann auch 
doppelt, sprich was in 0x1101 steht wird mir bei 0x1100 und 0x1101 
anzeigt. (und immer so weiter, sollte aus der Byte-Folge oben erkennbar 
sein)

Hat vielleicht jemand spontan eine Idee, was dort der Fehler sein 
könnte? Wenn ich tiefere Adressen ausgebe, also Atmega intern, dann wird 
nicht doppelt ausgegeben... find ich seltsam!

Wo ich gerade dabei bin, ich habe noch immer nicht genau verstanden, was 
diese Zeile anstellt:
1
UDR1 = *((uint8*)laufer);

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren