Nokia 5110 - Bascom

Voor het eerst ben ik aan de slag met een grafisch display, de Nokia 5110 (LPH7366) en een Atmega32. Het LCD heeft een schermgrootte van 84 bij 48 pixels. Via internet heb ik naar info gezocht en uitgeprobeerd. Ik krijg het echter niet aan de praat.

Het LCD is als volgt aangesloten :
LCD => ATMega32
---------------
Rst => B4
Gnd => Gnd
Sce => B3
D/C => B2
Sdi => C6
Sck => C5
Vcc => 3V3

Gebruikte sourcecode :

code:


$regfile = "m32def.dat"
$crystal = 1000000                                          'Intern Xtal
$hwstack = 32
$swstack = 16
$framesize = 24

'Library
 $lib "glcd-Nokia3310.lib"                                   'Nokia 5110

'Configs
 Config Graphlcd = 128x64sed , Rst = Portb.4 , Cs1 = Portb.3 , A0 = Portb.2 , Si = Portc.6 , Sclk = Portc.5

'Dims
 Dim I As Byte , N As Word , M As Byte
 Dim Text As String * 8

'Instellen pinnen
  Ddrb.2 = 1                               'B2 : D/c
  Ddrb.3 = 1                               'B3 : Sce
  Ddrb.4 = 1                               'B4 : Rst
  Ddrc.5 = 1                               'C5 : Sck
  Ddrc.6 = 1                               'C6 : Sdi
  Ddrd.5 = 1                               'OutPut JumboLED

 'Aliases
  Jumboled Alias Portd.5

'-= Start programma =-
  Jumboled = 1                             'LED aan
  Initlcd                                  'Initialiseer LCD
  Cls                                      'Clear Screen

'Eerste text
  Setfont Font6x8                          'Selecteer font
  Lcdat 2 , 16 , "Nokia-3310"              'Text
  Lcdat 4 , 30 , "84x48"                   'Text
  Wait 2                                   'Wacht 2 seconden
  Cls                                      'Clear Screen

  Showpic 0 , 0 , Walker                   'Afbeelding naar scherm
  Wait 2                                   'Wacht 2 seconden
  Cls                                      'Clear Screen

  Setfont Font6x8
  Lcdat 3 , 1 , "--------------"
  Lcdat 4 , 22 , "1 March"
  Lcdat 5 , 1 , "   Saturday   " , 1
  Lcdat 6 , 31 , "2014"

  Setfont Font12x16dig
  I = 20

 '-= Hoofd programma =-
  Do
     Incr I                                'Ophogen waarde i
     If I > 59 Then                        'Minuut voorbij ?
        I = 20                             'Ja : terug naar 20 
     End If
     Text = Str(i)                         'Sla getal op in TextString / Conversie waarde naar text
     Lcdat 1 , 1 , "23:" ; Text            '23:xx
     Jumboled = 1                          'LED AAN   
     Waitms 500                            'Wacht halve seconde
     Lcdat 1 , 1 , "23 " ; Text            '23 xx
     Jumboled = 0                          'LED UIT
     If I.0 = 1 Then                       'Alarm (denk ik)
        Showpic 66 , 1 , Ring              'Afbeelding naar scherm
     Else
        Lcdat 1 , 66 , "  "                'Afbeelding wissen / overschrijven
     End If
     Waitms 500                            'Wacht halve seconde (totale wachttijd : 1 seconde) 

    '-- Contrast regulation
    'For M = 175 To 200
    '   Glcdcmd 33 : Glcdcmd M
    '   Waitms 100
    'Next

     Glcdcmd 33 : Glcdcmd 200              'Normal Contrast

  Loop

End

'===============================================================================
Ring:
$bgf "Ring.bgf"
Walker:
$bgf "Walker.bgf"
$include "font6x8.font"
$include "font12x16dig.font"

Het resultaat
Op het scherm is niets te zien. Ter controle gebruik ik de LED om te zien of het programma niet ergens vast loopt. Het LEDje knippert, maar het scherm blijft blank.

Ik heb daarom het volgende gedaan :
- Diverse contrast-waarden geprobeerd
- Rst aan 3V3 via een 10K Ohm en verder een 1 uF naar Gnd
- Alle data-pinnen van LCD waren via 10K naar Atmega gekoppeld. Dat heb ik inmiddels omgezet naar 470 Ohm
- Een wachttijd van 100ms voor de "initlcd" geplaatst

Kortom, ik heb diverse zaken geprobeerd, maar na 1 week aanmodderen heb ik besloten om op CO te gaan vragen naar ervaringen en tips. Deze Nokia-schermen worden redelijk vaak gebruikt voor diverse hobby-projecten. Volgens mij zijn er ook wel CO'ers mee aan het stoeien. Ik vermoed dat ik iets heel simpels over het hoofd zie. Vandaar mijn vraag : wie ziet waar het probleem ligt en kan me op weg helpen ?

Van elk bezoek aan CO leer ik weer meer...

Hi Oxurane,

Ik heb geen verstand van Bascom maar moet de sck en sda niet op de C0 en C1 poorten van de Atmega32?
Deze poorten zijn volgens mij de hardware spi.

Groetjes Roel.

Pin C5 is standaard in gebruik voor de jtag en kun je voor niets anders gebruiken zolang de jtag niet wordt uitgezet, deze kun je uitzetten door de juiste fuse te disabelen of beter en veiliger onder de regel $framesize te zetten

bascom code:

Disable JTAG

Let wel dat het display 3V3 en je Mega32 waarschijnelijk 5V, of heb je een Mega32L?

Hier nog een complete beschrijving incl. hardware en Bascom code http://www.mkprojekt.de/index.php?content=3310_1

@Rules, C0&C1 zijn de hardware I2C, hardware spi zit op B5 t/m B7.

@Rules :
Nu je SPI specifiek noemt, ik heb eens gezocht onder Bascom naar SPI en zie dat daar de optie is voor softwarematige SPI.

@2N3055 :
De betreffende site is bekend bij me. Daar wordt vermeld dat er verschillende versies van het LCD bestaan. Juist degene die ik hier heb liggen, wordt niet behandeld.
Verder heb ik net geprobeerd om je suggestie in de brondcode te zetten, zelfs op de plek waar je het aan hebt gegeven. Ik krijg als melding "JTAG can not be disabled". Ook heb ik in de helpfile (Bascom) gezocht onder "Disable", maar kan niets vinden over deze optie.

Potverdorie, je hebt wel meteen de vinger op de juiste plek gelegd !!
Omdat het met Bascom niet ging, startte ik AVR Studio (4.19) op. Verbindingen met de ATMega32 en bij fuses zag ik 'm staan : JTAGEN. Bleek aangevinkt te zijn. Na het uitschakelen daarvan, prompt een reset en meteen beeld. Ik kan weer verder stoeien.

Inmiddels werkt de ATMega32 (zonder L) ook met een Xtal op 7.3728 MHz, samen met een paar touch-sensoren (TP223) en een LDR. Totaal trekt het nu iets van 35mA (3V3).
Ik heb ook nog een RTC (DS3231) en een aantal andere sensoren aangesloten op de ATMega32, waaronder een HTC30. Het gaat dus stapje voor stapje. Als ik er niet uitkom, ben ik hier weer te vinden.

Heel erg bedankt voor de hint / hulp ! Ik vind het geweldig !

Van elk bezoek aan CO leer ik weer meer...

Op 1 april 2018 03:31:48 schreef oxurane:
Verder heb ik net geprobeerd om je suggestie in de brondcode te zetten, zelfs op de plek waar je het aan hebt gegeven. Ik krijg als melding "JTAG can not be disabled". Ook heb ik in de helpfile (Bascom) gezocht onder "Disable", maar kan niets vinden over deze optie.

Denk dat je dan een behoorlijke oude versie van Bascom hebt, maakt niet uit het werkt nu.

Oh, dat wist ik niet. Wat me opviel was dat in de webshop van mcselec nooit te zien was / is welke versie ze aanboden. Ik heb even gekeken : ik werk met 2.0.7.8.
Welke versie is momenteel "recent" ?

Van elk bezoek aan CO leer ik weer meer...