Forum: Mikrocontroller und Digitale Elektronik reset controller lcd


von björn (Gast)


Lesenswert?

hallo leute,

ich habe an meinem controller ein display, welches ich durch lcd_init zu 
beginn der main routine initialisiere.

die entsprechenden lcd h- und c-dateien habe ich eingebunden.

das problem: an sich funktioniert das lcd, jedoch nur, wenn man nach 
einschalten des controllers diesen resettet. danach geht alles super. 
vorher zeigt er nur weiße balken an.

hier mein code:
1
#define F_CPU 8000000
2
#define BAUD 9600
3
4
// BIBLITOTHEKEN
5
#include <avr/io.h>
6
#include <util/delay.h>
7
#include "lcd-routines_2560.h"
8
#include <stdlib.h>
9
#include <stdio.h>
10
#include <avr/interrupt.h>
11
#include <math.h>
12
13
// Interrupt
14
ISR(TIMER2_OVF_vect)
15
{  
16
  // Berechnungen ...
17
    
18
}
19
20
int main(void)
21
{
22
  
23
  lcd_init();
24
  lcd_clear();
25
  _delay_ms(500);
26
  lcd_setcursor(0,1);
27
  lcd_string("Willkommen!");
28
  lcd_setcursor(0,2);
29
  lcd_string("LCD-");
30
  lcd_setcursor(0,3);
31
  lcd_string("Display");
32
  _delay_ms(2000);
33
  lcd_clear();
34
35
  
36
  // INTERRUPT:
37
  TIMSK2 = (1<<TOIE2);
38
  TCCR2B = (1<<CS21) | (1<<CS20);
39
  sei();
40
  
41
    while(1)
42
    {  
43
  // ...
44
    }
45
46
}

wisst ihr, was falsch sein kann?

von Teo D. (teoderix)


Lesenswert?

Wird in der lcd_init 15ms gewartet, bevor es losgeht?

von björn (Gast)


Lesenswert?

wo finde ich das? in den h- c-routinen?

von björn (Gast)


Lesenswert?

ich hatte vorher alles an einem zweizeiligem display. da hat es 
funktioniert

von C. L. (calle)


Lesenswert?

Hi!

Probiere mal zu Beginn des Hauptprogramms eine Kleine Wartezeit von 
200ms.
Das LCD benötigt etwas Zeit um zu starten. Dein Programm scheint schon 
mit der Initialisierung des LCD angefangen zu sein, bevor dieses 
überhaupt bereit ist.

Schau mal ins Datenblatt des LCD.

Calle

von björn (Gast)


Lesenswert?

also in der h-routine steht: LCD_BOOTUP_ms 15

von björn (Gast)


Lesenswert?

das lcd ist von MIDAS: MIDAS  MC42004A6W-BNMLW  LCD

von Teo D. (teoderix)


Lesenswert?

björn schrieb:
> also in der h-routine steht: LCD_BOOTUP_ms 15

Mach das mal länger (~200ms), eventuell ist Deine Stromversorgung etwas 
"träge".
Wenn's dann funst, sollte man da mal den Aufbau der Schaltung 
überprüfen/denken!

von björn (Gast)


Lesenswert?

habs mit 200ms probiert. die weißen balken verschwinden, dafür stehen 
dann merkwürdige zeichen auf dem display

von Uwe (de0508)


Lesenswert?

Hallo björn

bitte stelle noch ein Bild von deinem Aufbau hier rein und überprüfe die 
Zeiten aus dem Datenblatt mit deiner LCD Routine.

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.