LIST
CBLOCK OV7670_VAR
CONT_TABLA_RAW
CONT_BYTE_RTC ;contador de numero de bytes
DIR_I2C ;principio de direccion de dispositivo
DATO_I2C
ENDC
#define TABLA_CONF_RAW 0X5000 ;direccion de hubicacion de tabla
;inicializa camara
OV7670_INI CS_OFF_OV7670 ;camara en reset
bsf PIE1,SSP1IE ;habilita interrupciones para la camara
bsf ODCON1,7 ;habilita open drain
bsf TRISC,SCL1 ;configura pins como entrada
bsf TRISC,SDA1 ;configura pins como entrada
bcf TRISC,5 ;reset de la OV7670
movlw 0x28 ; I2C master, SSPEN enabled
movwf SSP1CON1 ;
movlw 0x80 ; 400Khz compat,
movwf SSP1STAT
;movlw .159 ; configurar I2C a 100kHz (para fosc de 64Mhz) clock=Fosc/(4*(SSPxADD+1))
movlw .39 ; configurar I2C a 400kHz (para fosc de 64Mhz) clock=Fosc/(4*(SSPxADD+1))
movwf SSP1ADD
clrf SSP1CON2
clrf PIR1
clrf INTCON3
bcf TRISE,REFO ;pin salida oscilador para perifericos externos.(a la entrada xclk de a camara)
;movlw b'10000011' ;8Mhz
movlw b'10000010' ;16Mhz
movwf REFOCON
return
RAW_CONF movlw 0x50 ;direccion alta de la tabla 0x50
movwf TBLPTRH
clrf TBLPTRL ;direccion baja de la tabla 0x00
movlw .52 ;nuemro de datos a leer de la tabla.cada dato son dos bytes= numero de bytes /2
movwf CONT_TABLA_RAW ;cargalo en registro contadr
rep_raw call TBL_CONF_RAW ;busca byte de direccion
movwf DIR_I2C ;carga en el registro de direccion I2C el valor leido de la tabla.
call TBL_CONF_RAW ;busca byte de dato y lo carga en w.
call SCCB_WRITE ;rutina de escritura I2C en la camara OV7670
decfsz CONT_TABLA_RAW ;decrementa registro contador de numero de bytes de la tabla
goto rep_raw ;repite busqueda de bytes en tabla mientras haya datos que leer
return ;retorna
TBL_CONF_RAW tblrd*+ ;incrementa puntero de tabla antes de su lectura
movf TABLAT,W ;carga el valor leido de la tabla en W
tblrd*+ ;incrementa puntero de tabla antes de su lectura
return
;Esta tabla contiene los datos a introducir en los registros de configuracion de la camara OV7670.los datos son extraidos de dos en dos.
;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.
ORG TABLA_CONF_RAW
dt 0x11,0x01, 0x12,0x01, 0x0c,0x00, 0x3e,0x00, 0x70,0x3A, 0x71,0x35, 0x72,0x11, 0x73,0xf0, 0xa2,0x02, 0x42,0x00
dt 0x11,0x80, 0x6b,0x0a, 0x2a,0x00, 0x2b,0x00, 0x92,0x00, 0x93,0x00, 0x3b,0x0a, 0x24,0x95, 0x25,0x33, 0x26,0xe3
dt 0x9f,0x00, 0xc9,0x60, 0x33,0x0b, 0x34,0x11, 0x21,0x02, 0x22,0x91, 0x37,0x1d, 0x38,0x71, 0x39,0x2a, 0xb1,0x0c
dt 0xb3,0x82, 0x17,0x13, 0x18,0x01, 0x32,0xb6, 0x19,0x02, 0x1a,0x7a, 0x03,0x0a, 0x12,0x01, 0x3a,0x04, 0xb0,0x8c
dt 0x13,0xe7, 0x6f,0x9f, 0x14,0x10, 0x01,0x40, 0x02,0x40, 0x6a,0x40, 0x41,0x3d, 0x4c,0x00, 0x77,0x00, 0x3f,0x00
dt 0x75,0x03, 0x76,0xe1
LIST
;Configuración de cámara para VGA Bayer
;CLKRC (0x11)=0x01 //Prescaler interno sobre clock
;COM7 (0x12)=0x01 //Formato de salida "Bayer Raw"
;COM3 (0x0c)=0x00
;COM14 (0x3E)=0x00
;SCALING_XSC (0x70)=0x3A
;SCALING_YSC (0x71)=0x35
;SCALING_DCWCTR (0x72)=0x11
;SCALING_PCLK_DIV (0x73)=0xF0
;SCALING_PCLK_DELAY (0xA2)=0x02
;COM17 (0x42)=0x00 //Color bar=0x08
;
;Configuración de cuadros por segundo
;CLKRC (0x11)=0x80 //Sin prescaler interno sobre clock.
;DBLV (0x6b)=0x0A //PLL desactivado.
;EXHCH (0x2a)=0x00
;EXHCL (0x2b)=0x00
;DM_LNL (0x92)=0x00
;DM_LNH (0x93)=0x00
;COM11 (0x3b)=0x0A
;Configuración de Exposición automática
;AEW (0x24)=0x95
;AEB (0x25)=0x33
;VPT (0x26)=0xE3
;HAECC7 (0x9f)=0x00 //Algoritmo de promedios.
;SATCTR (0xc9)=0x60
;CHLF (0x33)=0x0B
;ARBLM (0x34)=0x11
;ADCCTR1 (0x21)=0x02
;ADCCTR2 (0x22)=0x91
;ADC (0x37)=0x1D
;ACOM (0x38)=0x71
;OFON (0x39)=0x2A
;ABLC1 (0xb1)=0x0C //Habilita función ABLC
;THL_ST (0xb3)=0x82 //Objetivo ABLC
;Windowing
;HSTART (0x17)=0x13
;HSTOP (0x18)=0x01
;HREF (0x32)=0xB6
;VSTRT (0x19)=0x02
;VSTOP (0x1a)=0x7A
;VREF (0x03)=0x0A
;Configuración de cámara para salida "Processed Bayer RGB"
;COM7 (0x12)=0x01 //Configuro formato de salida. Color bar=0x03 o 0x07
;TSLB (0x3a)=0x04 //Configuro secuencia de datos.
;RSVD (0Xb0)=0x8C //Registro reservado.
;//EscribirOV7670(COM13,0x08); //Gamma deshabilitado "no fijado en codigo"
;COM8 (0x13)=0xE7
;AWBCTR0 (0x6f)=0x9F
;COM9 (0x14)=0x10
;BLUE (0x01)=0x40
;RED (0x02)=0x40
;GGAIN (0x6a)=0x40
;COM16 (0x41)=0x3D
;DNSTH (0x4c)=0x00
;REG77 (0x77)=0x00
;EDGE (0x3f)=0x00
;REG75 (0x75)=0x03
;REG76 (0x76)=0xE1