mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Problem bei Nokia 3310 Display macht mich fertig!


Autor: dewe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich versuche schon sehr lange ein Nokia 3310 Display mit einem Pic 
anzusteuern! Ich habe auch schon sehr viele Informationen zu diesem 
Thema gefunden! Doch leider klappt es nicht.

Mein Display arbeitet einfach nicht und ich weiß einfach nicht warum!

Habe ich vielleicht irgendetwas im Code übersehen dass falsch sein 
könnte??
#include<18F4680.h>
#use delay (clock=20000000)
#fuses HS, NOWDT, NOPROTECT, NOLVP
#include<stdlib.h>
#include<stdio.h>

void main (void) {
   //int i;
   // configure SPI
   // SMP  CKE  D/A  P  S  R/W  UA  BF
   //  0    0    0   0  0   0    0   0
   #bit SSPSTAT_CKE = 0xb.6
   // WCOL  SSPOV  SSPEN  CKP  SSPM3  SSPM2  SSPM1  SSPM0
   //  0      0      1     0     0      0      0      1
   // SSPM3-SSPM0: 0000 -> Master Mode; Tosc/16
   // SSP Enable Bit: 1
   #bit SSPCON1_CKP = 0xb.4
   
   SSPCON1_CKP = 0;
   SSPSTAT_CKE = 0;
 
   setup_spi(spi_master|SPI_CLK_DIV_16);   
   
   //Display reset
   output_high(PIN_C4); // RES  
   delay_ms(5);
   output_low(PIN_C4); // RES  
   delay_ms(20);
   output_high(PIN_C4); // RES  
   
   output_low(PIN_D3);  // Chip enabled

   output_low(PIN_D2);  // D/C -> DIsplay mode
   spi_write(0x21);     
   spi_write(0xC8);     
   spi_write(0x06);     
   spi_write(0x13);     
   spi_write(0x20);
   spi_write(0x0C);
   
   output_high(PIN_D2);  // D/C -> DIsplay mode
   
   spi_write(0xFF);
   spi_write(0x00);
   spi_write(0xFF);
   spi_write(0x00);
   spi_write(0xFF);
   spi_write(0x00);
   spi_write(0xFF);
   spi_write(0x00);
   spi_write(0xFF);
   spi_write(0x00);
   spi_write(0xFF);
   spi_write(0x00);
   
   while(true) { 
   }
}

Die Schaltung habe ich so aufgebaut, wie es im Internet sehr sehr oft zu 
finden ist:
PIN
1 -> 3,3V
2 -> SCLK
3 -> SDI
4 -> D/C
5 -> SCE
6 -> GND
7 -> Vout
8 -> RES
(bei jedem PIN vom Display max.3,3V -> durch Spannungsteiler)

Ich habe schon alle Lötstelle des öfteren überprüft und auch mit dem 
Messgerät die Verbindungen überprüft, aber ich finde keinen Fehler!

Kann es sein, dass das Display beim anlöten beschädigt worden ist?
also ist das Display darauf sehr empfindlich (war nicht ganz einfach die 
Drähte anzulöten da ich nicht einen so feinen lötkolben habe)

Habe auch noch ein Display von einem Nokia5110 zuhause aber das 
funktioniert mit diesem Code auch nicht (habe den 9tn PIN 
berücksichtigt; PIN6 auf V+ -> interner Oszillator)

aja die beiden DIsplays funktionieren, also das vom 5110 funktioniert 
mit Sicherheit immer noch! und das vom 3310er hat, bevor ich die Drähte 
angelötet habe, auch funktioniert (jetzt kann ich es ja nicht mehr in 
das handy einbauen und testen)

Ich hoffe mir kann jemand helfen und danke schon im Voraus!

mfg dewe

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du verwendest einen sehr hohen SPI-Takt, da werden die Spannungsteiler 
zusammen mit der Eingangskapazität der Pins vom Display zu einem 
Tiefpassfilter und es ist keine Datenübertragung mehr möglich.

Du solltest die Taktfrequenz reduzieren oder einen richtigen 
Levelshifter benutzen.

Grüße,

Peter

Autor: dewe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Okay danke werd ich gleich ausprobieren!

Aber sollte das nicht so funktioneren?? denn laut Datenblatt vom PCD8544 
kann die Frequenz max 4Mhz
sein!
mfg dewe

Autor: dewe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So habe jetzt mal den SPI Takt umgeändert, funktioniert leider immer 
noch nicht. also setup_spi(setup_spi(spi_master|SPI_CLK_DIV_64)

was ich noch vergessen habe, der Kondensator der von Vout auf Masse geht 
hat einen Wert von 4,7µF! Müsste auch passen, da im Datenblatt steht, 
dass mindenstens ein 1µF Elko verwendet werden muss.

mfg

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuch auch mal ein paar delays mehr, hier treten auch sehr hohe 
Frequenzen auf, die dein Aufbau mit Widerstandsteilern nicht kann.

   output_high(PIN_C4); // RES
   delay_ms(5);
   output_low(PIN_C4); // RES
   delay_ms(20);
   output_high(PIN_C4); // RES

delay_ms(20); //hier

   output_low(PIN_D3);  // Chip enabled

delay_ms(20); //hier

   output_low(PIN_D2);  // D/C -> DIsplay mode

delay_ms(20);  //und hier

   spi_write(0x21);
   spi_write(0xC8);

Welche Werte verwendest du in den Spannungsteilern?

Grüße,

Peter

Autor: dewe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Habe ein paar dieser delays eingebaut, doch leider tut sich auch noch 
gar nichts.

Spannungsteiler: 470 Ohm, 226 Ohm

mfg dewe

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst du die Signale mit einem Ozilloskop nachmessen bezüglich des 
Timings und der Pegel?
Vor allem solltest du die Clockpolarity und Clockphase entsprechend 
dieser Einstellung überprüfen:

   SSPCON1_CKP = 0;
   SSPSTAT_CKE = 0;


Grüße,

Peter

Autor: dewe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Hab leider kein Oszilloskop.

Ich habe 2 3310 Displays(LPH7977), beide funktionieren, wenn ich das 
eine Display verwende funktioniert mein code (aber auch nicht richtig, 
denn der Vout Kondensator braucht nach abschalten der Spannung sehr 
lange bis er entladen ist, und erst dann funktioniert das display 
wieder), beim anderen tut sich gar nichts, sollte aber funktionieren ist 
ja das selbe!
Ich versteh das ned!! diese Displays bringen mich noch zur 
verzweiflung!! aber wir werden den fehler schon finden!!*g*

mfg

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.