LCD-Anzeige spinnt

OP #2793795
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.