LCD-Anzeige spinnt

OP #2793795
Lesenswert?

Hallo!


Zur zeit bastle ich an einer µC Uhr plus Augabe am LCD-Display(16*1), 
soweit funktioniert eigentlich alles sehr gut, doch irgendwo hat sich 
ein Fehlerteufel eingeschlichen der bei längerem Betrieb der Uhr aktiv 
wird

Auf den Bildern klar erkennbar:
http://s1.directupload.net/file/d/2982/wb5bxjnu_png.htm
http://s7.directupload.net/file/d/2982/gek9lfm7_png.htm

Nach mehreren Stunden Laufzeit(weiß nicht exakt wie lange) schickt mir 
das LCD-display nur noch Hieroglyphen :)

Die LCD-Anzeige wird jede Minute über folgenden Code aktualisiert:
1
else{          //gebe uhrzeit auf LCD aus
2
    
3
    char *buff = malloc(sizeof(char)*3);
4
    lcd_clear();
5
    
6
    itoa(zeit.std, buff, 10);
7
    lcd_string(buff);
8

9
    lcd_data(':');    
10

11
    itoa(zeit.min, buff, 10);
12
    lcd_string(buff);    
13
    
14
    lcd_setcursor(6, 0);
15
    lcd_string(wochentag_s[datum.wochtag-1]);
16

17
    lcd_setcursor(0,1);
18
    lcd_data(',');    
19

20
    itoa(datum.tag, buff, 10);
21
    lcd_string(buff);
22

23
    lcd_data('.');    
24

25
    itoa(datum.mon, buff, 10);
26
    lcd_string(buff);
27
 }

Das Programm hängt sich vermutlich nicht ganz auf, da ich noch 
Änderungen der Zeichen erkennen kann.


Mit freundlichen Grüßen
Gast #2793800
Lesenswert?

Ich würde den Fehler in den Kommunikationsroutinen zum Display suchen. 
Vielleicht ist der Mikrocontroller zu schnell.

Du könntest auch Teile der Ausgabe auskommentieren, um zu sehen, ob der 
Fehler dann verschwindet.

Notfalls kommentiere die gesamte Ausgabe aus und gebe nur noch einen 
festen String aus. Wenn dann immer noch Hiroglyphen erscheinen, leigt 
der fehler nicht an den auskommentierten zeilen.
Gast #2793804
Lesenswert?

Gibst du den Speicher, den du für buff allokierst auch irgendwo mal 
wieder frei? Gerade bei Mikrocontrollern ist dynamischer Speicher in den 
meisten Fällen eh unnötig. Und in diesem Fall erst recht, da buff lokal 
ist und nirgendwo rausgegeben wird.
1
char buff[3];
sollte das heißen.
Gast #2793806
Lesenswert?

Mehr vom Code wäre nicht schlecht. Könnte eventuell ein Überschreiben 
des Puffers sein, je nachdem wie viele Zeichen du so ausgibst.
Wärme (Überhitzung) könnte auch sein, ebenso wie irgendetwas anderes im 
Code, was dein Timing oder die Übertragung an das Display stört (ISR 
oder ähnliche Sauereien)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren