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
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
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
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 :-)
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.