Problem bei Übergabe von struct & Pointer

Gast #3349608
Lesenswert?

Hallo,

ich habe einen Chip (Wiznet Ethernet Chip für einen kleinen Xmega 
Webserver) welcher über SPI angesprochen wird eine kleine Lib zusammen 
geschrieben. Bisher waren alle SPI Hardware abhängigen Komponenten fest 
über defines realisiert.
Damit ich aber den Chip aber mehrfach an verschiedenen SPI 
Schnittstellen verwenden kann, habe ich die Informationen zu jeder 
Schnittstelle in Structs gespeichert.

Wie ich das umgesetzt habe seht ihr im Anhang. Leider wird seit der 
Änderung der Inhalt etwas falsch gesendet, so dass die Formatierung im 
Browser nicht stimmt.

Könnt ihr bitte mal Bitte meine Programmzeilen kontrollieren, ob das so 
geht?
Für Tips und Empfehlungen bin ich auch offen.
Angehängte Dateien:
Gast #3349681
Lesenswert?

Ein Bild ist nicht wirklich sinnvoll.
Der Inhalt erscheint doppelt,dreifach, ...

So als würde der Buffer mehrfach versendet, aber halt mal nur die erste 
Hälfte, dann nur die zweite und mal der ganze...
Also es ist nicht wirklich ein sinnvolles Muster erkennbar.

Aber mindestens 5 Zeilen sind immer zusammenhängend richtig.
#3349693
Lesenswert?

bluematrix schrieb:

> So als würde der Buffer mehrfach versendet, aber halt mal nur die erste
> Hälfte, dann nur die zweite und mal der ganze...

Eine HTML Seite ist ja auch nur Text. Jeder Browser kann den Quelltext 
einer Seite anzeigen. Schau halt mal rein (und nimm eine möglichst 
einfache Seite) und sieh nach, was daran falsch ist.

Ansonsten:
Hast du den Original-Code noch?
Wenn ja: Hast du eine Möglichkeit, dir Debug-Dumps auszugeben?
Wenn ja: dann spick halt mal die untersten Ausgabefunktionen mit 
entsprechenden Ausgaben und vergleiche das mit deinen jetzigen Ausgaben.
Irgendwo wirst du halt in deiner Umstellung etwas übersehen haben.

Wenn du nichts findest, dann heißt es wohl: zurück an den Anfang und die 
Umstellung noch mal machen. Aber diesmal mit mehr Zwischentests und an 
allen Ecken und Enden gleich mit dem Hintergedanken: wie kann ich etwas 
formulieren, so dass ich möglichst keine Fehler machen kann?
Gast #3349730
Lesenswert?

Der fehler tritt erst dann ein, wenn ich in der Funktion wiz_sock_send 
in dem folgendem teil die neuen Funktionen, also die mit den Pointern 
verwende.
1
  // increase the S_TX_WRITE_POINTER value, so it point to the next transmit
2
  wiz_write(wiz_data, sock, S_TX_WRITE_POINTER+0, (offaddr & 0xFF00) >> 8);
3
  wiz_write(wiz_data, sock, S_TX_WRITE_POINTER+1, (offaddr & 0x00FF));
4
    
5
  wiz_write(wiz_data, sock, S_COMMAND_REG, CR_SEND);    // Now Send the SEND command    
6
  while(wiz_read(wiz_data,sock, S_COMMAND_REG))      // Wait for Sending Process
7
  {
8
    ;
9
  }

Funktioniert hat es noch mit den in der .c-datei ausgeklammerten 
Funktionen, in welchen alles noch per defines deklariert ist.
1
uint8_t wiz_read1(uint8_t addressH, uint8_t addressL)
2
uint8_t wiz_write1(uint8_t addressH, uint8_t addressL)
ersetzte ich nur die letzten 4 "wiz_read" und "wiz_writes" wieder mit 
"wiz_read1" und "wiz_write1" dann geht es wieder.
Sonst ist nichts geändert und die Funktionen machen genau das gleiche. 
Also meiner Meinung nach sollten sie das.

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