Forum: Compiler & IDEs Problem bei Übergabe von struct & Pointer


von bluematrix (Gast)


Angehängte Dateien:

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.

von Peter II (Gast)


Lesenswert?

bluematrix schrieb:
> Leider wird seit der
> Änderung der Inhalt etwas falsch gesendet, so dass die Formatierung im
> Browser nicht stimmt.

dann zeig uns doch mal ein diff von den beiden Webseiten. Das hilft dann 
bei der Fehlersuche.

von bluematrix (Gast)


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.

von bluematrix (Gast)


Angehängte Dateien:

Lesenswert?

hier noch das ganze Programm, für den der es testen mag.

von Karl H. (kbuchegg)


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?

: Bearbeitet durch User
von Hans Ulli K. (Gast)


Lesenswert?

Hmmm ...

welche Kernelversion hast du ??

ggf. liegt das am USB Treiber

von bluematrix (Gast)


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.

von bluematrix (Gast)


Lesenswert?

@ Karl Heinz Buchegger (kbuchegg)
siehst du Fehler in der Verwendung von Pointern und Structs?

von Karl H. (kbuchegg)


Lesenswert?

bluematrix schrieb:
> @ Karl Heinz Buchegger (kbuchegg)
> siehst du Fehler in der Verwendung von Pointern und Structs?

Nein, nicht wirklich.
Wenn auf der Ebene was nicht stimmen würde, würde der Compiler das 
finden.

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.