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
PICPIC32MX795F512L
if(IP){
if(ICMP){
}
else if(TCP){
<----- Problem (Screenshot)
}
}
else if(ARP){
}
ich hoffe es kann mir irgend jemand bei dem Problem helfen.
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.
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..
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