Forum: Mikrocontroller und Digitale Elektronik Nokia 3310 Display arbeitet nicht


von Elektrikser (Gast)


Lesenswert?

Hallo,
ich habe ein Nokia 3310 Display an einen ATMEGA8L angeschlossen.
Anschluß des Displays wie bei www.microsyl.com. Der Treiber für das
Display ist auch von dort. An den ATmega ist nur noch ein 4MHz-Quarz
mit zwei 33pF Kondensatoren angeschlossen (XTAL1+2)und der Reset ist
mit 100k zu + und 47pF zu Minus belegt. Betriebsspannung ist 3,3 V.

Wenn ich die Schaltung einschalte habe ich oft das Problem, dass das
Display zwar im Hintergrund dunkler wird, aber es zeigt keine Schrift
an. Lasse ich es eine Zeit liegen und probiere es nochmal, dann habe
ich mit viel Glück eine Anzeige, die absolut richtig ist.

Meine Fragen:
Hatte schon jemand ein Initialisierungsproblem und mußte deshalb die
Verzögerungszeit verlangsamen?
Ist der Reset-Kondensator nicht zu klein? (Komme aus der
'51er-Programmierung)
Hat jemand ein Tip für mich, was es noch sein kann? Werde solange noch
weiter testen.

Gruß Elektrikser

von Elektrikser (Gast)


Lesenswert?

Hat sich erledigt. Der Reset-Kondensator war zu klein. Habe ihn durch
einen 100nF ersetzt.

Gruß Elektrikser

von Nils (Gast)


Lesenswert?

Ich habe mein 3310 Display ebenfalls wie auf www.microsyl.com 
angeschlossen. Als Versorgungsspannung habe ich einen Spannungsteiler 
der 5mA liefert. Wenn das Display mit Spannung versorgt wird, kann man 
genau 3,2V messen. Einziger Unterschied bei mir ist, das ich SCE 
permanent auf Masse gelegt gabe um einen Pin zu sparen. Somit ist zwar 
mein Display permanent Enabled aber das ist mir egal. Leider kann ich 
dem Display aber keine Zeichen entlocken. Ich habe versucht das Display 
mal im inversmodus zu initialisieren, aber das Display wird nicht 
schwarz. Kann das ein Problem mit der SCE Leitung sein. Darf man die 
nicht permanent auf Masse legen?


Teile aus meinem Quellcode:

int main (void)
{
clrb(PORTB,PB6);    //Reset auf Low
wait();             //100ms warten
setb(PORTB,PB6);    //Reset auf High
wait();             //100ms warten

LcdInit();
}


void LcdInit(void)
{
SPCR = 0x53;       //SPI Init Teiler/128
PORTA &= ~LCD_DC_PIN;
SPDR = 0x21;
while ( (SPSR & 0x80) != 0x80 );
SPDR = 0xC8;
while ( (SPSR & 0x80) != 0x80 );
SPDR = 0x06;
while ( (SPSR & 0x80) != 0x80 );
SPDR = 0x13;
while ( (SPSR & 0x80) != 0x80 );
SPDR = 0x20;
while ( (SPSR & 0x80) != 0x80 );
SPDR = 0x0D;
while ( (SPSR & 0x80) != 0x80 );
PORTA |= LCD_DC_PIN;
}

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.