Variable erhält nach Zuweisung nicht gewünschten Wert

Gast #3041454
Lesenswert?

Hallo liebe Gemeinde!

Ich sitze seit ein paar Tagen an einem seltsamen Problem. Zunächst der 
betreffende Codeausschnitt:
1
volatile int i = 0;
2

3
for(i = 0; i < 20; i++)
4
{
5
  USARTWriteChar(0);
6
}

Mein Problem? Die Variable i wird sobald ich sie auf 0 setzte mit dem 
Wert 0xFFFF gesetzt. Dieses Phänomen tritt auch bei anderen Variablen 
auf die ich auf 0 setzte. Dieser Ausschnitt ist teil eines größeren 
Programms. Das Problem tritt im Simulator sowie auf dem Mikrocontroller 
auf.

Jemand eine Idee?

Danke!
Grüße Nico
#3041459
Lesenswert?

Nico schrieb:

> Dieses Phänomen tritt auch bei anderen Variablen
> auf die ich auf 0 setzte. Dieser Ausschnitt ist teil eines größeren
> Programms. Das Problem tritt im Simulator

Im Sumlator wirst du wahrscheinlich mit dem Debugger die Variable 
ansehen. Dem darfst du nicht alles glauben, weil der Optimizer das 
Programm umgestellt hat. Wichtig ist, ob die Funktionaltät gegeben ist.

> sowie auf dem Mikrocontroller
> auf.

Wie stellst du das fest.

> Jemand eine Idee?

Ja. Poste kompletten getesteten Code.
Bei seltsamen Fehlern steckt das Problem des öfteren nicht dort, wo du 
es vermutest. Was du siehst sind die Symptome. Aber das Problem kann 
ganz woanders stecken.
Gast #3041462
Lesenswert?

Um die bald folgenden Beiträge im Fluss zu halten, solltest du unter 
keinen Umständen den Controller verraten oder irgendwelche Hinweise 
geben, die zur Lösung deines Problems dienen. Dies gilt auch, wenn die 
Leute versuchen dir die Würmer aus der Nase zu ziehen.
Gast #3041484
Lesenswert?

Zunächst habe ich das Problem anhand einer Fehlerhaften Ausgabe 
festgestellt. Ich baue derzeit eine DMX Steuerung, funktioniert auch 
alles wunderbar. Nur wenn ich die Werte im Datenarray (Char) auf 0x00 
setzte wird ein 0xFF ausgegeben. Wird auch vom Oszi bestätigt. Also habe 
ich mich daran gemacht den Fehler zu finden. Um Fehler des Controllers 
auszuschließen auch mal den Simulator zur Hand gezogen. Der meine 
Vermutung bestätigt hat das die Werte einfach nicht richtig übernommen 
werden. Ich arbeite auf einem ATmega328P.
#3041494
Lesenswert?

Nico schrieb:
> Der meine
> Vermutung bestätigt hat das die Werte einfach nicht richtig übernommen
> werden.

OK. vergiss diese Vermutung.
Die ist falsch.


Nochmal: Dein Problem sitzt höchst wahrscheinlich an einer ganz anderen 
Stelle im Code nur nicht in dieser Schleife. Zum mitmeisseln: Nicht in 
dieser Schleife bzw. in ihrer Abarbeitung.

Du kannst uns noch 3 Stunden erzählen was du alles gemacht oder nicht 
gemacht hast. Das Problem ist NICHT in dieser Schleife. Du siehst in 
deiner Ausgabe ein Ergebnis, welches eine Ursache hat. Aber diese 
Ursache ist NICHT, dass der Compiler hier MIst gebaut hat. Die Ursache 
sitzt irgendwo in deinem Code, kein Mensch weiß wo. Wenn du haben 
willst, dass wir dir helfen nach der Ursache zu fahnden, dann ZEIGE 
DEINEN CODE. Du kannst die Symptome und die Stelle die du in Verdacht 
hast noch 5 Tage anstarren und genauso können wir dir noch 5 Tage 
zuhören was du alles getan hast und genau dieselben 3 Codezeilen 
anstarren, deswegen ändert sich nichts. Die Ursache für den Einbruch des 
Dachstuhls war nicht der eine Nagel, der geknickt ist, sondern das 
Erdbeben welches das Haus geschüttelt hat. Du starrst seit Tagen aber 
den Nagel an - dort wirst du die Lösung nicht finden.
Gast #3041571
Lesenswert?

GCC Version: 3.3.1.27
Im Projekt wurde auch der Richtige ATmega ausgewählt.

Hab das Problem gelöst danke für eure mühe hat mir sehr geholfen!
Nächste mal gibts gleich ein Codebeispiel :)

Es lag an einer nicht mehr eingebunden Datei die aber noch im Projekt 
lag und mit kompiliert wurde.

Euch allen noch einen schönen Tag!

Nico

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren