Autor Tema: Camara OV7670  (Leído 29777 veces)

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

Desconectado luismh

  • PIC16
  • ***
  • Mensajes: 149
Re:Camara OV7670
« Respuesta #30 en: 14 de Julio de 2016, 10:57:05 »
Hola. Creo que si te comenté que hay registros que en teoría debería ignorarse pero en realidad hay que configurarlos sino no anda... Lo peor de todo es que están indocumentados. La documentación de esta cámara es pésima.

Al saber de esto, los definí a todos.. por las dudas.. Pero la verdad es que solo configuro uno de ellos: el RSVD14(línea 58)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:Camara OV7670
« Respuesta #31 en: 16 de Julio de 2016, 08:30:49 »


bueno ya estoy aqui de nuevo.al final logre configurar a la camara OV7670.he podido grabar los datos en sus registros.y queria analizar un poco lo que he
experimentado.

primero voy a poner unos registros que cambian de valor segun donde dirijamos el ovjetivo de la camara.y creo que tienen que ver con la luminancia general
y de tereminados colores.no se si habran mas.pero estos son los que yo he visto.

0x00   GAIN:   Es el registro de ganancia luminica.se comprueba tapando el objetivo de la camara.y los valores van esde 0x00 para iluminado y 0xff para oscuro.
0x05   BAVE:   nivel promedio de U/B   "azul"   valor base 0x80 a oscuras.varia segun datos recogidos.
0x06   GbAVE:   nivel promedio de Y/Gb      valor base 0x00 a oscuras
0x08   RAVE:   nivel promedio de V/R   "rojo"   valor base 0x80 a oscuras.
0x2f   YAVE:   nivel promedio de Y/G      valor base 0x00 a oscuras

Y normalmente significa Luminancia R,G,B ya sabemos lo que es.pero G,V,Gb no se lo que son.


esta es una captura de los datos de ls registros de la camara despues de un reset.



y esta es una imagen despues de cargar los datos de configuracion de la camara para capturas de imagen RAW.



aunque despues de su carga en la OV7670.algunos registros no tienen los valores que les hemos enviado.y son estos:


COM17   0X42
CLKRC   0X11
SATCTR   0XC9
DNSTH   0X4C
EDGE   0X3F

aunque supongo que sus contenidos han podido haber cambiado durante su carga.


ah.queria hacerte una pregunta luismh.al configurar la camara en formato RAW.como son los datos en el puerto de salida?es como indica en el datasheet
como con RGB.usando 2 bytes (D7-D3)para el rojo,(D2-D0 y D7-D5)para el verde,(D4-D0)para el azul. y en ese caso si activaramos la varra de colores.
se identificaria facilmente en un osciloscopio las tramas en el caso de sincronizar el disparo con Vsync.

y como seria el efecto de visualizar las barras en B/N si eso es posible?
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:Camara OV7670
« Respuesta #32 en: 16 de Julio de 2016, 10:27:56 »
aqui el codigo:

Código: ASM
  1. #define         ID_WRITE        movlw   0x42    ;valor de direccion para escritura del OV7670
  2.                 #define         ID_READ         movlw   0x43    ;valor de direccion para lectura del OV7670
  3.  
  4.         CS_ON_OV7670
  5.                         movlw   .10                         ;
  6.                         call    retardo_ms                  ;retardo pos reset
  7.                         CALL    RAW_CONF
  8.  
  9.                         lfsr    FSR2,0X100              ;principio de ram donde se introduciran los datos leidos del dispositivo I2C
  10.                         movlw   0x00                    ;principio de direccion a leer
  11.                         movwf   DIR_I2C
  12.                         movlw   0xCA                    ;numero de bytes a gestionar de la camara
  13.                         call    SCCB_READ               ;leer datos del DS1307 y hubicarlos en la direccion 0x100 de la ram
  14.                
  15.                        
  16.                        
  17.                
  18.                         CS_OFF_OV7670                       ;deshabilita camara

Código: ASM
  1. LIST
  2.                            
  3.                         CBLOCK          OV7670_VAR
  4.                         CONT_TABLA_RAW
  5.                         CONT_BYTE_RTC                                   ;contador de numero de bytes
  6.                         DIR_I2C                                                 ;principio de direccion de dispositivo
  7.                         DATO_I2C
  8.                         ENDC    
  9.                        
  10.                         #define                 TABLA_CONF_RAW      0X5000  ;direccion de hubicacion de tabla
  11.                            
  12.                            
  13.                        
  14.                        
  15.                         ;inicializa camara
  16. OV7670_INI              CS_OFF_OV7670                   ;camara en reset
  17.                         bsf     PIE1,SSP1IE             ;habilita interrupciones para la camara
  18.                         bsf     ODCON1,7                ;habilita open drain
  19.                         bsf     TRISC,SCL1              ;configura pins como entrada
  20.                         bsf     TRISC,SDA1              ;configura pins como entrada
  21.                         bcf     TRISC,5                 ;reset de la OV7670
  22.                        
  23.                         movlw   0x28                    ; I2C master, SSPEN enabled
  24.                         movwf   SSP1CON1                ;
  25.                         movlw   0x80                    ; 400Khz compat,
  26.                         movwf   SSP1STAT            
  27.                         ;movlw  .159                    ; configurar I2C a 100kHz (para fosc de 64Mhz) clock=Fosc/(4*(SSPxADD+1))
  28.                         movlw   .39                     ; configurar I2C a 400kHz (para fosc de 64Mhz) clock=Fosc/(4*(SSPxADD+1))
  29.                         movwf   SSP1ADD
  30.                         clrf    SSP1CON2
  31.                         clrf    PIR1
  32.                         clrf    INTCON3
  33.                        
  34.                        
  35.                         bcf     TRISE,REFO              ;pin salida oscilador para perifericos externos.(a la entrada xclk de a camara)
  36.                         ;movlw  b'10000011'             ;8Mhz
  37.                         movlw   b'10000010'             ;16Mhz
  38.                         movwf   REFOCON
  39.                         return         
  40.                        
  41.                        
  42.                        
  43.                        
  44.                        
  45.                        
  46.                        
  47. RAW_CONF                movlw   0x50                    ;direccion alta de la tabla 0x50
  48.                         movwf   TBLPTRH
  49.                         clrf    TBLPTRL                 ;direccion baja de la tabla 0x00
  50.                
  51.                         movlw   .52                     ;nuemro de datos a leer de la tabla.cada dato son dos bytes= numero de bytes /2
  52.                         movwf   CONT_TABLA_RAW          ;cargalo en registro contadr
  53.                
  54. rep_raw                 call    TBL_CONF_RAW            ;busca byte de direccion
  55.                         movwf   DIR_I2C                 ;carga en el registro de direccion I2C el valor leido de la tabla.
  56.                         call    TBL_CONF_RAW            ;busca byte de dato y lo carga en w.
  57.                         call    SCCB_WRITE              ;rutina de escritura I2C en la camara OV7670
  58.                         decfsz  CONT_TABLA_RAW          ;decrementa registro contador de numero de bytes de la tabla
  59.                         goto    rep_raw                 ;repite busqueda de bytes en tabla mientras haya datos que leer
  60.                         return                          ;retorna
  61.                
  62. TBL_CONF_RAW            tblrd*+                         ;incrementa puntero de tabla antes de su lectura
  63.                         movf    TABLAT,W                ;carga el valor leido de la tabla en W
  64.                         tblrd*+                         ;incrementa puntero de tabla antes de su lectura
  65.                         return         
  66.                    
  67.                 ;Esta tabla contiene los datos a introducir en los registros de configuracion de la camara OV7670.los datos son extraidos de dos en dos.
  68.                 ;el primer byte impar es la direccion del registro a escribir y el siguiente byte es el dato a escribir en el OV7670.y asi sucesivamente.
  69.                         ORG             TABLA_CONF_RAW
  70.  
  71.                         dt      0x11,0x01, 0x12,0x01, 0x0c,0x00, 0x3e,0x00, 0x70,0x3A, 0x71,0x35, 0x72,0x11, 0x73,0xf0, 0xa2,0x02, 0x42,0x00
  72.                         dt      0x11,0x80, 0x6b,0x0a, 0x2a,0x00, 0x2b,0x00, 0x92,0x00, 0x93,0x00, 0x3b,0x0a, 0x24,0x95, 0x25,0x33, 0x26,0xe3
  73.                         dt      0x9f,0x00, 0xc9,0x60, 0x33,0x0b, 0x34,0x11, 0x21,0x02, 0x22,0x91, 0x37,0x1d, 0x38,0x71, 0x39,0x2a, 0xb1,0x0c
  74.                         dt      0xb3,0x82, 0x17,0x13, 0x18,0x01, 0x32,0xb6, 0x19,0x02, 0x1a,0x7a, 0x03,0x0a, 0x12,0x01, 0x3a,0x04, 0xb0,0x8c
  75.                         dt      0x13,0xe7, 0x6f,0x9f, 0x14,0x10, 0x01,0x40, 0x02,0x40, 0x6a,0x40, 0x41,0x3d, 0x4c,0x00, 0x77,0x00, 0x3f,0x00
  76.                         dt      0x75,0x03, 0x76,0xe1
  77.                            
  78.                            
  79.                             LIST
  80.  
  81.  
  82.  
  83.                         ;Configuración de cámara para VGA Bayer          
  84.                 ;CLKRC              (0x11)=0x01     //Prescaler interno sobre clock
  85.                 ;COM7               (0x12)=0x01     //Formato de salida "Bayer Raw"
  86.                 ;COM3               (0x0c)=0x00
  87.                 ;COM14              (0x3E)=0x00
  88.                 ;SCALING_XSC        (0x70)=0x3A
  89.                 ;SCALING_YSC        (0x71)=0x35
  90.                 ;SCALING_DCWCTR     (0x72)=0x11
  91.                 ;SCALING_PCLK_DIV   (0x73)=0xF0
  92.                 ;SCALING_PCLK_DELAY (0xA2)=0x02
  93.                 ;COM17              (0x42)=0x00     //Color bar=0x08
  94.                 ;
  95.                 ;Configuración de cuadros por segundo
  96.                 ;CLKRC              (0x11)=0x80     //Sin prescaler interno sobre clock.
  97.                 ;DBLV               (0x6b)=0x0A     //PLL desactivado.
  98.                 ;EXHCH              (0x2a)=0x00
  99.                 ;EXHCL              (0x2b)=0x00
  100.                 ;DM_LNL             (0x92)=0x00
  101.                 ;DM_LNH             (0x93)=0x00
  102.                 ;COM11              (0x3b)=0x0A
  103.                 ;Configuración de Exposición automática
  104.                 ;AEW                (0x24)=0x95
  105.                 ;AEB                (0x25)=0x33
  106.                 ;VPT                (0x26)=0xE3
  107.                
  108.                 ;HAECC7             (0x9f)=0x00     //Algoritmo de promedios.
  109.                 ;SATCTR             (0xc9)=0x60
  110.                 ;CHLF               (0x33)=0x0B
  111.                 ;ARBLM              (0x34)=0x11
  112.                 ;ADCCTR1            (0x21)=0x02
  113.                 ;ADCCTR2            (0x22)=0x91
  114.                 ;ADC                (0x37)=0x1D
  115.                 ;ACOM               (0x38)=0x71
  116.                 ;OFON               (0x39)=0x2A
  117.                 ;ABLC1              (0xb1)=0x0C     //Habilita función ABLC
  118.                
  119.                 ;THL_ST             (0xb3)=0x82     //Objetivo ABLC
  120.                 ;Windowing
  121.                 ;HSTART             (0x17)=0x13
  122.                 ;HSTOP              (0x18)=0x01
  123.                 ;HREF               (0x32)=0xB6
  124.                 ;VSTRT              (0x19)=0x02
  125.                 ;VSTOP              (0x1a)=0x7A
  126.                 ;VREF               (0x03)=0x0A
  127.                 ;Configuración de cámara para salida "Processed Bayer RGB"
  128.                 ;COM7               (0x12)=0x01     //Configuro formato de salida. Color bar=0x03 o 0x07
  129.                 ;TSLB               (0x3a)=0x04     //Configuro secuencia de datos.
  130.                 ;RSVD               (0Xb0)=0x8C     //Registro reservado.
  131.                
  132.                 ;//EscribirOV7670(COM13,0x08);      //Gamma deshabilitado "no fijado en codigo"
  133.                 ;COM8               (0x13)=0xE7
  134.                 ;AWBCTR0            (0x6f)=0x9F
  135.                 ;COM9               (0x14)=0x10
  136.                 ;BLUE               (0x01)=0x40
  137.                 ;RED                (0x02)=0x40
  138.                 ;GGAIN              (0x6a)=0x40
  139.                 ;COM16              (0x41)=0x3D
  140.                 ;DNSTH              (0x4c)=0x00
  141.                 ;REG77              (0x77)=0x00
  142.                 ;EDGE               (0x3f)=0x00
  143.                
  144.                 ;REG75              (0x75)=0x03
  145.                 ;REG76              (0x76)=0xE1

Código: ASM
  1. ;-------------------------------------------------------------------------------------------;
  2. ;                                  SUBRUTINA DE I2C SCCB_WRITE                                      ;
  3. ;-------------------------------------------------------------------------------------------;
  4. ;Escritura del dispositivo I2C
  5. ;introducir en el registro DIR_I2C.el principio de  direccion del dispositivo I2C.                     
  6.        
  7.                
  8. SCCB_WRITE      movwf   DATO_I2C                    ;numero de bytes a escribir
  9.                 rcall   Start_I2C                   ;Llama a la subrutina de START
  10.                 ID_WRITE                            ;byte de control en modo escritura
  11.                 movwf   SSP1BUF,0                   ;cargalo en el Buffer de salida
  12.                 rcall   Write_I2C                   ;Llama a la subrutina de escritura
  13.                
  14.                 movff   DIR_I2C,SSP1BUF
  15.                 rcall   Write_I2C                   ;Llama a la subrutina de escritura
  16.                
  17.                 movff   DATO_I2C,SSP1BUF
  18.                 rcall   Write_I2C                   ;Llama a la subrutina de lectura
  19.                
  20.                 rcall   Stop_I2C                    ;Llama a la subrutina de STOP
  21.                 return                              ;Retorna
      

las rutinas I2C estan en las respuestas anteriores.
« Última modificación: 16 de Julio de 2016, 10:40:58 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:Camara OV7670
« Respuesta #33 en: 16 de Julio de 2016, 15:31:41 »
queria subir unas imagenes que he captado con el osciloscopio.mi idea hera saber si configurando el registro COM17 0x42.si podria activar las barras de colores.
y efectivamente asi es.poniendo el valor 0x08 se activan.la muestra es que estando desactivadas las salidas de datos de la camara cambian al tapar la lente.
es decir los datos desaparecen.y si le da la luz los datos aparecen.en este video lo muestro:


la captura en el osciloscopio la he hecho sinclonizando VSYNC.y los datos que aparecen serian los primero en emitir la camara en la esquina superior izquierda.

en el se muestra como aparece y desaparece la señal que nos entrega D7 de la camara.parece como si la señal se modulara en anchura.pero ampliando la frecuencia del osciloscopio
puede notarse que son unos pequeños impulsos que van desapareciendo.esa pequeña apariencia de modulacion PWM que no lo es.porque depende de la imagen que incida
aparecen pequeños impulsos en un espacio de tiempo de 128uS.y que pasados esos 128uS empieza otra señal muy parecida,son los datos del pixel.en concreto los
que esta enviando D7.

en esta otra imagen se notan esos pequeños impulsos:



la frecuencia a la que tengo Xclk es de 16Mhz.y el ciclo al que estamos trabajando es de 62.5nS . una linea horizontal tiene 640t que corresponde a 1byte.
asi que como cada dato tiene 2bytes. cada dato consume 125nS

este espacio de tiempo de 125nS  corresponde a la profundidad de color del pixel.de la linea D7 en concreto.la profundidad de color es el nivel de luminancia
de cada color.
si en este caso es de 10bit(1024 niveles). 125nS x 1024=128us que es mas o menos al tiempo que hay entre pixeles en la imagen del osciloscopio.


esto que he expuesto es la conclusion a la que he llegado despues de las pruevas que he realizado.no quiere decir que no me haya equivocado.y si alguien ve
que estoy en un error le agradeceria que me corrigieran.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado luismh

  • PIC16
  • ***
  • Mensajes: 149
Re:Camara OV7670
« Respuesta #34 en: 16 de Julio de 2016, 16:32:45 »
guau amigo groundman! que buen trabajo estás haciendo. Sencillamente te felicito!

Me llevó meses tratar de darle un significado a esas señales.

Pues yo configuré esta cámara como "raw bayer"... De esta manera, cada pixel  ocupa 1 byte en memoria y cada imagen serían unos 300kbyte (640x480=307200bytes o pixeles)

Si configuras en modo RGB o YUV, entiendo que cada pixel ocupa mas de un byte(por supuesto, la imagen es mucho mejor!). El problema es que la cámara con FIFO solo soporta un poco menos de 400kB de datos, y sería imposible guardar una imagen VGA en él con estos formatos de mayor calidad. En este caso es necesario disminuir el tamaño de la imagen.

Lamentablemente, no hay un registro que configuren si la foto será en color o blanco y negro. Nunca lo intenté pero imagino que para lograr eso tendrás que "jugar" con los registros de colores BLUE, RED, GREEN, y otros.

No se casi nada de procesamiento de imágenes, pero tengo entendido que si configuras formato YUV y solo guardas los datos de "Y" y descartas los componentes "U" y "V" tendrás una imagen en blanco y negro!

Saludos! Y felicidades!
Luis.

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:Camara OV7670
« Respuesta #35 en: 16 de Julio de 2016, 17:55:32 »

gracias luismh.el tiempo que he sacado del osciloscopio de 128uS es real.lo que no se es cual es la prufundidad de color de la camara.la configuracion que le he
cargado es la que has puesto antes.y si me estas diciendo que la cámara esta configurada como "raw bayer" y solo ocupa 1byte por pixel.es posible que la profundidad
de color no se a 1024niveles.deberia de ser 2048 niveles  que son 11bit.

tu sabes cual es la profundidad de color de esta camara.es decir cuantos niveles de color o luminancia tiene esta camara con tu configuracion?
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado luismh

  • PIC16
  • ***
  • Mensajes: 149
Re:Camara OV7670
« Respuesta #36 en: 17 de Julio de 2016, 14:38:53 »
Perdón, pero no se que es "profundidad de color". Tal vez puedas definirla para entender

Si te refieres a la cantidad de colores que puede tener un pixel en esta configuración, pues la respuesta  es 256 (2^8)

Con otras configuraciones puede ser mayor.

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:Camara OV7670
« Respuesta #37 en: 18 de Julio de 2016, 09:57:41 »
si.me referia a eso.si esque no estoy equivocado en la definicion.

pero entonces si cada pixel tiene 1byte.que significado RGB tiene cada bit? intento entender que es lo que estoy visualizando en el osciloscopio.porque no me cuadra segun lo que estoy viendo.
« Última modificación: 18 de Julio de 2016, 10:00:24 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado luismh

  • PIC16
  • ***
  • Mensajes: 149
Re:Camara OV7670
« Respuesta #38 en: 18 de Julio de 2016, 11:12:06 »
En la configuración "Bayer Raw", que es la mas básica de todas, no aplica el concepto RGB... Simplemente, a cada pixel se le asigna un color, y a cada color se le asigna un número binario y eso es lo que ves en el puerto de salida. 0x00 corresponde a blanco y 0xFF a negro, pasando por varios colores en el medio.
La imagen que obtienes no es de la mejor calidad, pero para mi aplicación fue mas que suficiente.

Si quieres RGB, tendrás que configurar la cámara como RGB. Existen mas de un formato RGB: RGB444, RGB565(o algo así),etc.
Por ejemplo, RGB444 significa que los primeros 4 bits tienen información de rojos, los siguiente 4, información de verdes y los últimos 4, de azules. Así, en este caso, tienes un dato de 12 bits(necesitas 2 bytes para almacenar)

Saludos!

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Camara OV7670
« Respuesta #39 en: 18 de Julio de 2016, 11:22:10 »
Justo luismh contesto, pero aporto un poco mas

El datasheet aclara correctamente lo siguiente:

Todas las salidas RGB tienen 2 bytes
En Modo salida RGB 565, Conformandose (en orden) de lo siguiente: 5 bits rojos, 3 bits verde - 3 bits verde, 5 bits azul
En Modo salida RGB 555, Conformandose (en orden) de lo siguiente: 1 bit a descartar, 5 bits rojos, 2 bits verde - 3bits verde, 5 bits azul
En Modo salida RGB 444, Conformandose (en orden) de lo siguiente: 4 bits a descartar, 4 bits rojos - 4 bits verde, 4 bits azul

La profundidad de color va a depender el modo que se elija, 565 = 16 bits, 555 = 15 bits, 444 = 12 bits

Suponiendo que sea RGB.

PD: Se podria pedir el datasheet a Omnivision, para ver si es que posee uno mas completo, por que todos los que estan dando vuelta estan incompletos o son de versiones preliminares.

PD2: Una guia de implementacion del mismo omnivision
http://web.mit.edu/6.111/www/f2015/tools/OV7670app.pdf
Habla que todos los RAWs son de 888
« Última modificación: 18 de Julio de 2016, 11:27:19 por KILLERJC »

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:Camara OV7670
« Respuesta #40 en: 18 de Julio de 2016, 17:30:07 »
vaya.muchas gracias  KILLERJC.ya estoy hechandole un vistazo y la verdad es que hay mucha informacion.

hola luismh.he visto que pone Raw Bayer RGB  8-bit R or 8-bit G or 8-bit B.supongo que en algun registro se selecciona el color.y visualizar solo el valor de luminancia
de ese color. almenos es lo que me parece ese OR que separa las indicaciones.

respecto a la imagen del osciloscopio,se notan como 3 trenes de impulsos.cada tren de impulsos tiene un tiempo de unos 120uS.y segun ponia el dedo en la optica.
los trenes variaban casi identicamente.asi que creo que cada tren corresponde al bit7 de  una linea horizontal.

si "raw bayer RGB usara" 3bytes para cada pixel.todo cuadraria en mis calculos.si ha 16Mhz tenemos un ciclo de 62.5us.y cada ciclo fuera para un byte.
62.5uS x 3bytes=187.5uS x 640pixl =120uS. que es la anchura del tren del osciloscopio.

o lo que es lo mismo.62.5uS x 640pixel = 40uS x 3bytes=120uS.

Pero todo esto son congeturas.si en raw bayer cada pixel ocupa un byte.esto mo me cuadra.y no podre saber que significan estas señales hasta que no me llege la FIFO y lo vea en datos.saludos



« Última modificación: 18 de Julio de 2016, 18:46:13 por groundman »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:Camara OV7670
« Respuesta #41 en: 18 de Julio de 2016, 19:09:17 »
hay algo que se me pasa por la cabeza y es que en el datasheet no lo explica bien.si en Raw Bayer solo se utiliza un byte por pixel.y ese byte solo expresa el valor de un solo color.
donde se configura que color seleccionar.y en todo caso no se estara convirtiendo la camara  en dartonica :D   solo seria sensible a un determinado color.

esque no entiendo muy bien lo de raw bayer.

Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:Camara OV7670
« Respuesta #42 en: 18 de Julio de 2016, 19:12:59 »
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:Camara OV7670
« Respuesta #43 en: 31 de Julio de 2016, 14:43:37 »

hola de nuevo.me ha ocurrido algo muy raro con la comunicacion I2C y la camara.desde que logre realizar la conexion ha ido bien durante algun tiempo.pero un dia me puse a practicar con el SPI pero en otro puerto.
cuando fui a probar el I2C del otro puerto.dejo de funcionar. el programa se cuelga en la sentencia de escritura I2C.exactamente donde se espera a recivir el ACKNOWLEDGE.

despues de dejar el circuito durante una semana.me puse de nuevo a practicar.y cual fue mi sorpresa de que empezo a funcionar.pero he vuelto a tocar el circuito y otra vez mismo problema.
la cosa es que cuando me funciono,cambie las tres camaras que tengo y todas funcionaban.

en el circuito use dos resistencias de 4k7 y iban bien.pero he visto en otros circuitos con resistencias serie en los dos pin SIOD y SIOC ademas de una pull-up en SIOD.pero no funciona.segun que resistencias ponga
el programa se cuelga incluso en el START.

lo raro es que todo funciona correctamente con una memoria 24lc16.asi que no se a que echarle la culpa.si a la camara,al programa o al pic.incluso podria ser el ICD3.ni idea.tendre que dejar otra semana el circuito
y volver a practicar.haber si cambia algo.

he recibido dos AL422B.pero hasta que no vuelva a funcionar esto.habra que esperar.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re:Camara OV7670
« Respuesta #44 en: 15 de Agosto de 2016, 17:41:08 »

hola ya me ha llegado la camara con FIFO.y he empezado con las pruebas.pero he realizado otra placa con un pic18f87k22 nuevo.

pero estoy teniendo muchos problemas con las resistencias de las lineas SCL y SDA. he tenido que poner en SCL una resistencia de 15K en vez de la de 4k7.porque el programa se quedaba
atrancado leyendo el bit R/W de SSP1STAT.

y ahora estoy jugando con la resistencia de SDA.le he puesto una de 4k7 pero se queda atrancado en la linea  SSP1STAT,BF de la rutina de lectura.

pero nada funciona.en definitiva.si cambio valores en la resistencia de SDA el programa se cuelga en las rutinas WRITE,STOP y READ segun los valores
y si cambio valores en SCL el programa se cuelga en START o WRITE.

la verdad es que ya no se por donde ira el fallo.igual son varios a la vez.tendre que seguir realizando pruebas haber por que falla.ojala tubiera un osciloscopio
con dataloger.y asi veria si el problema esta en las señales.

Montando mi primera impresora 3D (Raprep Prusa i3)