mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430F2013 steuert Nokia-3310-Display an


Autor: Klaus L. (keyel80)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

zum Einstieg in die Microcontroller-Programmierung habe ich mir das 
eZ430F2013 von TI bestellt und möchte nun - nachdem ich die LED in allen 
Varianten blinken ließ - ein bei eBay erworbenes Display für ein 
Nokia-3310-Handy ansteuern. Den Aufbau dazu seht ihr im Anhang.

Als IDE nutze ich CodeComposer Essentials. Weiter unten habe ich den 
Inhalt   von den Drei Assemblerroutinen aus meinem Projekt angefügt. Es 
soll alle Segmente des Displays einschalten und dann die LED blinken 
lassen.
Tja, was soll ich sagen. Die LED blinkt aber beim Display tut sich gar 
nichts. Kann mir jemand von euch sagen, wo ich nach dem Fehler suchen 
sollte bzw wo ich einen Fehler gemacht habe?

Vielen Dank für eure Hilfe!

Klaus

main.asm:
;******************************************************************************
 .cdecls C,LIST,  "msp430x20x3.h"
 .include "std.asm"
 .include "nokia3310.asm"

;------------------------------------------------------------------------------
            .text                           ;
;------------------------------------------------------------------------------
pcf8544_RESET   .set BIT1
pcf8544_CE  .set BIT2
pcf8544_DC  .set BIT3

RESET       mov.w   #280h,SP                ; Initialize stackpointer
StopWDT     mov.w   #WDTPW+WDTHOLD,&WDTCTL  ; Stop WDT
InitDCO      mov.b   &CALDCO_1MHZ,&DCOCTL    ; Set DCO for 1MHz using
          mov.b   &CALBC1_1MHZ,&BCSCTL1   ; calibration registers
SetupP1     bis.b   #(BIT5+BIT6), &P1SEL
      bis.b  #(pcf8544_RESET+pcf8544_CE+pcf8544_DC+BIT5+BIT6+BIT0), &P1DIR
      
SetupUSI  mov.b   #(USIPE6+USIPE5+USIMST+USIOE+USISWRST), &USICTL0; 
                ;USIPE7 not set because SOMI is not needed
    mov.b   #(1*USICKPH), &USICTL1;
    mov.b   #(USIDIV_3+USISSEL_2+0*USICKPL), &USICKCTL
; Clock = SMCLK, /16
    bic.b   #USISWRST,&USICTL0; Enable USI                        

ResetDisp  bic.b   #pcf8544_RESET, &P1OUT
    mov.w   #200, R15
    call    #std_DelayMS
    bis.b   #(pcf8544_RESET+pcf8544_CE), &P1OUT
                ; release reset of display, but disable display
    mov.w   #100, R15
    call    #std_DelayMS

Play    mov.b #021h, R15;   // LCD Extended Commands.
    call  #pcf8544_sendCMD
          mov.b #0C8h, R15;  // Set LCD Vop (Contrast).
          call  #pcf8544_sendCMD
          mov.b #006h, R15;  // Set Temp coefficent.
          call  #pcf8544_sendCMD
          mov.b #013h, R15;  // LCD bias mode 1:48.
          call  #pcf8544_sendCMD
          mov.b #020h, R15;  // LCD Standard Commands, Horizontal addressing mode.
          call  #pcf8544_sendCMD
          mov.b #009h, R15;  // all segments on
          call  #pcf8544_sendCMD
                                            ;        
Mainloop    xor.b   #001h,&P1OUT            ; Toggle P1.0
      td_Delay
            jmp     Mainloop                ; Again
                                            ;


      
;-----------------------------------------------------------------------------
;           Interrupt Vectors Used MSP430
;-----------------------------------------------------------------------------
            .sect     ".reset"              ; MSP430 RESET Vector
            .short  RESET                   ;
            .end

nokia3310.asm:
--------------------------------------
.cdecls C,LIST,  "msp430x20x3.h"
pcf8544_RESET   .set BIT1
pcf8544_CE  .set BIT2
pcf8544_DC  .set BIT3

pcf8544_sendCMD
        bic.b #pcf8544_DC, &P1OUT
ENABLE  bic.b #pcf8544_CE, &P1OUT; ;enable the display-controller
        ;move data to the register        
        mov.b R15, &USISRL          
        ;SPI-Message-Length=8bits
        mov.b   #8, &USICNT
        ;and the transmission starts...
        ;wait until SPI-Buffer is free
Li  cmp.b #0, &USICNT
        jnz   Li
        ;disable the display-controller
        bis.b    #pcf8544_CE, &P1OUT
        ret 
std.asm:
--------------------------------------------
std_delay  .macro
  mov.w   #0x0000,R15             ; Delay to R15
L1      dec.w   R15                     ; Decrement R15
        jnz     L1                      ; Delay over?
        .endm
         
std_DelayMS
Lout    mov.w #332, R4 ; 2cycles
Lin  dec.w R4; 1 cycle
        jnz   Lin; 2 cycles
        dec.w R15; 1 cycle
        jnz   Lout; 2 cycles
        ret ; 3 cycles

Autor: Klaus L. (keyel80)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum,

an welcher Stelle darf ich noch mehr Informationen zu meinem Problem 
nennen, sodass mir jemand helfen kann.

Vielen Dank!

Klaus

Autor: Kwi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst mir ja mal ne Emailadresse mailen an spam@tismanie.net, dann 
gucken wir was wir machen koennen. Und wenn was rauskommt posten wirs 
hier...

Am besten sendest gleich das Datenblatt mit von dem Display...

Hab mir auch vor ner Woch das Kit geholt...Echt klasse...

Kleiner Tipp am Rande wie ichs immer mache...

Ich schreib erst das Programm ( in c) auf dem PC mit ner IO Karte, oder 
von mir aus mit dem Druckerport....

Die AnsteuerRoutinen fuer die Leitungen ein eine seperate Funktion, 
danach wenn alles geht kann mans leicht portieren und das debugging ist 
wesentlich einfacher aufm Pc...

MfG kwi

Autor: Klaus L. (keyel80)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Kwi,

anbei findest du das Datenblatt. Bezüglich der Ansteuerung des Displays 
habe ich mich von http://www.olimex.com/dev/msp-169lcd.html inspirieren 
lassen.

Der Widerstand in meiner Schaltung zieht Reset auf Masse, wenn der 
MSP430-Ausgang hochohmig ist (siehe hierzu Datenblatt - Reset muss 
spätestens 100ms nach dem Einschalten auf Masse gezogen werden)

Mir ist übrigens aufgefallen, dass der Spannungsregler im eZ430 3,6V 
liefert, wohingegen das Display mit 3,3V versorgt werden soll. +-10% 
sollten aber eigentlich kein Problem sein...

Tja, mein Notebook hat leider keinen Parallelport mehr...

Vielen Dank (ich sende dir diesen Text auch per Mail)

Gruß Klaus

Autor: Klaus L. (keyel80)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Ich habe jetzt mal versucht, mit dem Multimeter etwas zu messen. Also:

-der Reset-Eingang wird korrekt runtergezogen

-am VOUT-Pin (am positiven Anschluss des Kondensators) sollte sich ja
dann eigentlich die Versorgungsspannung des Displays (ca 8V oder so...)
messen lassen. Hier liegt keine Spannung an

-ich habe in die Endlosschleife folgende Befehle eingebaut

mov.b #0AAh, R15;  // test
call  #pcf8544_sendCMD

danach habe ich eine Spannung von 1,19V gemessen. Na ja, scheint OK.
(50% PWM-0-1-0-1-Signal und 50% Latenzzeit, bis die Register wieder
geladen sind.)

Tja, das sind meine aktuellen Erkenntnisse. Leider hilft mir das nicht
weiter. Insbesondere würde mich interessieren, weshalb die
Betriebsspannung für das Display nicht erzeugt wird.

Danke für eure Hilfe.

Gruß KLaus

Autor: Kwi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Klaus,

deine Mailadresse funktioniert nicht kommt immer:

Ihre Nachricht hat einige oder alle Empfänger nicht erreicht.

      Betreff:  AW: [SPAM] ez430 steuert nokia3310-display an
      Gesendet am:  26.03.2007 01:34

Folgende Empfänger konnten nicht erreicht werden:

      'KLaus Liebler' am 26.03.2007 01:34
            550 5.7.1 Unable to relay for xxx"@klaus-liebler.de


xxx" hab ich ausgeblendet ;)

und da noch nichts auf deiner HP hast naja kann ich dir auch nicht 
zurueckschreiben ;)

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.