-
-
Zeiger-, Speicherproblem mit ATmega32 ???
Ich programmiere im Moment ein Menü, als eine Art grafische Benutzeroberfläche für meinen Roboter um verschiedene Verhalten du aktivieren und Einstellungen zu machen. (Navigation wie im siemens-handy-menü mit Steuerkreuz)
Softwaremäßig ist der Aufbau wie eine verkettete Liste/Graph.
Jeder Menüpunkt stellt einen Listen-Knoten dar, mit 4 Nachbarn (rechts- links, oben, unten).
Gibt es keinen Nachbarn, ist die Liste abgeschlossen mit dem Null - Zeiger.
Soweit alles ganz normale Standart-Programmierung, tausend mal in C/C++ gemacht.
Problem 1:
Das mit den NULL Zeigern zum Abschluss der Listen ging überhaupt nicht.
D. h. kompiliert ohne Fehler/ Warnungen. aber bei der navigation durch die Liste und anschließenden Ausgabe auf LCD, kam alles mögliche zum Vorschein, außer der Titel welcher im Listenknoten gespeichert ist. Ich denke mal das war irgendwas aus dem Speicher.
Kann es sein, daß NULL, oder 0 bei zeigern bei nem AVR nicht funktioniert?
Kann ich mich darauf verlassen, wenn ich ANSI-C programmiere wie auf einem PC, daß auf dem controller das genauso läuft?
Problem 2:
Ich habe das Gefühl, daß beim Verlassen von Funktionen Fehler auftreten,
und der Controller "irgendwo" hinspringt, wenn die Funktionen zu "tief" verschachtelt sind?
Die Software hat im Moment ca 1500 Zeilen. Ram/Stack sollte aber glaube ich reichen, oder doch nicht??????
Hat vielleicht jemand änliche Probleme?
Ich verwende einen ATmega32 und WINAVR
Danke schon mal. Gruß Droog
-
Ich hab zwar garkeine ahnung von so etwas da ich erst vor ein paar wochen angefangen habe zu bastel ABER was währe wenn du statt der Null wieder an den ersten punkt in derner List springst somit hättest du eine Entlosschleife und die null würde weg fallen.
MFG David
-
Das geht hier nicht, da es keine "normale" Liste mit einem Anfang und einem Ende ist.
Außerdem, tritt dieses Problem dann ja wahrscheinlich noch öfter auf, also will ich wissen ob es geht oder nicht
Gruß Droog
-
Erfahrener Benutzer
Roboter Experte
ich hab sowas zwar noch nie gemacht, aber der ATMEGA32 hat nur 2kByte RAM, in dem sich auch der Stack befindet, ich weiß zwar nicht, ob du mehr RAM brauchst, aber die Symptome, die du beschrieben hast, hören sich stark danach an, dass der RAM nich ausreicht(den RAM schreibt man normalerweise von unten her voll und der Stack fängt im RAM von oben her an, wenn eines von beiden oder beide zu groß werden, gibts Probleme)
ich hoffe, ich hab jetzt keinen Unsinn erzählt...
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen