Go Down

Topic: Unerklärbarer Programmfehler (Read 610 times) previous topic - next topic

J3RE

Jan 12, 2013, 05:38 pm Last Edit: Jan 12, 2013, 06:11 pm by J3RE Reason: 1
Hier die Funktion welche die Probleme verursacht
Code: [Select]
void instruction(){
 // Anleitung anzeigen
 // \t...Zeile enrücken
 // \"..."
 // \n...Zeilenumbruch

 Serial.println("Anleitung:");
 Serial.println("\t\"R\"...\tNeustart");
 Serial.println("\t\"P\"...\tPause");
 Serial.println("\t\" \"...\tFortsetzen");
 Serial.println("\t\"?\"...\tRegeln");
 Serial.println("\t\"N\"...\tAutomatischer Neustart wenn sich das Muster nicht mehr bewegt\n\t\toder alle Zellen gestorben sind");
 Serial.println("\t\"M\"...\tAutomatischer Neustart wenn sich das Muster wiederholt,\n\t\taktiviert auch die Neustartfunktion fuer sich nicht bewegende Muster");
 
 //Serial.println("\t\"+\"...\tZeit zwischen Generationen erhoehen");
 //Serial.println("\t\"-\"...\tZeit zwischen Generationen erniedrigen");
 //Serial.println("\t\"T\"...\tZeit zwischen Generationen zuruecksetzen");
 
Serial.println("\n\t\toder eine beliebige andere Taste um diese Anleitung wieder anzuzeigen.\n");
}


So funktioniert das Programm so wie es sollte, aber nur wenn ich die drei Zeilen auskommentiert lasse.
Wenn ich sie nicht auskommentiert lasse, lässt sich der Sketch noch kompilieren und auf meinen Arduino UNO uploaden, aber wenn ich dann irgendetwas über die Serielle Schnittstelle sende, "hängt" das Programm.
Meine Interrupt-Funktion läuft aber noch.

Ich habe keine Ahnung warum dieser Fehler auftritt, bei diesen drei Zeilen handelt es sich ja nur um einfache Befehle.

Habt ihr eine Idee warum das so ist?
falls Ihr den Rest des Code's oder sonst irgendwelche Informationen über mein Projekt braucht, einfach melden

MfG
J3RE

uwefed

Meine Idee ist es, daß Du zuviel RAM verbrauchst.
lösung isehe: http://arduino.cc/forum/index.php/topic,127552.msg965539.html#msg965539
Grüße Uwe

J3RE


Meine Idee ist es, daß Du zuviel RAM verbrauchst.
lösung isehe: http://arduino.cc/forum/index.php/topic,127552.msg965539.html#msg965539
Grüße Uwe
Vielen Dank :)
Probier ich gleich mal aus.

Sollte ich alle Texte im Flash Memory speichern?
Sind bei meinem Projekt einige Zeilen Text.
Der ganze Sketch hat kompiliert 7.638 Bytes.

J3RE

Jetzt funktionierts :D

Hab jetzt alle Serial.print-Befehle in der Form geschrieben
Code: [Select]
Serial.println(F("\"Conway's Game of Life\" von John Horton Conway\n"));
Somit werden die Texte im Flash Memory gespeichert oder!?

Doch woher weiß ich wann der RAM-Speicher voll ist, oder mein Sketch zuviel RAM braucht?

michael_x

#4
Jan 13, 2013, 06:19 pm Last Edit: Jan 13, 2013, 07:15 pm by michael_x Reason: 1
Quote
Doch woher weiß ich wann der RAM-Speicher voll ist, oder mein Sketch zuviel RAM braucht?


Gute Frage. RAM wird auch für den Stack gebraucht, d.h für lokale Variable von Funktionen und für deren Rücksprungadresse ( weswegen alles schief läuft, wenn die kaputt ist. )

Such mal im Playground nach freemem und ähnlichem freeRam. Solange du noch genug RAM hast, kannst du dir anzeigen lassen, wieviel Luft ist...

[Edit: Danke J3RE, dein Link (im nächsten Post) ist genau richtig. ich meinte freeRam, nicht freemem, sorry]

J3RE

#5
Jan 13, 2013, 06:36 pm Last Edit: Jan 13, 2013, 10:57 pm by J3RE Reason: 1

Such mal im Playground nach freemem und ähnlichem. Solange du noch genug RAM hast, kannst du dir anzeigen lassen, wieviel Luft ist...

Vielen Dank

hier ist das alles ganz gut erklärt
http://playground.arduino.cc/Code/AvailableMemory


Go Up