Page 1 of 1

AneexWIFI RDS y pantalla Nokia 5110 (PCD8544)

Posted: Mon Feb 22, 2021 3:34 am
by ETIPatagonia
Hace un tiempo hice un articulo (version web - version pdf) de como trabajar las pantallas Nokia 5110 (PCD8544) con microcontroladores pic en lenguaje Basic (PICBASIC pro)... Ayer arranque con mis escasos conocimientos del Basic de annex, tratar de sacar algo en limpio para poder emplear estas pantallas, pero creo que estoy muy verde para sacar algo concreto, ya que no encontré algún comando similar a SHIFTOUT como para poder trabajar una comunicación SPI por software, sin la necesidad de implementar si o si los puertos SPI del hardware propio. Después pensé en intentar replicar un shiftout con un clock por software, pero me olvide que nuestro interprete annex no trabaja con variables tipo BYTE y BITS :cry: , asi que quede en el mismo punto de inicio... en nada :lol:
Bien, pasando en limpio:
Inicializar el controlador de estos display no es difícil... Les detallo una de las tantas maneras en que se puede tener un control sencillo con otro interprete a modo ejemplo:

Inmediatamente después de encender nuestra pantalla, el contenido de los registros de este, contendrán valores indefinidos, por lo que es necesario generar un reset poniendo en estado bajo el pin “Reset” (RST).
Poniendo el pin /RES a nivel bajo durante un tiempo limitado (máx. 100mS) generamos el reset para poner a cero los registros del LCD, pero la RAM seguirá conteniendo datos indefinidos por lo tanto, después habrá que pintar toda la RAM a cero, para que el LCD quede limpio; Es necesario asegurarse de que todos los pasos se tengan en cuenta, ya que implementar mal el control de los pines, al poner en alto algunos pines específicos en un momento dado que no es el correcto, podemos dañar el controlador, y este no tiene reparación alguna.
Después del reset, ponemos en estado alto el PIN RST, y el controlador está listo para trabajar y grabar la secuencia de comandos que viene... Ahora mandaremos los comandos de puesta en marcha y configuración.

Function Set: Con el tipo de direccionamiento que queremos usar (Vertical u Horizontal), Chip activo, y juego de instrucciones básico o avanzado, seguido de los ajustes de coeficiente de temperatura, ajuste de Vop y BIAS. Todo esto según especificaciones en el datasheet.
El pin encargado de establecer el modo de trabajo del controlador, es el pin “Data Comand Select” (DC);
O sea, para establecer si esta en modo escritura (data) o lectura (comand), se pone en nivel bajo o alto este pin (0=comand – 1=data).
Al poner el PIN DC en estado bajo, habilitamos el controlador en modo lectura y se queda a la espera de los datos que afectaran los registros comandos para el control del display.

Estos datos son enviados mediante el protocolo SPI estándar:
Habilitamos SPI poniendo en bajo el PIN SCE, y se hace recepción de los bits de datos por el PIN SDIN. El PIN SDIN o DN, también es conocido como MOSI (Master Out Slave IN).
El PIN SCE o CS (Chip Select), debe activarse para indicarle al dispositivo que se le van a enviar datos. Para los que ya conocen el protocolo SPI y han trabajado con otros dispositivos, SCE / CS, también es conocido como SS (Slave Select).
La transferencia de datos, se lleva a cabo en el flanco ascendente del PIN SCLK, o sea, este pin es el que rige la comunicación y transferencia de datos.

Image

Con todo esto el LCD ya está listo para ser usado, pero nos queda aun una cosa por hacer.. y es borrar la RAM del display que contiene datos aleatorios, así que deberemos direccionar toda la memoria mandando 0x00 en el modo adecuado.

Image

Ahora, la duda existencial; La consulta del millon... Se podrá para futuras versiones de firmware de Annex, sumar algún comando del tipo SHIFTin - SHIFTout y que este tenga la posibilidad de trabajar también con variables del tipo byte? o a alguien con mas conocimientos solidos de annex, se le ocurre alguna idea de como trabajar las pantallas con lo que tenemos disponible actualmente?
Voy a seguir estudiando para ver que puedo aportar :idea: :idea: :idea:

Re: AneexWIFI RDS y pantalla Nokia 5110 (PCD8544)

Posted: Tue Feb 23, 2021 2:55 pm
by GSontag
Hola Martin,
Yo no tengo mucho vocabulario en Español, boy a respuesta en Ingles.

Sorry i don't have a 5110 LCD
1/ I guess you were using a Pic which didn't have an spi (maybe the venerable PIC16F84) and in this case the SPI protocol was bit-bang bit per bit on a pin using Shiftout to output each bit and shitin to... input data.

Using Annex allow you to use the SPI verbs SPI.BYTE, SPI.HEX,... at a very high-speed rather that bit-banging data by yourself.
It will manage the clk and values
2/ in your case (i think) you have to manage yourself the D/~C line
Note that this pin is just to tell the LCD if you are sending Data or Command.
3/ Wire your 5110 according [Local Link Removed for Guests] MOSI(ESP) to DIN(5110)
4/ choose others pin for the D/C line, reset, and eventualy Chip select if this not the only one on the spi bus

Programming part
SPI.SETUP 4000000 '4 MHz max
Pulse the reset (not sure if 200ms is max or min i bet min but have a look at the data sheet)
set high or low the DC pin for sending data or command
Send value with SPI.BYTE or SPI.HEX or SPI.STRING

About accessing byte or bit
With Annex you can access them with the AND operator i.e.
a=&hABCD
accessing last byte : b=a and &hff : print b
accessing second nibble b= a and &hf00 : b=b>>8 : print b
and so on
You can also use the IOBuffer which let you get a per byte access of reserved memory

I hope all of this help you, in any case feel to ask if it's not

Gérard

Re: AneexWIFI RDS y pantalla Nokia 5110 (PCD8544)

Posted: Fri Feb 26, 2021 6:46 pm
by ETIPatagonia
Thank you Gérard, you threw me a lifeline! :!: :idea:
A few days ago I stayed up all night thinking and trying various ways and none were positive. With these data that you give me, I will think and see what I can do

Re: AneexWIFI RDS y pantalla Nokia 5110 (PCD8544)

Posted: Sat Feb 27, 2021 3:01 pm
by GSontag
Hi Martin,
Hope you succeed
Gérard