Forum: Mikrocontroller und Digitale Elektronik LCD will nicht mit angehen


von Matthias (Gast)


Lesenswert?

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

von Matthias (Gast)


Lesenswert?

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

von Machtin (Gast)


Lesenswert?

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

von Matthias (Gast)


Lesenswert?

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???

von Condi (Gast)


Lesenswert?

Watchdig wäre ne Lösung oder mal nach dem Brown out schauen.

von Spess53 (Gast)


Lesenswert?

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

von Matthias (Gast)


Lesenswert?

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.

von Matthias (Gast)


Lesenswert?

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?

von Karl H. (kbuchegg)


Lesenswert?

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.

von Matthias (Gast)


Lesenswert?

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!!!

von Karl H. (kbuchegg)


Lesenswert?

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.

von Matthias (Gast)


Lesenswert?

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?

von Matthias (Gast)


Lesenswert?

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