Autor Tema: TFT LCD 2.4" y Camara V7670  (Leído 15942 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:TFT LCD 2.4" y Camara V7670
« Respuesta #15 en: 29 de Enero de 2017, 18:05:08 »
KILLERJC.he comprobado lo del envio de datos y son exactamente los 320x240.ya no tengo problemas con los bloqueos.
resulta que hera fallo del ICD3.asi que he programado directamente el pic.y ya no falla.

pero cuando pinto la pantalla de rojo esta lo hace en azul y con rayas rojas.

he averiguado cual es el problema.aunque no lo he podido solucionar por el momento.

cada pixel ocupa dos bytes.y hay que enviar primero uno y luego el otro.pero entremedias hay que poner WR_LOW y WR_HI
pues resulta que no se porque.se pierde el envio de uno de los bytes o pulsos.y esto hace que se inviertan los valores
de los bytes y con ello los colores.

lo he averiguado porque si envio los dos bytes iguales los colores salen intactos.

haber si encuentro el problema.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:TFT LCD 2.4" y Camara V7670
« Respuesta #16 en: 29 de Enero de 2017, 18:55:05 »

y ya esta  :-/ :-/ :-/ :-/


al final resulto que el fallo hera del pin LCD_WR de la TFT.le he puesto una resistencia de 1k a masa y todo solucionado.
el fallo no hera del ICD3.
es increible la cantidad de tiempo que se pierde buscando fallos tontos.


Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:TFT LCD 2.4" y Camara V7670
« Respuesta #17 en: 31 de Enero de 2017, 11:55:33 »

bueno.voy a poner las librerias que he creado en ASM. por lo menos por lo que voy por ahora.para la visualizacion
de los colores.

porque lo siguiente que voy a hacer es capturar una imagen con la camara OV7670 y visualizarla en la TFT ili9320.

este codigo lo pongo en el programa principal para realizar la llamada a la libreria.

Código: [Seleccionar]
PRINCIPAL BANK7
call ILI9320_INI

movlw 0x55 ;direccion alta de la tabla 0x55
movwf TBLPTRH
clrf TBLPTRL ;direccion baja de la tabla 0x00
call TFT_CONFIG ;configura registros de la TFT

rep_prin movlw 0x00 ;dato para el color negro
movwf GRAM_H
movlw 0x00
movwf GRAM_L
call lcdFillScreen
movlw 0x00 ;dato para el color azul
movwf GRAM_H
movlw 0x1f
movwf GRAM_L
call lcdFillScreen
movlw 0xf8 ;dato para el color rojo
movwf GRAM_H
movlw 0x00
movwf GRAM_L
call lcdFillScreen
movlw 0x07 ;dato para el color verde
movwf GRAM_H
movlw 0xe0
movwf GRAM_L
call lcdFillScreen
movlw 0x07 ;dato para el color  cyan
movwf GRAM_H
movlw 0xff
movwf GRAM_L
call lcdFillScreen
movlw 0xf8 ;dato para el color magneta
movwf GRAM_H
movlw 0x1f
movwf GRAM_L
call lcdFillScreen
movlw 0xff ;dato para el color amarillo
movwf GRAM_H
movlw 0xe0
movwf GRAM_L
call lcdFillScreen
movlw 0xff ;dato para el color banco
movwf GRAM_H
movlw 0xff
movwf GRAM_L
call lcdFillScreen

goto rep_prin



y esta es la libreria para el control de la TFT

Código: [Seleccionar]
CBLOCK ILI9340_VAR

CONT_PIXL1
CONT_PIXL2
CONT_PIXL3

TFT_DIR_H
TFT_DIR_L
TFT_DAT_H
TFT_DAT_L

FLAGS_TFT
GRAM_H
GRAM_L

ENDC


#define TFT_CONF_9320     0X5500  ;direccion de hubicacion de tabla



#define     RS_LO_TFT bcf LATE,0 ;read command
#define     RS_HI_TFT bsf LATE,0 ;write command
#define     CS_LO_TFT bcf LATE,1 ;habilta chip
#define     CS_HI_TFT bsf LATE,1 ;deshabilita chip
#define     WR_LO_TFT bcf LATE,4 ;write low
#define     WR_HI_TFT bsf LATE,4 ;write hi
#define     RD_LO_TFT bcf LATE,5 ;read low
#define     RD_HI_TFT bsf LATE,5 ;read hi
#define     RST_LO bcf LATE,6 ;reset activo a nivel bajo
#define     RST_HI bsf LATE,6

;*********************************************************ILI9320_INI ***************************************************************
;inicializa la TFT
ILI9320_INI bcf TRISE,0 ;RS-D/C
bcf TRISE,1 ;CS
bcf TRISE,4 ;WR
bcf TRISE,5 ;RD
bcf TRISE,6

bsf LATE,0
bsf LATE,1
bsf LATE,4
bsf LATE,5
bsf LATE,6
call RST_TFT
movlw .89 ;500ms
call retardo_s
return


;**************************************************************** RST_TFT ********************************************************
;reset de la TFT
RST_TFT RST_LO
movlw .89 ;500ms
call retardo_s
RST_HI
clrf TFT_DAT_H
clrf TFT_DAT_L
call lcdWriteData
call lcdWriteData
call lcdWriteData
call lcdWriteData
return





;*************************************************************** lcdWriteData ********************************************************
;escribir dato
lcdWriteData clrf TRISH ;puerto como salidas
CS_LO_TFT ;habilita chip
RS_HI_TFT ;modo datos
RD_HI_TFT ;lectura hi
WR_HI_TFT ;escritura hi
movff TFT_DAT_H,LATH ;manda el dato al puerto
WR_LO_TFT ;escritura low
movlw .20 ;10us
call retardo_us
WR_HI_TFT ;escritura hi
movff TFT_DAT_L,LATH ;manda el datos al puerto
WR_LO_TFT ;escritura low
movlw .20 ;10us
call retardo_us
WR_HI_TFT ;escritura hi
CS_HI_TFT ;inhabilita chip
return

;************************************************************* lcdReadData ************************************************************
;leer dato
lcdReadData setf TRISH ;puerto como entradas
CS_LO_TFT ;habilita chip
RS_HI_TFT ;modo datos
RD_HI_TFT ;lectura hi
WR_HI_TFT ;escritura hi
 
RD_LO_TFT ;lectura low 
movlw .20 ;10us
call retardo_us
movff PORTH,TFT_DAT_H ;lee dato del puerto y pasalo al registro
RD_HI_TFT ;lectura hi
movlw .20 ;10us
call retardo_us
RD_LO_TFT ;lectura low
movlw .20 ;10us
call retardo_us
movff PORTH,TFT_DAT_L ;lee dato del puerto y pasalo al registro
RD_HI_TFT ;lectura hi
CS_HI_TFT ;inhabilita chip
return

;************************************************************ lcdWriteCommand *******************************************************
;escribir comando
lcdWriteCommand clrf TRISH ;puerto como salidas
CS_LO_TFT ;habilita chip
RS_LO_TFT ;modo comandos
RD_HI_TFT ;lectura hi
WR_HI_TFT ;escritura hi

movff TFT_DIR_H,LATH ;manda el dato de direccion al puerto
WR_LO_TFT ;escritura low
movlw .20 ;10us
call retardo_us
WR_HI_TFT ;escritura hi

movff TFT_DIR_L,LATH ;manda el datod de direccion al puerto
WR_LO_TFT ;escritura low
movlw .20 ;10us
call retardo_us
WR_HI_TFT ;escritura hi
CS_HI_TFT ;inhabilita chip
return

;******************************************************** lcdWriteRegister *******************************************************
;escribir en registro
lcdWriteRegister

call lcdWriteCommand
call lcdWriteData
return
;******************************************************** lcdReadRegister ********************************************************

lcdReadRegister ;leer de un registro
;introducir en BYTE_2 la direccion del registro. Los datos son introducidos en TFT_DAT_H y TFT_DAT_L
call lcdWriteCommand
call lcdReadData
return

;********************************************************** lcdReadID ***********************************************************
;lectura de la version de la LCD. Los datos son introducidos en TFT_DAT_H y TFT_DAT_L
lcdReadID movlw 0x00 ;siempre a cero
movwf TFT_DIR_H
movlw 0x00 ;numero del registro a gestionar
movwf TFT_DIR_L
call lcdReadRegister ;lee dato del registro
return



;********************************************************** lcdFillScrreen *******************************************************
;envia datos a la RAM grafica
lcdFillScreen clrf TFT_DIR_H
movlw 0x20 ;
movwf TFT_DIR_L
clrf TFT_DAT_H
clrf TFT_DAT_L
call lcdWriteRegister ;pon a cero el registro de direccionamiento de la GRAM Horizntal registro 0x0020
incf TFT_DIR_L,F
call lcdWriteRegister ;pon a cero el registro de direccionamiento de la GRAM Vertical registro 0x0021
incf TFT_DIR_L,F
call lcdWriteCommand ;comando de escritura en la GRAM 0x0022
 
CS_LO_TFT ;habilita chip
RS_HI_TFT ;modo datos
RD_HI_TFT ;lectura hi
WR_HI_TFT ;escritura hi
 
clrf TRISH ;puerto como salidas
 
;valores para el envio de 320x240 bytes =76800 bytes
movlw .2
movwf CONT_PIXL3
movlw .44
movwf CONT_PIXL2
movlw .255
movwf CONT_PIXL1

bcf FLAGS_TFT,0
rep_fill movff GRAM_H,LATH ;manda el dato al puerto
WR_LO_TFT ;escritura low
movlw .20 ;10us
call retardo_us
WR_HI_TFT ;escritura hi
movff GRAM_L,LATH ;manda el dato al puerto
WR_LO_TFT ;write low
movlw .20 ;10us
call retardo_us
WR_HI_TFT ;write hi


btfsc FLAGS_TFT,0
goto exit_fill

;rutina de contage para el envio de datos
decfsz CONT_PIXL1
goto rep_fill
decfsz CONT_PIXL2
goto rep_fill
decfsz CONT_PIXL3
goto rep_fill
bsf FLAGS_TFT,0 ;un byte mas de contage
goto rep_fill
exit_fill CS_HI_TFT ;inhabilita chip
setf TRISH ;puerto como entrada
return




;****************************************************** TFT_CONFIG ********************************************************************
;configura los registros de la TFT
TFT_CONFIG tblrd*+ ;incrementa puntero de tabla antes de su lectura
movlw 0xff ;byte de fin de lectura de tabla
cpfseq TABLAT ;coprueba si el byte coincide con el valor 0xff
goto tft_dat_tab
return ;retorna si se encontro el byte de fin de tabla(0xff)
tft_dat_tab movff TABLAT,TFT_DIR_L ;carga en el registro de direccion TFT el valor leido de la tabla.
call lcdWriteCommand ;envia comando a la pantalla TFT
tblrd*+ ;incrementa puntero de tabla antes de su lectura
tblrd*+ ;incrementa puntero de tabla antes de su lectura
movff TABLAT,TFT_DAT_H ;carga el valor leido de la tabla byte alto
tblrd*+ ;incrementa puntero de tabla antes de su lectura
tblrd*+ ;incrementa puntero de tabla antes de su lectura
movff TABLAT,TFT_DAT_L ;carga el valor leido de la tabla byte bajo

call lcdWriteData ;envia el dato
movlw .20 ;20us
call retardo_us
tblrd*+ ;incrementa puntero de tabla antes de su lectura
goto TFT_CONFIG ;repite busqueda de bytes en tabla mientras haya datos que leer




ORG TFT_CONF_9320 ;configuracion de la pantalla TFT (1º byte=direccion) (2º y 3º dato de 16bit)

;configuracion de los registros de la ili9320
dt 0xe5,0x80,0x00, 0x00,0x00,0x01, 0x01,0x01,0x00, 0x02,0x07,0x00, 0x03,0x10,0x30, 0x04,0x00,0x00
dt 0x08,0x02,0x02, 0x09,0x00,0x00, 0x0a,0x00,0x00, 0x0c,0x00,0x00, 0x0d,0x00,0x00, 0x0f,0x00,0x00
dt 0x10,0x00,0x00, 0x11,0x00,0x00, 0x12,0x00,0x00, 0x13,0x00,0x00, 0x10,0x17,0xb0, 0x11,0x00,0x37
dt 0x12,0x01,0x38, 0x13,0x17,0x00, 0x29,0x00,0x0d, 0x20,0x00,0x00, 0x21,0x00,0x00, 0x30,0x00,0x01
dt 0x31,0x06,0x06, 0x32,0x03,0x04, 0x33,0x02,0x02, 0x34,0x02,0x02, 0x35,0x01,0x03, 0x36,0x01,0x1d
dt 0x37,0x04,0x04, 0x38,0x04,0x04, 0x39,0x04,0x04, 0x3c,0x07,0x00, 0x3d,0x0a,0x1f, 0x50,0x00,0x00
dt 0x50,0x00,0x00, 0x51,0x00,0xef, 0x52,0x00,0x00, 0x53,0x01,0x3f, 0x60,0x27,0x00, 0x61,0x00,0x01
dt 0x6a,0x00,0x00, 0x90,0x00,0x10, 0x92,0x00,0x00, 0x93,0x00,0x03, 0x95,0x01,0x01, 0x97,0x00,0x00
dt 0x98,0x00,0x00, 0x07,0x00,0x21, 0x07,0x00,0x31, 0x07,0x01,0x73
dt 0xff ;fin de tabla

   
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:TFT LCD 2.4" y Camara V7670
« Respuesta #18 en: 05 de Febrero de 2017, 09:47:23 »

mientras me llega la TFT de 50pin para visuaizar una imagen de 30FPS.voy a realizar varios experimentos y ver los resultados.
lo primero que he hecho es enviar una imagen por la usart.he usado una velocidad de 256.000bps y la imagen ha pasado sin ningun tipo de interferencia
aun siendo una velocidad tan elevada.ademas he configurado la TFT para que reciba la imagen en horizontal.

aqui muestro un video:


antes de esto intente pasar la imagen de las barras de colores desde la FIFO de la camara OV7670 a la TFT.pero todabia no he encontrado la configuracion
correcta de los registros de la camara y la imagen no es compatible con la forma de recibir los datos la TFT.por eso he tenido que editar a mano el archivo.

en parte me esta viniendo bien porque me da una idea de como funcionan.ahora intentare configurar la camara para que me entregue una imagen RGB QVGA
que creo que es la correcta para visualizarla en la TFT.

en esta imagen pongo los datos que corresponden a las barras de colores:



como puede apreciarse los prmeros datos son 640bytes con el valor 0xff que corresponde a la primera linea de la barra de color blanco
como la imagen es de 320x240 y se esta visualizando en horizontal.y cada pixel ocupa 2 bytes.la primera linea de la barra blanca tiene 80bytes.

eso quiere decir que la primera linea horizontal de 320pixel contiene 640 bytes.que dibidida en 8 barras corresponde a los 80bytes de cada color.
como ya indique en otra respuesta estos son los codigos de color de la TFT en el formato que bamos a trabajar.RGB 565.

en la imagen puede notarse como se empieza con los valores 0xffff del blanco,0x07ff del cyan,0xfe00 del amarillo.ya asi sucesivamente hasta el negro 0x0000
hasta que se completa la primera linea horizontal de la imagen.luego empieza con el 0xffff blanco.hasta completar las 240lineas horizontales.

#define   BLACK   0x0000  // Definimos los colores
#define   BLUE    0x001F  // que utilizaremos para
#define   RED     0xF800  // el texto y los elementos graficos
#define   GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

adjunto el archivo de imagen que he creado.
« Última modificación: 05 de Febrero de 2017, 10:07:51 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:TFT LCD 2.4" y Camara V7670
« Respuesta #19 en: 05 de Febrero de 2017, 18:36:22 »

la TFT me esta ando bastantes problemas de bloqueos.no estoy seguro de que es.he probado con otra TFT que pedi por internet.practicamente son iguales.pero no funciona en mi proyecto.
la primera TFT que si funciona.la pedi como una ili9340.pero en realidad es una ili9320.y por eso me funciona con la libreria que he creado a partir de
un codigo de arduino.

la TFT que no me funciona.la segunda que compre.le he sacado estos datos con el arduino uno.aunque no me hace el pintado de la pantalla.tendre que hacer otro driver para
que mi proyecto sea compatible para varias TFTs.ya que cuando compremos por internet es facil que no nos manden lo que queremos.

Código: [Seleccionar]
Initializing LCD...
Reading ID...0x0154
Filling the screen...
Done filling...
If your screen filled red, please report it at http://misc.ws/lcd_information
There is currently no known working library.
Register 0x00 : 0x0154
Register 0x01 : 0x21E8
Register 0x02 : 0x0100
Register 0x03 : 0xF0F0
Register 0x04 : 0x0000
Register 0x05 : 0x0000
Register 0x06 : 0x0000
Register 0x07 : 0x0000
Register 0x08 : 0x08F8
Register 0x09 : 0x001E
Register 0x0A : 0x0000
Register 0x0B : 0x1100
Register 0x0C : 0xFFF0
Register 0x0D : 0x0000
Register 0x0E : 0x0000
Register 0x0F : 0x0FFF
Register 0x10 : 0x8800
Register 0x11 : 0x0F3B
Register 0x12 : 0x3101
Register 0x13 : 0xF0DF
Register 0x14 : 0x667F
Register 0x15 : 0x0000
Register 0x16 : 0x0000
Register 0x17 : 0x0000
Register 0x18 : 0x0000
Register 0x19 : 0x0000
Register 0x1A : 0x0000
Register 0x1B : 0x0000
Register 0x1C : 0x0000
Register 0x1D : 0x0000
Register 0x1E : 0x0000
Register 0x1F : 0x0000
Register 0x20 : 0x0000
Register 0x21 : 0x0000
Register 0x22 : 0x0000
Register 0x23 : 0x0000
Register 0x24 : 0x0000
Register 0x25 : 0x0000
Register 0x26 : 0x0000
Register 0x27 : 0x0000
Register 0x28 : 0xFFFF
Register 0x29 : 0x0000
Register 0x2A : 0x0000
Register 0x2B : 0x0000
Register 0x2C : 0x0000
Register 0x2D : 0x0000
Register 0x2E : 0x0000
Register 0x2F : 0x0000
Register 0x30 : 0x0000
Register 0x31 : 0xFF3F
Register 0x32 : 0x0000
Register 0x33 : 0x0000
Register 0x34 : 0xFF3F
Register 0x35 : 0x0000
Register 0x36 : 0x00EF
Register 0x37 : 0x0000
Register 0x38 : 0xFF3F
Register 0x39 : 0x0000
Register 0x3A : 0x0000
Register 0x3B : 0x0000
Register 0x3C : 0x0000
Register 0x3D : 0x0000
Register 0x3E : 0x0000
Register 0x3F : 0x0000
Register 0x40 : 0x0000
Register 0x41 : 0x0000
Register 0x42 : 0x004A
Register 0x43 : 0x0022
Register 0x44 : 0x0000
Register 0x45 : 0x0000
Register 0x46 : 0x0000
Register 0x47 : 0x0000
Register 0x48 : 0xFFFF
Register 0x49 : 0x0000
Register 0x4A : 0x0000
Register 0x4B : 0x0000
Register 0x4C : 0x0000
Register 0x4D : 0x0000
Register 0x4E : 0x0000
Register 0x4F : 0x0000
Register 0x50 : 0x0000
Register 0x51 : 0xFF00
Register 0x52 : 0xFA03
Register 0x53 : 0x0300
Register 0x54 : 0xFC05
Register 0x55 : 0xFF00
Register 0x56 : 0xFF00
Register 0x57 : 0x0003
Register 0x58 : 0xFF07
Register 0x59 : 0x07FF
Register 0x5A : 0x0000
Register 0x5B : 0x0000
Register 0x5C : 0x0000
Register 0x5D : 0x0000
Register 0x5E : 0x0000
Register 0x5F : 0x0000
Register 0x60 : 0x0000
Register 0x61 : 0x0000
Register 0x62 : 0x0000
Register 0x63 : 0x0000
Register 0x64 : 0x0000
Register 0x65 : 0x0000
Register 0x66 : 0x0000
Register 0x67 : 0x0000
Register 0x68 : 0x0000
Register 0x69 : 0x0000
Register 0x6A : 0x0000
Register 0x6B : 0x0000
Register 0x6C : 0x0000
Register 0x6D : 0x0000
Register 0x6E : 0x0000
Register 0x6F : 0x0000
Register 0x70 : 0x0000
Register 0x71 : 0x0000
Register 0x72 : 0x0000
Register 0x73 : 0x0000
Register 0x74 : 0x0000
Register 0x75 : 0x0000
Register 0x76 : 0x0000
Register 0x77 : 0x0000
Register 0x78 : 0x0000
Register 0x79 : 0x0000
Register 0x7A : 0x0000
Register 0x7B : 0x0000
Register 0x7C : 0x0000
Register 0x7D : 0x0000
Register 0x7E : 0x0000
Register 0x7F : 0x0000
Register 0x80 : 0x8D8D
Register 0x81 : 0x0FF0
Register 0x82 : 0x0000
Register 0x83 : 0x0000
Register 0x84 : 0x0000
Register 0x85 : 0x0000
Register 0x86 : 0x0000
Register 0x87 : 0x0000
Register 0x88 : 0x0000
Register 0x89 : 0x0000
Register 0x8A : 0x0000
Register 0x8B : 0x0000
Register 0x8C : 0x0000
Register 0x8D : 0x0000
Register 0x8E : 0x0000
Register 0x8F : 0x0000
Register 0x90 : 0x0000
Register 0x91 : 0x1C02
Register 0x92 : 0x0010
Register 0x93 : 0x0000
Register 0x94 : 0x0000
Register 0x95 : 0x0000
Register 0x96 : 0x0000
Register 0x97 : 0x0000
Register 0x98 : 0x0000
Register 0x99 : 0x0000
Register 0x9A : 0x0000
Register 0x9B : 0x0000
Register 0x9C : 0x0000
Register 0x9D : 0x0000
Register 0x9E : 0x0000
Register 0x9F : 0x0000
Register 0xA0 : 0x0000
Register 0xA1 : 0x0000
Register 0xA2 : 0x0000
Register 0xA3 : 0x0000
Register 0xA4 : 0x0000
Register 0xA5 : 0x0000
Register 0xA6 : 0x0000
Register 0xA7 : 0x0000
Register 0xA8 : 0x0000
Register 0xA9 : 0x0000
Register 0xAA : 0x0000
Register 0xAB : 0x0000
Register 0xAC : 0x0000
Register 0xAD : 0x0000
Register 0xAE : 0x0000
Register 0xAF : 0x0000
Register 0xB0 : 0x0000
Register 0xB1 : 0x0000
Register 0xB2 : 0x0000
Register 0xB3 : 0x0000
Register 0xB4 : 0x0000
Register 0xB5 : 0x0000
Register 0xB6 : 0x0000
Register 0xB7 : 0x0000
Register 0xB8 : 0x0000
Register 0xB9 : 0x0000
Register 0xBA : 0x0000
Register 0xBB : 0x0000
Register 0xBC : 0x0000
Register 0xBD : 0x0000
Register 0xBE : 0x0000
Register 0xBF : 0x0000
Register 0xC0 : 0x0000
Register 0xC1 : 0x0000
Register 0xC2 : 0x0000
Register 0xC3 : 0x0000
Register 0xC4 : 0x0000
Register 0xC5 : 0x0000
Register 0xC6 : 0x0000
Register 0xC7 : 0x0000
Register 0xC8 : 0x0000
Register 0xC9 : 0x0000
Register 0xCA : 0x0000
Register 0xCB : 0x0000
Register 0xCC : 0x0000
Register 0xCD : 0x0000
Register 0xCE : 0x0000
Register 0xCF : 0x0000
Register 0xD0 : 0x0000
Register 0xD1 : 0x0000
Register 0xD2 : 0x0000
Register 0xD3 : 0x0000
Register 0xD4 : 0x0000
Register 0xD5 : 0x0000
Register 0xD6 : 0x0000
Register 0xD7 : 0x0000
Register 0xD8 : 0x0000
Register 0xD9 : 0x0000
Register 0xDA : 0x0000
Register 0xDB : 0x0000
Register 0xDC : 0x0000
Register 0xDD : 0x0000
Register 0xDE : 0x0000
Register 0xDF : 0x0000
Register 0xE0 : 0x0000
Register 0xE1 : 0x0000
Register 0xE2 : 0x0000
Register 0xE3 : 0x0000
Register 0xE4 : 0x0000
Register 0xE5 : 0x0000
Register 0xE6 : 0x0000
Register 0xE7 : 0x0000
Register 0xE8 : 0x0000
Register 0xE9 : 0x0000
Register 0xEA : 0x0000
Register 0xEB : 0x0000
Register 0xEC : 0x0000
Register 0xED : 0x0000
Register 0xEE : 0x0000
Register 0xEF : 0x0000
Register 0xF0 : 0x0000
Register 0xF1 : 0x0000
Register 0xF2 : 0x0000
Register 0xF3 : 0x0000
Register 0xF4 : 0x0000
Register 0xF5 : 0x0000
Register 0xF6 : 0x0000
Register 0xF7 : 0x0000
Register 0xF8 : 0x0000
Register 0xF9 : 0x0000
Register 0xFA : 0x0000
Register 0xFB : 0x0000
Register 0xFC : 0x0000
Register 0xFD : 0x0000
Register 0xFE : 0x0000
Register 0xFF : 0x0000

Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:TFT LCD 2.4" y Camara V7670
« Respuesta #20 en: 18 de Febrero de 2017, 14:36:10 »
bueno amigos.me acaba de llegar otra TFT que pedi por internet.de las que estan preparadas para arduino.es esta:



puede notarse que es diferente a las que compre al principio.esta tiene el conector plano en la parte trasera y es de 35pin.aunque el conector es mas pequeño que otros que he visto.
en este caso el chip grafico es un ili9325.lo he probado en mi proyecto con pic y con el driver que he confeccionado para la TFT 9320.y aunque si escribe en pantalla,lo hace con muchos
errores.que no es el cas de la 9320 que si que dibuja bien.

yo le hechaba la culpa a la TFT que pudira venir estropeada.pero esto es lo que sale con el arduino:


asi que no esta estropeada.solo que los drivers no son del todo compatibles.esta LCD 9325 me va perfecta con el arduino.cosa que no puedo decir del 9320 y la 0154 de samsung.

todo esto me da a entender de que la proxima vez que compre pantallas voy a tener que estar muy atento al tipo de controlador grafico a adquirir.y lo mas seguro es que los chinos
se equivoquen vastantes veces.asi que habra que insistir con un mensage el tipo de driver que usa la pantalla que ballamos  a comprar.y tener el arduino uno para hacer la prueba
al instante antes de votar.

de momento voy a intentar averiguar porque se ve mal la ili9325 y ya vere por que pantalla me decantare.o si soy capaz de hacerlas andar todas.que seria lo ideal.
« Última modificación: 18 de Febrero de 2017, 14:39:51 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado Pinolillo16

  • PIC18
  • ****
  • Mensajes: 324
Re:TFT LCD 2.4" y Camara V7670
« Respuesta #21 en: 19 de Febrero de 2017, 18:10:45 »
Groundman muchísimas gracias por tus aportes, en verdad son muy buenos, al igual que elgarbe los he seguido un poco, debido al tiempo del trabajo no he podido hacer algo para aportar, pero lo de la cámara y estás TFT es una excelente idea, que traía en mente pero sin Arduino, no soy muy bueno en asm sin embargo también es casi el único que manejo, se que es una buena friega realizar todo en asm pero al final vale mucho la pena, no se si sería mucho pedirte los links de compra de las pantallas en aliexpress y el diagrama de conexión al pic para seguir tu proyecto de cerca y colaborar en lo poco que pueda

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:TFT LCD 2.4" y Camara V7670
« Respuesta #22 en: 20 de Febrero de 2017, 18:26:03 »
hola pinolillo16.aqui hay una en ebay por 3,54€

 http://www.ebay.es/itm/1PCS-2-4-TFT-LCD-Shield-Touch-Panel-Module-TF-Micro-SD-For-Arduino-UNO-R3-/191796911962?hash=item2ca7fc9f5a:g:l6sAAOSwnLdWsAZW

para empezar es la mejor opcion.pero te recomiendo que le preguntes al vendedor que driver tiene.asegurate que es el ili9325.ya que es el que funciona con arduino.
y para el que estoy realizando el software en asm.

si no.solo tienes que poner tft 2.4" y te saldran diferentes vendedores.yo he pedido 3 de estas y todas han venido diferentes.
te recomiendo que adquieras el arduino UNO.para asegurarte de que la pantalla que compres funcione con el driver ili9325.ademas con este y un ejemplo que hay.puedes extraer informacion
de la pantalla.como por ejemplo el driver que usa.

cuando lo tengas ya me pides la informacion que desees y la pongo aqui.aunque practicamente todo lo estoy subiendo a este hilo.

el pic que estoy usando es el 18F87K22.puedes usar otro.pero tendras que cambiar la configuracion de los puertos.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:TFT LCD 2.4" y Camara V7670
« Respuesta #23 en: 27 de Febrero de 2017, 11:16:03 »

he seguido con las pruebas.intentando pasar los datos directamente de la camara a la TFT.y he conseguido transferir
la imagen de las barras de colores.pero los colores no se corresponde a lo que deberia salir.
creo que el problema es la configuracion RGB.he configurado la camara al mismo formato que he puesto en la TFT. RGB 565

en la TFT esta bien configurada porque es lo mismo que puse en una de las respuestas anteriores.pero la camara
aunque la he configurado como salida de datos RGB 565.la verdad es que los valores no cuadran.tendre que profundizar
en el tema.

respecto al fallo que tengo con los bloqueos de la TFT.me he dado cuenta de que al escribir en la GRAM interna.
por algun motivo se me estan sobreescribiendo datos en los registros de la TFT.y eso lo pone todo patas arriva.
pero ya lo investigare.sera algo mal del codigo.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:TFT LCD 2.4" y Camara V7670
« Respuesta #24 en: 23 de Julio de 2017, 10:34:28 »
hola de nuevo.acabo de retomar este proyecto para el manejo de una TFT.

al final me decante por la ILI9341.ya que tenemos la posibilidad de hacer pruebas con el proteus.el tema lo tengo bastante avanzado.y creo que pronto podre terminar el calibre
optico.es decir tomar medidas con la camara OV7670.

pero se me esta dando unos problemas con la TFT que me esta haciendo perder el poco tiempo de que dispongo.el problema ya lo tuve entes y crei haberlo solucionado.
pero nada mas lejos.

la cosa es que la TFT se me queda bloqueada cuando al rellenar la memoria interna para visualizar la imagen,cuando me paso o me quedo corto en la escritura.
como el autoincremento se realiza automaticamente.pues igual no le sienta bien que lo interrumpamos.

he puesto un hardreset y un softreset. pero nada se sigue bloqueando.si hago un barrido de la pantalla continuamente sin equivocarme en los datos.va perfecta.
puedo apagarla y encenderla las veces que quiera.incluso resetear el pic.pero en las practicas esto es un problemazo.

la unica manera de desbloquear la TFT es quiterle la alimentacion y dejandola un rato para que se borren los datos.y aveces hay que esperar muchisimo tiempo.

no se si ha alguien le ha ocurrido esto.como se podria reiniciar la pantalla correctamente?
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:TFT LCD 2.4" y Camara V7670
« Respuesta #25 en: 23 de Julio de 2017, 11:16:44 »
La verdad que ni idea, al menos con la unica que use que fue una SSD1289 nunca me sucedio lo que dijiste. Es como si algo quedara mal configurado dentro de la RAM,
de todas formas dado el rango definido uno va a cambiar todo lo que designe en ese rango. Y esto nunca deberia suceder:

Citar
cuando me paso o me quedo corto en la escritura.

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:TFT LCD 2.4" y Camara V7670
« Respuesta #26 en: 23 de Julio de 2017, 14:16:20 »
bueno.por ahora intentare no sobrepasar la flash de la tft por si acaso.

estoy configurando la TFT para recibir los datos de la FIFO de la camara OV7670.he configurado la TFT como RGB a 320x240 en horizontal.y por las pruebas que he realizado
imprimo bien los colores.

F800 para el rojo
07E0 para el verde
001F para el azul

la configuracion que encontre para la camara era RAW BAYER 640x480. pero esta configuracion no me sirve.asi que tengo que ponerla a RGB 565 320x240.
he estado configurando los registros.pero por ahora no sale lo que yo quiero.

tambien estoy interesado en configurar la camara para sacar una imagen en B/W eso si lo hize una vez.pero no se com podria pasar un valor de escala de grises 00h-ffh
a un valor RGB y que saliera la imagen en blanco y negro.


Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:TFT LCD 2.4" y Camara V7670
« Respuesta #27 en: 23 de Julio de 2017, 14:39:55 »
tambien estoy interesado en configurar la camara para sacar una imagen en B/W eso si lo hize una vez.pero no se com podria pasar un valor de escala de grises 00h-ffh
a un valor RGB y que saliera la imagen en blanco y negro.

La forma mas simple de representar una escala de grises en un RGB es poner cada uno de los valores con el mismo valor en gris, es decir

Si tenes 50 en gris deberias tener RGB(50,50,50)
En este caso deberias primero recortar el valor a 6 y 5 bits de los mas significantes para meterlos en el RGB 565.

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:TFT LCD 2.4" y Camara V7670
« Respuesta #28 en: 23 de Julio de 2017, 14:50:39 »
acabo de probarlo en el proteus y asi es. para compensar el porcentage 565  lo que he hecho es mantener un nivel el valor del verde y modificar los demas.

es decir. RGB  00000.000001.00000  como el maximo nivel negro y 11111.111111.11111 para el blanco. 

un valor de gris medio seria 01111.011111.01111 =  7B EF.

ahora veremos a ver como configuro la camara.creo que primero me metere con el YUV que lo hice funcionar una vez.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:TFT LCD 2.4" y Camara V7670
« Respuesta #29 en: 27 de Julio de 2017, 10:08:09 »
hola.he estado comprobando el codigo y resulta que me estaba pasando al enviar los bytes a la TFT.
y es porque confie en proteus.y alli la imagen de l ili9341 se rellenaba bien.pero cuando puse
un contador.me di cuenta de que me estaba pasando de bytes.

ahora he modificado correctamente el codigo y por el momento no se me bloquea la TFT.espero que fuera ese el fallo.

aunque tambien se me ha dado el caso de que la TFT deja de recibir datos.como muestra el video.
y lo he solucionado con una resistencia pull-up a 3.3v conectada al pin D/C.este fin de semana empezare
de nuevo con la camara.haber si puedo traspasar la imagen a la TFT.aunque tengo que realizar varias pruebas
ya que la configuracion RGB a 320x240 no la veo por internet.y es bastante complicado saber que hacer
con los registros de la camara.
Montando mi primera impresora 3D (Raprep Prusa i3)


 

anything