Hallo, wie kann ich in einem laufendenden Programm einen Stack-Überlauf verhindern?. Es wird ständig eine Programmschleife durchlaufen mit 200-facher Abfrage ADC0, 200-facher Abfrage ADC1,Ausgabe dieser Werte auf einem Display, sowie Zeitausgabe. Bei 8MHz Taktfrequenz unterbricht Timer 0 (Vorteiler 1024,TCNT0=150,Register=74 ergibt zusammen einen 1 sec-Takt),um eine Zeitangabe zu ermöglichen. Weiterhin wird über PWM eine Gleichspannung für eine Analogregelung produziert. Bei niedriger Gleichspannung (PWM-Wert< 300) funktioniert alles einwandfrei. Bei größeren PWM-Werten steigt entweder der Mega8 oder das Display aus . Kann mir da jemand helfen? mfg Helmut
Meine Glaskugel sagt mir, du hast einen Programmierfehler. Wahrscheinlich Zeile 35 oder 39.
Vermutlich den Zeitbedarf für die LCD-Anzeige nicht berücksichtigt (Programmfehler), die sind ja bekanntlich nicht die schnellsten, aber der Benutzer braucht ja auch Zeit um die dargestellte Information zu lesen.
Ich würde beispielsweise das Display 1x, max. 3x pro Sekunde aktualisieren. Schneller lohnt kaum. Einen Stacküberlauf bekommt man dann, wenn das Programm nicht richtig geschrieben wurde. Von allein kommt der nicht vor. Anders als beim PC muß man sich hier selbst drum kümmern.
ich aktualisiere die LCD-Anzeige nur 1x/min, trotzdem habe ich das oben genannte Problem. Wie kann ich denn den genauen Zeitbedarf der LCD-Anzeige ermitteln? gruß Helmut
grazy horse hat Recht... Ohne weitere Informationen ist das wie an der Börse oder beim Pferderennen... Bit- & Bytebruch... - ...HanneS...
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.