Hallo, Ich rätsele schon seit einer Woche an der Sache und ich weiß nicht was ich machen kann. Mein Problem: Ich habe einen AVR Butterfly mit den ATMega 169 und das LCD Display (11 Segment) was sich auch auf den stk501 befindet. Zusatzinformation meine Spannungsversorgung(SMD, LM-317) wird von 15V auf 10V und dann auf 4,5V, für den Butterfly runterregele mit fest Spannungsreglern. Muß leider so sein weil ich die 10V auch brauche, zumindest die Spannungen stimmen alle. Zusätzlich hab ich an dem ADC Port den Pin5 als Analog Eingang angeschlossen. Mein Problem ist nun wenn ich die 15V anschliesse läuft mein Controller an, aber nicht mein LCD Display!! Ich vermute das die Spannungsregler zulange brauchen um auf ihre 4,5V zukommen und deshalb der Controller vor dem Display schon los rennt. Da er schneller als das Display ist könnte ja die initialisierung des LCD vielleicht nicht erfolgreich durch geführt werden. Ein kleine Hilfe vielleicht. Wenn ich über testen die direkte Stromversorgung des Butterfly's abziehe und ein bissl warte und wieder anschliesse läuft alles perfekt, das Display springt mit an und mein Programm läuft ohne Probleme. Was denkt ihr über das Problem? Danke schon mal im voraus Matthias
Ich bin's gerad nochmal! Hab gerad nochmal probiert so an zugriegen. Und es ging wie gesagt nicht an, aber als ich die 15V raus gezogen hab und wieder angeschlossen hab, ging das Display verwunderlich an! Matthias
Hallo Matthias, wenn der Verdacht da ist das der µC zu schnell angeht und den LCD-Controller initialisiert devor der bereit ist dann programmier dir doch ne Warteschleife vor der Displayinitialisierung. Gruss Martin
Hm klingt gut, sowas hatte ich auch schon gedacht und eine Delay schleife von ungefähr 2 sekunden davor programmiert. Aber So wirklich geholfen hat es nicht! vielleicht eine gute Idee: Vielleicht nach einer gewissen Zeit noch mal einen Reset über den reset Pin machen? Aber was müßte ich da Hardware technisch noch realisieren???
Hi Das Display vom Butterfly hat keinen eigenen Controller. Der 169 ist der Displaycontroller. Also wenns nicht klappt, liegt es an der Programmierung. MfG Spess
Aber wenn es an der Programmierung liegt wie kann es denn sein, dass er manchmal angeht und manchmal nicht? Außerdem benutze ich größtenteils die Originalsoftware vom Butterfly. Habe im Prinzip nur meine Funktionen zusätzlich eingefügt.
Ja, hab mal den original Code(Butterfly) drauf gespielt und siehe da, das Programm läuft immer ohne Probleme!! Also muß es anscheint doch am Programm an sich liegen. Aber wie erklärt sich der zufall ob es angeht oder nicht. Benutz ja den original code und schreiben meine Funktionen dazu. Und habe dann im Menü nur den Aufruf der original funktionen raus genommen. Also Querverweise oder sowas müßten noch funktionieren. Aber ich komm nicht dahinter woran es liegt. Ich schreibe die Funktionen gerad Schritt für Schritt nochmal rein. Und wenn dann der Controller wieder mal nicht will kontrolliere ich die funktion und stelle fest das sie genau so aussieht wie die original funktion von der ich sie kopiert habe, nur das meine variablen drin sind. Und deren deklaration ist wirklich richtig, mehrmals kontrolliert. Woran könnte das denn liegen?
Matthias wrote: > Und wenn dann der Controller wieder mal nicht will kontrolliere ich die > funktion und stelle fest das sie genau so aussieht wie die original > funktion von der ich sie kopiert habe, nur das meine variablen drin > sind. Was heist: "drinnen sind" > Und deren deklaration ist wirklich richtig, mehrmals kontrolliert. > > Woran könnte das denn liegen? Das könnte zb daran liegen, dass globale Variablen vom Compiler auf 0 initialisiert werden, während das bei funktionslokalen Variablen nicht so ist.
Gut, hab gerad nochmal kontrolliert. Die lokalen setze ich auch auf 0!! Aber mir ist gerad eine Idee gekommen, ich teste gerad mit dem PROGMEM. Und es lassen sich wahrscheinlich kleine Erfolge verzeichnen, aber warum es damit zusammenhängen kann wüßte ich jetzt auch nicht. Aber erstmal vielen Dank für die Hinweise!!!
Matthias wrote: > Gut, hab gerad nochmal kontrolliert. > Die lokalen setze ich auch auf 0!! Tut mir leid. Aber mehr kann ich in meiner Glaskugel nicht sehen. Die muesste wahrscheinlich wieder mal zum Service.
Also ich glaub ich weiß jetzt wo genau das Problem liegt. Die Menüpunkte sind wie folgt definiert:
1 | const MENU_STATE menu_state[] PROGMEM = { |
2 | // STATE STATE TEXT STATE_FUNC
|
3 | {ST_AVRBF, MT_AVRBF, NULL}, |
4 | {ST_AVRBF_REV, NULL, Revision}, |
5 | ...
|
6 | |
7 | ...
|
8 | {ST_OPTIONS_FSS, MT_OPTIONS_FSS, NULL}, |
9 | {ST_OPTIONS_FSS_MAX_WEIGHT, MT_OPTIONS_FSS_MAX_WEIGHT, NULL}, |
10 | {ST_OPTIONS_FSS_MAX_WEIGHT_FUNC, NULL, MAX_Weight_Func}, |
11 | {ST_OPTIONS_FSS_MAX_VOLTAGE, MT_OPTIONS_FSS_MAX_VOLTAGE, NULL}, |
12 | {ST_OPTIONS_FSS_MAX_VOLTAGE_FUNC, NULL, MAX_Voltage_Func}, |
13 | //->
|
14 | {0, NULL, NULL}, |
15 | |
16 | };
|
Wenn ich an dieser(->) stelle nun noch einen Menüpunkt anfüge
1 | {ST_MESSUNG, NULL, Messung}, |
(Die funktion Messung existiert und auch ST_MESSUNG hab ich definiert) springt der Controller nicht mehr an. Hat irgendjemand ne idee woran das liegen könnte?
Ja also Danke nochma an alle Hab den fehler jetzt gefunden und behoben. Das Boot reset Vector fusebit war gesetzt. Da gabs wohl irgendwie probleme.
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.