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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.