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.
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.
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.
hier noch das ganze Programm, für den der es testen mag.
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
Hmmm ... welche Kernelversion hast du ?? ggf. liegt das am USB Treiber
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.
@ Karl Heinz Buchegger (kbuchegg) siehst du Fehler in der Verwendung von Pointern und Structs?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.