Hi zusammen, ich habe das Problem, dass der Mikrocontroller nicht das macht, was er machen sollte. zu Testzwecke habe ich eine kleine for schleife gebaut, die schon Probleme macht. (siehe Bild). Der Pic habe ich beim ersten Nop(); angehalten. Das bedeutet, i und test sollten gleich 0 sein. Sind sie aber nicht. Wenn ich die schleife arbeiten lassen würde, ändern sich die Variablen nicht! Die bleiben bleiben immer auf einem Zufallswert stehen. Mein Programm ist so aufgebaut, wie unten beschrieben. Das gesamte Programm funktioniert ordnungsgemäß, bis auf die for schleife, die im Screenshot zu sehen ist. Ich bin am verzweifeln. Ich bin überhaupt kein Anfänger in diesem Bereich, habe aber keine Ahnung mehr, was ich machen könnte, was ich falsch machen soll. Ich verwende: MPLAB X IDE 6.00 XC32 4.00 PIC PIC32MX795F512L if(IP){ if(ICMP){ } else if(TCP){ <----- Problem (Screenshot) } } else if(ARP){ } ich hoffe es kann mir irgend jemand bei dem Problem helfen.
:
Bearbeitet durch User
Hi, danke dir für die Antwort, das hatte ich vergessen zu erwähnen. Ich bin gerade im einzigen Interrupt, der aktiv ist.
Vielleicht wird test vom Compiler wegoptimiert, weil der Wert nie weiter gebraucht wird. Einfach mal alle Optimierungen abschalten? Globale Variablen nehmen, die irgendwo noch mal pseudo-benutzt werden, damit der Compiler nicht optimiert?
Aster O. schrieb: > habe aber keine Ahnung mehr, was ich machen könnte Sieh dir das vom Compiler erzeugte Assembler-Programm an. Denn das ist letztlich das, was auf dem µC laufen wird.
PittyJ schrieb: > Vielleicht wird test vom Compiler wegoptimiert, weil der Wert nie weiter > gebraucht wird. Das dachte ich auch spontan, aber müsste die IDE dann nicht anzeigen, dass die Variablen nicht existieren, anstatt einen (scheinbar) zufälligen Wert? Außerdem ist eine der beiden Variablen volatile, und NOP(); ebenfalls. Das müsste doch ein Weg-Optimieren verhindern, oder nicht?
Hi, Compiler optimierung ist auf 0=kleinsre stufe. Zu den variablen, aus erfahrung weiß ich, dass wenn es diese unten in der übersicht gibt werden diese auch wirklich angelegt. Es ist ja auch eine adresse mit angefügt. Des weiteren ist die eine variable ja volatile, die wird auf jeden fall nicht wegoptimiert.
:
Bearbeitet durch User
Ich habe jetzt nochmal etwas getestet. Egal wo ich diesen Testabschnitt einfüge, es funktioniert an jeder stelle, außer an den beiden stellen, die im Foto zu sehen sind. Das muss doch ein Compiler Fehler sein oder nicht? ###geht#### if(IP){ ###geht#### if(ICMP){ ... ###geht#### } else if(TCP){ ---geht nicht---- } } else if(ARP){ } -------------------------------------- ###geht#### if(IP){ ###geht#### if(ICMP){ ... ###geht#### } ---geht nicht---- if(TCP){ ---geht nicht---- } } else if(ARP){ }
Oh man, da kann man ja ewig nach einem Fehler suchen. Das Problem war der Compiler! Ich habe das selbe Projekt auf einem anderen Rechner gestartet und bei dem gehts!!!
Lothar M. schrieb: > Sieh dir das vom Compiler erzeugte Assembler-Programm an. Denn das ist > letztlich das, was auf dem µC laufen wird. Besser: Schreibs gleich in Asm. Aster O. schrieb: > Das Problem war > der Compiler!
Aster O. schrieb: > Oh man, da kann man ja ewig nach einem Fehler suchen. Das Problem > war > der Compiler! > > Ich habe das selbe Projekt auf einem anderen Rechner gestartet und bei > dem gehts!!! Das heißt es war etwas falsch eingestellt im Compiler? Oder gar was "kaputt" ? Finde ich sehr spannend..
Hi, ne nichts falsch eingestellt wirklich defekt. Das Projekt mit allen einstellungen habe ich 1:1 auf den anderen rechner kopiert
Ingo Less schrieb: > Ron T. schrieb: > >> Besser: Schreibs gleich in Asm. > > Dogmatischer Bullshit Antwortet der Dogmatiker!
Aster O. schrieb: > Hi, ne nichts falsch eingestellt wirklich defekt. > > Das Projekt mit allen einstellungen habe ich 1:1 auf den anderen rechner > kopiert Unglaubhaft, wenn alles 1:1 kopiert wurd, ist auch das Ergebnis 1:1. meist ist irgendein Pfad zu headerdateien flsch, respektive die berichtigte Version dieser wurde nicht auf den Rechner geladen.
Fpgakuechle K. schrieb: > Unglaubhaft, wenn alles 1:1 kopiert wurd, ist auch das Ergebnis 1:1. > meist ist irgendein Pfad zu headerdateien flsch, respektive die > berichtigte Version dieser wurde nicht auf den Rechner geladen. Ich habe jetzt noch etwas herumgespielt, und alles was ich sagen kann ist, dass wenn ich das komplette Projekt (alle einstellungen, Datein ...) auf meinem Rechner Starte habe ich Probleme, beim Laptop gehts. Auch wenn ich bei beiden Geräten sage, Clean and Build Project. -> PC neu installiert, jetzt läufts!
Aster O. schrieb: > Das muss doch ein Compiler Fehler sein oder > nicht? Wäre nicht der erste ... Habe ich mich auch schon öfter mit rumschlagen müssen. Gruß Jobst
:
Bearbeitet durch User
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.