Forum: Mikrocontroller und Digitale Elektronik Display Nokia 3510 (ohne"i") will nicht


von Rudi K. (yast)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,

habe ein Nokia Display vom 3510 am STK500 hängen.
Es kommen aber nur Balken.

Zwischen den Pins des AVR und des Dislay sind
3 Dioden in Reihe ( für 2,9V).

Habe die Hardware kontrolliert kein fehler gefunden.

Habt ihr ne Ahnung?

Achso nicht schimpfen, habe das in nem Anderen Thread geschriben
möchte diesen aber nicht auf mich lenken.

Motto: Eigenes Problem, eigener Thread ;-)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wer die Bilder in etwas größer sehen will, soll sie sich doch bitte beim 
Crossposting hier
Beitrag "Re: LCD Nokia 5510 Initialisierungsproblem"
ansehen.

Nein, 2.5MB sind wirklich völlig übertrieben

---> http://www.mikrocontroller.net/articles/Bildformate

Durchlesen!

von Rudi K. (yast)


Lesenswert?

oh sorry hab ich in der eile heut morgen übersehen.

kommt nicht wieder vor

von daniel (Gast)


Lesenswert?

Hallo,

>    Pin1 _Reset
>    Pin2 _Cs
>    Pin3 Gnd
>    Pin4 Sdata
>    Pin5 Sclk
>    Pin6 Vio  1.8V
>    Pin7 Vbooster in  2.7V
>    Pin8 Vlcd  max.12V

>das habe ich auch grad wieder gefunden, ist wieder anders zudem was ich 
>angeschloßen habe

Am besten alle mit einem Multi-Z mal "durchpiepsen". -> hast du ja 
bereits gemacht.

Die richtige Pinbelegung fuer deinen Code siehst du in Nokia_3310.h, 
bzw. musst du dort festlegen. Verwirrend ist das fuer CS (ChipSelect) 
zwei verschiedene Pins in Software definiert sind, obwohl in Hardware 
nur einer (SS) angeschlossen sein kann. Die Hardware macht die Vorgaben.

Wichtig, der Code den du verwendest macht HW-Spi, also(ATmega8):
| LCD3310         | ATmega8 |
--------------------------------------------
| SCLK (Pin5)     |  SCK |
| SDATA (Pin4)  | MOSI |
| CS (Pin2)        | SS |

Den Pin1 Reset kannst ueberall anschliessen, wichtig nach startup ein 
Reset N3310_InitDisplay ausfuehren und am besten den Reset lange 
halten also das delay aendern auf min. 200ms.
1
  sbi(N3310_CTRL_DDR,   N3310_RES_);
2
  cbi(N3310_CTRL_PORT,   N3310_RES_);      // Reset Lcd
3
  _delay_ms(100);
4
  sbi(N3310_CTRL_PORT,   N3310_RES_);      // _delay_ms(100);
5
   _delay_ms(200);

Was bei deiner LCD Pin Belegung fehlt ist der D/C - Data / Control Pin. 
Dieser ist wichtig, er steuert den Typ der Daten die ueber Hardware SPI 
zum LCD gesendet werden. Wo ist dieser?

Wie nun die Versorgungsspannungen fuer den Controller und den LCD selber 
sind, kann ich dir nicht genau sagen, wichtig ist dass die 
Versorgungspannung fuer den Controller das selbe Spannungsnievau wie der 
Mikrocontroller ist.

Ich sehe du brauchst nicht soviel loeten, aber immer schoen die 
Verbindungen pruefen, dann klappts auch. Viel Spass!

Gruss daniel

von Rudi K. (yast)


Lesenswert?

also egal was ich mach, des bleibt den den mustern....

hat noch wer ne idee?

von daniel (Gast)


Lesenswert?

Hallo,
kennst du den schon?
Beitrag "Re: Nokia 3310 Lcd Ansteuerung in AVR-GCC"

kannst ja den User mal eine PN schicken.

Was ist den nun mit dem D/C Pin?

Gruss daniel

von yast (Gast)


Lesenswert?

mit dem D/C pin habe ich ohne erfolg rumgespielt.
habs so defined gelassen und am lcd gebrückt, den hw-pin
gebrückt, nix, joa habs auf den selben pin defined, nix.
alle anderen möglichkeiten habe ich auch durch.

das lcd kann mich langsam mal ;-)

werde ihm mal schreiben, nein den link kannte ich noch nicht,
danke

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

yast schrieb:
> mit dem D/C pin habe ich ohne erfolg rumgespielt.
> habs so defined gelassen und am lcd gebrückt, den hw-pin
> gebrückt, nix, joa habs auf den selben pin defined, nix.

An der Vorgehensweise solltest Du noch arbeiten. Das Display hat seine 
Anschlüsse nicht aus Jux und Dollerei, die haben eine Bedeutung.

Auf http://www.jtronics.de/avr-projekte/display-nokia3310.html ist die 
Beschriftung der Pinbelegung etwas verrutscht, deswegen hier nochmal:

1 - VCC     2,7 bis 3,3V
1 - SCK     Clock
2 - SDIN    Data in
3 - D/C     Data=1/Command=0
4 - SS      Chip select - low aktiv
5 - GND     GND
6 - VOUT    Contrast LCD(~10µF to GND)
7 - RES     Reset LCD - low aktiv


Vielleicht funktioniert die ganze Angelegenheit bei Dir auch nicht, weil 
das Frickelboard Kontaktprobleme hat; das wäre nicht das erste Mal in 
diesem Forum.

von yast (Gast)


Lesenswert?

genau so hatte ich es angeschlossen.

das tauschen war nur noch ein verzweiflungsakt....
das pinout habe ich von der seite.

habe vom avr-pin pis zum displaypin gemessen, immer durchgang.

kann mir einer die defines erklären(also das doppelte wie oben 
beschrieben)?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

yast schrieb:
> (also das doppelte wie oben beschrieben)?

Was magst Du damit meinen?

von yast (Gast)


Lesenswert?

daniel schrieb:

> Die richtige Pinbelegung fuer deinen Code siehst du in Nokia_3310.h,
> bzw. musst du dort festlegen. Verwirrend ist das fuer CS (ChipSelect)
> zwei verschiedene Pins in Software definiert sind, obwohl in Hardware
> nur einer (SS) angeschlossen sein kann. Die Hardware macht die Vorgaben.
> Gruss daniel

das meinte ich damit.

Gruß

von daniel (Gast)


Lesenswert?

Hallo
in Nokia_3310.h ist es wie folgt definiert:
1
#if defined (__AVR_ATmega8__)
2
...
3
#elif defined (__AVR_ATmega128__)
4
...
5
#else
6
  #error Please define in Nokia_3310.h the hardware pins for your device !
7
#endif
Also wenn du
>Please define in Nokia_3310.h the hardware pins for your device !
beim compilieren erscheint, hast du weder ATmega8, noch ATmega128, oder 
vielleicht gar nicht mcu definiert(-Dmcu= und #include <avr/io.h> 
setzen die richtigen defines).

Ich nehme mal an du hast ein ATmega8 dann ist fuer dich nur folgender 
Code interresant.
1
...
2
#if defined (__AVR_ATmega8__)
3
  // Lcd Port Settings ATmega8 
4
  // Lcd Port Settings ATmega8 
5
  #define N3310_SER_PORT    PORTB
6
  #define N3310_SER_DDR    DDRB
7
  #define N3310_SCLK      PINB5  // clock
8
  #define N3310_MOSI      PINB3  // send data
9
  #define N3310_CS_           PINB2   // SS
10
11
  #define N3310_CTRL_PORT    PORTD
12
  #define N3310_CTRL_DDR    DDRD
13
14
  #define N3310_DC      5  // Trasfer DATA(high) or Control(low)
15
  #define N3310_CS      6  // Chip Enable
16
  #define N3310_RES_      7
17
...
Der Author der Bibliothek arbeitet mit Hardware SPI und initialisiert 
entsprechend alle am N3310_SER_DDR dafuer. Jedoch kontrolliert er den CS 
Pin selbst, welche mittel N3310_CTRL_DDR initialisiert werden. Da nun CS 
am N3310_SER_DDR nicht gleich dem am N3310_CTRL_DDR ist, kann es nicht 
gehen.

Variante 1: Headerfile an die Hardware anpassen.
Fuer einen Atmega8 wuerde ich es wie folgt abaendern:
1
#if defined (__AVR_ATmega8__)
2
// Lcd Port Settings ATmega8 - DIP
3
#define N3310_SER_PORT  PORTB
4
#define N3310_SER_DDR   DDRB
5
#define N3310_SCLK      PB5  // pin19 serial clock
6
#define N3310_MOSI      PB3  // pin17 serial data out
7
#define N3310_CS_       PB2     // pin16 serial chip select (nur Init)
8
9
#define N3310_CTRL_PORT PORTB
10
#define N3310_CTRL_DDR  DDRB
11
#define N3310_DC        PB1  // pin15 Trasfer DATA(high) or Control(low)
12
#define N3310_CS        PB2  // pin16 serial Chip Select (nur Steuerung)
13
#define N3310_RES_      PB0  // pin14 Reset LCD Controller
Wie du siehst habe ich alle Pins an PortB gelegt, so ist auch N3310_CS_ 
gleich N3310_CS, werden aber beide initialisiert.

Variante 2: Hardware an das Headerfile anpassen.
Fuer einen ATmega8 DIP wie folgt:
(oben sind die Ziffern verrutscht, ich beziehe mich auf korrigierte 
Ziffern, Pin 1 am Display musst du selber finden)
PIN LCD3310   - PIN ATmega8-DIP
2 - SCK       - 19 (PB5) Clock (HW SPI)
3 - SDIN      - 17 (PB3) Data in (HW SPI)
4 - D/C       - 11 (PD5) Data=1/Command=0
5 - SS        - 12 (PD6) Chip select - low aktiv
8 - RES       - 13 (PD7) Reset LCD - low aktiv

Spannungsversorgung musst du selber wissen. Bei 5V eben 3 Dioden in die 
Hauptzuleitung fuer Controller UND Display und mal messen.
1 - VCC     2,7 bis 3,3V
6 - GND     GND
7 - VOUT    Contrast LCD(~10µF to GND)

Wenns immer noch nicht geht mal eine Bibliothek ohne HW SPI versuchen 
oder das Display auseinander bauen :).

Gruss daniel

von daniel (Gast)


Lesenswert?

Hallo,
wie ich beim nochmaligen anschauen der Routinen sehe, wird die 
Helligkeit (Vout) ueber den OC1B gesteuert. Also mittels PWM ein eine 
Spannung fuer den Contrast erzeugt.
1
void N3310_SetBackLight(uint8_t Helligkeit)  {OCR1B = Helligkeit*10;}

Damit kann man Vout LCD pin 7 direkt an uC pin 16 anschliessen und den 
Contrast per Software steuern.

Aus diesem Grund ist N3310_CS_ - PB2 (SS) aus meiner Variante 1 oben 
nicht verwendbar und muesste auf ein anderen freien Pin (PB6, PB7) am 
Port B gelegt werden. Das geht aber auch nur wenn kein externer Quarz 
verwendet wird. Andernfalls eben die Init nicht aufrufen in main.
1
int main(void)   
2
{
3
  int x =0;
4
  N3310_spiInit();
5
  //N3310_SetBackLightInit(0);
6
  N3310_InitDisplay();

Gruss daniel

von daniel (Gast)


Lesenswert?

Hallo,

>Damit kann man Vout LCD pin 7 direkt an uC pin 16 anschliessen und den
>Contrast per Software steuern.
Das sollte man auf keinen Fall, den Vout bedeutet sicherlich 
Spannungsausgang.

Gruss daniel

von yast (Gast)


Lesenswert?

jetzt hab ichs gerafft mit der pindefinition.(Habe einen At88
ist aber pinkompatibel...)

das heißt die unteren defines sind dann für software spi?

werde das heut mal ausprobieren und dann berichten.

kontrast mach ich über ein C.geht wunderbar.

lasse also den pwmpin einfach frei.

von yast (Gast)


Lesenswert?

mit dem At88 ist quatsch der ist in nem anderen projekt verbaut..
aber wenns mit dem At8 läuft, dann werde ich das auch angehen.

du siehst daniel, wirst nicht arbeitslos ;-)
Vielen dank für die Hilfe( und geopferte Zeit)

von daniel (Gast)


Lesenswert?

Hallo,
>die unteren defines sind dann für software spi?
Teils. So wird das CS in den unteren Defines definiert und das obere 
define fuer CS hat gar keine bedeutung, das es in der Software sogar 
ueberschrieben wird mit dem OC1B. Also auf keinen Fall als CS nehmen. 
Aber wichtig ist es, deswegen in den unteren defines definieren.

Probier erstmal die Variante2 mit eine ATmega8.

>Vielen dank für die Hilfe( und geopferte Zeit)
Gut Ding will Weile haben.

Gruss daniel

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

Hast du es jetzt hin bekommen?
Die Lib habe ich erst letzte Woche mit einem Atmega128 getestet und 
anschließend auf einen Xmega portiert. Hat alles super geklappt.

Der Ausgangspin für das Hintergrundlicht ist nur optional und soll über 
PWM
die LEDs für das Hintergrundlicht schalten. Natürlich über einen 
externen Transistor oder Mosfet.

Grüße martin

von yast (Gast)


Lesenswert?

nein leider hatte ich gestern keine zeit. heute wirds aber was
denke ich.

achso was mir aufgefallen ist das display oben im bild hat nur
8pins ,wie oben beschrieben, nichts weiter.

das andere display, auch angeblich 3510 hat neben den 8
pins noch 4 stück an denen kondensatoren sitzten.
Die pins sind aber nicht an die federkontakte angeschlossen.
was sind das für welche (hab leider kein bild da).

von daniel (Gast)


Lesenswert?

Hallo,
> auch angeblich 3510 hat neben den 8 pins noch 4 stück an denen
> kondensatoren sitzten.
> was sind das für welche
Kann es sein das es ein 3510i ist, dann ist diese nicht monochrom. Das 
3510(ohne i) ist monochrom. So hab ich es hier im forum mal gelesen. 
Einfach mal nach 3510 suchen.

Gruss daniel

von daniel (Gast)


Lesenswert?

Hallo,
schau mal hier, veilleicht findest du ja eins was deinem unbekannten 
aehnelt.
http://www.module.ro/nokia_3510.html

Gruss daniel

von yast (Gast)


Lesenswert?

ist schwer da es nur zeichnungen sind. danke den link kenne ich;-)
beim 6310 sind noch 3 "knubbel" gezeichnet, das könnten die
c´s sein. ich mach heut abend mal nen foto.
komisch ist nur, das sie die gleichen plexiglasträger haben
wie das mit dem ich grad kämpfe.

von yast (Gast)


Lesenswert?

also beide varianten funktionieren nicht.

vlt hat das display auch ne macke?!

keine ahnung. hab alles durchgeklingelt, passt.
spannung gemessen, passt.

keine ahnung vlt fuses? habe alles standart. nur den
quarz intern auf 8 Mhz, extern hängt natürlich keiner dran.

noch ne idee? sonst wandert das die aufm direkten weg in de müll :D

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

Hab grad gesehen, dass das ja kein N3310 ist, daher wird das nicht gehn.
Die Displays sehen zwar ähnlich aus, haben aber komplett andere 
Initialisierungsroutinen.

von Martin J. (bluematrix) Benutzerseite


Lesenswert?

such lieber ein richtiges N3310 da kannst du sicher sein, dass es auch 
geht

von daniel (Gast)


Lesenswert?

Hallo,

>noch ne idee?
Bist du auch sicher das der HW-SPI aktiv ist? Ansonsten SW-SPI mal 
probieren der muss dann funktionieren. Gibts in dem Code 
Beitrag "LCD Nokia 5510 Initialisierungsproblem" ein paar Ansaetze, 
musst eben die Defines anpassen.
1
void LCD_write_byte(unsigned char dt, unsigned char command)
2
{
3
  unsigned char i;    
4
    sce0;   
5
  if(command)
6
    dc1;
7
  else
8
    dc0;    
9
  for(i=0;i<8;i++)
10
  { 
11
    if(dt&0x80)
12
      sdin1;
13
    else
14
      sdin0;
15
    dt=dt<<1;  
16
    sclk0;       
17
    sclk1;       
18
    sclk0;    
19
  }    
20
}
Hast du mal den User Meik http://www.mikrocontroller.net/user/show/meik 
eine Private Nachricht geschickt und gefragt wie er es gemacht hat?

> dass das ja kein N3310 ist, daher wird das nicht gehn.
Da gab es hier irgendwo im Forum mal den Mythos das es geht, aber wir 
sind ja alle Mythbusters.

>sonst wandert das die aufm direkten weg in de müll
Auf keinen Fall ! Vorher  AUS EINNANDER NEHMEN und hier Fotos posten. 
Wir wollen ja nicht dumm sterben und sind alle neugirieg wie es in drin 
aussieht. Dann kannst es ja als jPad mini auf Ebay verticken :).

Gruss daniel

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.