Forum: Mikrocontroller und Digitale Elektronik Seltsamer Fehler?! Belichtungsgerät


von michi (Gast)


Lesenswert?

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

von michi (Gast)


Angehängte Dateien:

Lesenswert?

Datei vergessen :o)

von KoF (Gast)


Lesenswert?

dein anhängsel ist defekt :-(

von Rufus T. Firefly (Gast)


Lesenswert?

Nö, WinRAR 3.20 findet keine Fehler.

von michi (Gast)


Angehängte Dateien:

Lesenswert?

Für alle die mit RAR nichts anfangen können.

von michi (Gast)


Lesenswert?

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

von michi (Gast)


Lesenswert?

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

von Malte (Gast)


Lesenswert?

Erst war der Flash voll, jetzt ist's der RAM...
Sorg dafür dass deine Texte nur bei bedarf in den Ram kopiert werden.
http://www.mikrocontroller.net/wiki/AVR-GCC-Tutorial#Speicherzugriffe
PS: Compilerwarnungen sollte man auch nicht ignorieren :-)

von michi (Gast)


Lesenswert?

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

von Malte (Gast)


Lesenswert?

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.

von michi (Gast)


Lesenswert?

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

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
Noch kein Account? Hier anmelden.