Forum: Mikrocontroller und Digitale Elektronik Microchip X IDE Code Problem


von Aster O. (asteroidnixnix)


Angehängte Dateien:

Lesenswert?

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
von Mucky F. (Gast)


Lesenswert?

Hast du vor der Schleife mal alle Interrupts abgeschaltet?

von Aster O. (asteroidnixnix)


Lesenswert?

Hi, danke dir für die Antwort, das hatte ich vergessen zu erwähnen.

Ich bin gerade im einzigen Interrupt, der aktiv ist.

von PittyJ (Gast)


Lesenswert?

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?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

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?

von Aster O. (asteroidnixnix)


Lesenswert?

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
von Aster O. (asteroidnixnix)


Angehängte Dateien:

Lesenswert?

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){

    }

von Aster O. (asteroidnixnix)


Lesenswert?

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!!!

von Ron T. (rontem)


Lesenswert?

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!

von Ingo Less (Gast)


Lesenswert?

Ron T. schrieb:
> Besser: Schreibs gleich in Asm.
Dogmatischer Bullshit

von OhMPLAB (Gast)


Lesenswert?

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..

von Aster O. (asteroidnixnix)


Lesenswert?

Hi, ne nichts falsch eingestellt wirklich defekt.

Das Projekt mit allen einstellungen habe ich 1:1 auf den anderen rechner 
kopiert

von Lust L. (lust)


Lesenswert?

Ingo Less schrieb:
> Ron T. schrieb:
>
>> Besser: Schreibs gleich in Asm.
>
> Dogmatischer Bullshit

Antwortet der Dogmatiker!

von Fpgakuechle K. (Gast)


Lesenswert?

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.

von Aster O. (asteroidnixnix)


Lesenswert?

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!

von Jobst M. (jobstens-de)


Lesenswert?

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
Noch kein Account? Hier anmelden.