Seltsamer Fehler?! Belichtungsgerät

Gast #142402
Hi,
Hab mein Programm für mein Belichtungsgerät fast fertig.
Allerdings schreibt meine LCD Anzeige an einer stelle des Programms
wirres Zeug.
Wenn der Timer mit Compare Match läuft und dann kurz ausgeschaltet wird
wegen einer Unterbrechung tritt der fehler auf.
Am besten ihr schaut mal selber im Programm. In der Funktion
"halt()"
schreibt er "Stop!" und "Stop! Deckel!" nicht vernümpftig. Ich
denke mal er schreibt stattdessen Zeichen aus dem DDR Ram der LCD,
sieht zumindest nicht aus wie ASCII.
mfg
Gast #142407
Habe jetzt die Funktion "halt()" direkt unter start_count() (wo die
Funk. aufgerufen wird) geschrieben, jetzt geht es?! Allerdings hab ich
keine Ahnung warum?! kann es daran liegen das ich uint8_t benutzt hab?
mgh
Gast #142408
Ist mein Thread so langweilig?
Ich bin langsam am durchdrehen! Irgendwie... keine Ahnung... Das es
eben funktioniert hat war nur zufall. Hab es um eine Funktion
erweitert, und nun der selbe Scheiss!
Irgendwie schreibt er an einer Stelle nicht das was er soll auf das
Display! Aber dann auch immer an der selben stelle, bis ich wieder
irdenwelche Funktionen vertausche dann ist der Fehler wo anders!
Ich weiß absolut nicht mehr woran das liegen kann. Weiß auch nicht so
recht wie die LCD Routinen funktionieren, da steigt ein anfänger nicht
durch!
Hat jemand ne Idee wie ich weiter verfahren kann?
mfg michi
Gast #142410
Danke erstmal du deine Freizeit für mich opferst.
Nur weiß ich nicht was du meinst?! Der Text wird doch aus dem
Programmspeicher gelesen oder nicht? Wie gesagt hab keine Ahnung wie
die LCD Routinen.
Warnungen ignoriere ich im regelfall auch nicht. Nur wenn ich nicht
weiß warum sie auftreten. Was solls funktioniert auch mit warnungen.
Ausserdem haben sie nichts mit dem eigendlichen Problem gemeinsam, nehm
ich mal stark an.

Ich glaube langsam C mit avrggc ist nur was für Informatiker 8.
Semesters. Und nichts für ein kleinen dummen Industrieelektroniker der
sich im Erstensemester mit Ladungsverschiebung rumärgert!
mfg
Gast #142411
GCC hat die Angewohnheit beim Programmstart erstmal alle Variablen in
den RAM zu kopieren (weils C-Standart sein soll).

Du ersetzt:
lcd_puts("Platine Fertig!");
durch:
char StringImFlash[] PROGMEM = "Platine Fertig"; // im "Flash"
lcd_puts_p(StringImFlash);

PS: Mit einem Informatik Studium werde ich erst anfangen, wenn ich den
Zivildienst hinter mir habe.
Gast #142412
Hi, Malte
Ich habe gemacht was du geschrieben hast! Jetzt wird kein Satz mehr
richtig angezeigt. Es erscheinen immer wieder andere Zeichen.
Hab mal versucht einen Zeiger an lcd_puts_p zu übergeben
[lcd_puts_p(&balblubb)] und siehe da alles läuft richtig. Aber diese
Fehlermeldung erscheind dann:

main.c:254: warning: passing arg 1 of `lcd_puts_p' from incompatible
pointer type

mfg michi

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.