Hallo
Wie in der Überschrift beschrieben hab ich das Problem dass mein
Programm auf dem Arduino Mega 2560 abstürzt sobald ein High signal an
einem als Input Konfiguriertem Pin anliegt. Ich kann das Programm im
Ganzen nicht Posten, da es über 800 Zeilen Code enthält. Laut Arduino
IDE verwendet der sketch 13332 Bytes(5%) des Programmspeichers und 4020
Bytes (49%) des dynamischen Speichers werden durch Globale Variablen
verwendet.
Bei Steigender Flanke an dem Pin soll eine ISR ausgeführt werden (der
einfachheit halber erstmal nur
[c]
void setup()
{
...
pinMode(3,INPUT);//Interruptpin
attachInterrupt(1,gedrueckt,RISING);
...
}
void loop()
{
...
}
void isr ()
{
Serial.println("Interrupt");
}
[c]
setze ich diese Zeilen in einen neuen sketch und lade ihn auf den
Arduino funzt alles prima
nur in meinem eigentlichen Sketch leider nicht... Statt dessen beginnt
das Programm wieder bei 0(da ist unter anderem eine Zeitzählung
basierend auf der millis() funktion mit im Programm)
hat jemand schonmal ein ähnliches Phänomen gehabt?
Kann es vielleicht sein dass der Arbeitsspeicher überläuft und das ganze
deshalb abstürzt? kann man das Irgendwie überprüfen wie voll der
Arbeitsspeicher ist?
key schrieb: > setze ich diese Zeilen in einen neuen sketch und lade ihn auf den > Arduino funzt alles prima Das glaube ich nicht! Schon alleine deswegen, weil du hier behauptest
1 | attachInterrupt(1,gedrueckt,RISING); |
die Interrupt Funktion würde 'gedrueckt' heissen und tatsächlich
1 | void isr () |
2 | {
|
3 | Serial.println("Interrupt"); |
4 | }
|
heisst sie aber ganz anders. Wenn man sich hier im Forum extrem unbeliebt machen will, dann postet man zu seinen Fragen Codeausschnitte, bei denen schon ein Blinder aus 5 Meter Entfernung sagen kann, dass die nie und nimmer durch den Compiler gegangen sind bzw. auf dem µC gelaufen sind. Und noch unbeliebter macht man sich mit der Frage "Ich hab da ein Problem aber ich zeig euch den Code nicht" Kommt dann auch noch beides zusammen, dann fragt sich jeder: "Wenn er schon das SChnipsel schlampig postet, welche Schlampigkeitsfehler stecken dann noch im realen Code?" und geht zum nächsten Thread. Zeit verplempern kann mann auf amüsantere Art.
ich habs nochmal probiert mit den definitiv richtigen namen!!! selbes ergebniss. ich kann gerne 800 Zeilen Code posten. Dann beschwert sich jemand dass es unübersichtlich ist weil zu viel... Als ich das ganze letzten Monat verwendet habe hat alles prima funktioniert... inzwischen habe ich nur reglerwerte verändert... also nichts an der funktionalität...
key schrieb: > ich kann gerne 800 Zeilen Code posten. Das ist überhaupt kein Problem. Man kann an jedes Posting (fast) beliebig viele Dateien anhängen. So bleibt die Übersichtlichkeit gewahrt und der Leser kann sich diese Datei dann anschauen. Hat sie auch eine vernünftige Dateiendung (nämlich wie im Original auf Deinem PC), werden Schlüsselwörter sogar farblich hinterlegt. > Als ich das ganze letzten Monat verwendet habe hat alles prima > funktioniert... inzwischen habe ich nur reglerwerte verändert... > also nichts an der funktionalität... Wahrscheinlich hattest Du den Fehler schon vorher drin, jedoch ist dieser bis zum Zeitpunkt der Änderungen nicht in Erscheinung getreten. Vermutlich irgendein Überschreibser eines Buffers oder Arrays... Her mit dem Source - alles andere ist Glaskugel-Lesen.
key schrieb: > ich kann gerne 800 Zeilen Code posten. Dann beschwert sich > jemand dass es unübersichtlich ist weil zu viel... Dafür gibt es die Funktion "Dateianhang". Dann ist das ein Attachment und kein seitenlanger Post.
Wenn das Programm ja vor der Änderung der Regelerwerte funktioniert hat, dann liegt es vermutlich (nur) an deinen Regelerwerten. Hast du schonmal probiert die ursprünglichen Reglerwerte wieder einzutragen und geschaut ob das System dann noch funktioniert?
Nach der bereits erfolgten Kritik an der Darstellung beziehe ich mich mal auf die sehr allgemein gestellten Fragen selbst. key schrieb: > ... > hat jemand schonmal ein ähnliches Phänomen gehabt? > ... Davon ist auszugehen. > Kann es vielleicht sein dass der Arbeitsspeicher überläuft und das ganze > deshalb abstürzt? Schon möglich. > kann man das Irgendwie überprüfen wie voll der > Arbeitsspeicher ist? Prinzipiell schon, kommt aber halt im Einzelfall auf den Kenntnisstand an über den man verfügt. Vor einiger Zeit gab es mal eine ähnliche Fragestellung, da haben z.B. Leute beim Programmstart feste Werte in den RAM-Speicher geschrieben und dann regelmäßig überprüft ob diese Werte da noch drinstehen oder bereits überschrieben wurden. Hier z.B. wird so etwas beschrieben, (aber halt nicht speziell für Arduinos): http://rn-wissen.de/wiki/index.php/Speicherverbrauch_bestimmen_mit_avr-gcc Allgemeine Tipps: Alles auskommentieren bis auf das Grundgerüst, dann einen Programmteil nach dem anderen wieder hinzufügen und schauen ab wann es hängt. Immer schön Status-LEDs blinken lassen und reichlich Variableninhalte und Statusmeldungen über den seriellen Port an den PC versenden!
hallo ok hab das ganze nochmal ausprobiert (ohne was verändert zu haben) jetzt funzt es auf einmal wieder dafür läuft ein anderer Programmteil nicht mehr... ich werd mich nochmal selber in meinem code vergraben und versuchen abzuspecken ohne die funktionalität zu gefärden. Hab mir auch einen 2. Arduino bestellt um auszuschließen dass meiner kaputt ist.(wollte sowiso noch nen 2.haben) ich werde wenn der 2. da ist auch mal versuchen meinen mit nem 9V block versorgen die Daten an den 2. Arduino senden, der dann über USB alles an den Rechner sendet. Vielleicht hat der ja auch nur Probleme, wenn er über USB versorgt wird. Danke schonmal
key schrieb: > ich werde wenn der 2. da ist auch mal versuchen meinen mit nem 9V block > versorgen die Daten an den 2. Arduino senden, der dann über USB alles an > den Rechner sendet. Vielleicht hat der ja auch nur Probleme, wenn er > über USB versorgt wird. Verwende lieber ein Steckernetzteil anstelle des 9V Blocks, sonst hast du sicher mehr Probleme als vermeintlich mit USB.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.