Keiner eine Ahnung warum Karte_Temp_schreiben nicht funktioniert?
Keiner eine Ahnung warum Karte_Temp_schreiben nicht funktioniert?
alles über meinen Rasenmäherroboter (wer Tippfehler findet darf sie gedanklich ausbessern, nur für besonders kreative Fehler behalte ich mir ein Copyright vor.)
Werde mir das demnächst mal ansehen. Sehe ich das soweit richtig, dass ein Fehler immer nur auftritt, wenn du Karte_temp_schreiben anwendest?
mfg
Ich rate jetzt einfach mal so ins blaue rein und gebe mal paar möglichkeiten an die so ein Verhalten hervorrufen könnten. 1. Du versuchst mehr als 4 bit reinzuschreiben. 2. Der Speicher deines Microcontrollers reicht nicht aus. 3,. Du greifst sonst irgendwie drauf zu und zerschiest dabei was.
@Wsk8: genau, die Funktion Karte_temp_schreiben beeinflusst Feld 3, die Karte funktioniert nur wenn diese Funktion nicht verwendet wird.
@shedepe: der Kontroller hat noch 9kB SRam frei. Es wird nur über diese hier aufgeführten Funktionen auf das Array zugegriffen, gerade um ein zerschiesen des Programmes auszuschließen!
LG!
alles über meinen Rasenmäherroboter (wer Tippfehler findet darf sie gedanklich ausbessern, nur für besonders kreative Fehler behalte ich mir ein Copyright vor.)
Warum grund_x+1 bzw. grund_y+1 statt grund_x bzw. grund_y?Code:static struct { unsigned char gemaeht:3; unsigned char temp_besetzt:4; unsigned char fixbesetzt:1; } Karte[grund_x+1][grund_y+1];
Angstbytes damit das Array sicher groß genug ist.
LG!
alles über meinen Rasenmäherroboter (wer Tippfehler findet darf sie gedanklich ausbessern, nur für besonders kreative Fehler behalte ich mir ein Copyright vor.)
Also Karte_temp_schreiben sollte korrekt funktionieren. Gab bei mir keine Probleme. Und wenn du die 4 Bits voll ausnutzen möchtest, dann dürfen da Werte <= 15 drin stehen.
mfg
Wenn du sagst, dass ganze Spalten (mehrere X=const, Y=variabel Koordinaten) betroffen sind, spricht das eigentlich für einen Fehler außerhalb. Läuft dein Code auch ohne angeschlossene Hardware (oder alternativ: Hast du Zugang zu einem Hardware-Debugger? Dann würde ich dir nämlich raten, einfach Mal dem AVR beim Rechnen zuzusehen und zu beobachten wann die betreffenden Speicherbereiche beschädigt werden.
Alternativ könntest du versuchen, Routinen zur Speicher-Validierung umzusetzen (dir z.Bsp. einige Zellen mit bekanntem Inhalt auswählen, deren Inhalt vor/nach jeder Manipulation prüfen und sobald eine Abweichung vom Soll auftritt, Alarm schlagen und möglichst detailliert den aktuellen Systemzustand ausgeben).
mfG
Markus
Tiny ASURO Library: Thread und sf.net Seite
Hm, werde die Funktion wieder aktivieren, rechne aber dass es wieder die Karte zerstören wird. Ohne Karte_temp_schreiben waren die Werte stabil, dh die blockierten Felder waren immer sichtbar.
Überlege was ich zur Speicher Validierung umsetzen kann, vielleicht ein paar fixe Positionen mit Karte_temp_schreiben beschreiben, um zu sehen wie lange oder bei welchen Positionen die Karte fehlerhaft wird.
LG!
alles über meinen Rasenmäherroboter (wer Tippfehler findet darf sie gedanklich ausbessern, nur für besonders kreative Fehler behalte ich mir ein Copyright vor.)
Tiny ASURO Library: Thread und sf.net Seite
Lesezeichen