Codigo
Codigo
h>
#include <built_in.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include<stdbool.h>
#include<Regs02.h>
#define OV7670_ADDR 0x42 //Direcci?n a partir de donde se encuentran los
registros de configuraci?n
//------------------------------------------------------------------------------
void main(){
InitPantalla();
Init_cam();
while (1) {
if (Vsyncf == 1)
{
Cam_Display();
}
}
}
void Init_CAM_PIN() {
GPIOAEN_bit = 1;
GPIOBEN_bit = 1;
GPIOCEN_bit = 1;
RCC_AHB1ENR|=1<<GPIOCEN; //HABILITA EL RELOJ DEL PUERTO C
RCC_AHB1ENR|=1<<GPIOBEN; //HABILITA EL RELOJ DEL PUERTO B
RCC_AHB1ENR|=1<<GPIOAEN; //HABILITA EL RELOJ DEL PUERTO A
// Pixel Clock
GPIO_Digital_Input(&GPIOC_BASE, _GPIO_PINMASK_0);
GPIO_Config(&GPIOC_BASE, _GPIO_PINMASK_0, _GPIO_CFG_MODE_INPUT |
_GPIO_CFG_PULL_DOWN|_GPIO_CFG_SPEED_50MHZ);
CAMRST=0;
CAMRST=1;
PWDN=1;
PWDN=0;
TFT_CS = 0;
TFT_RST = 1;
}
//------------------------------------------------------------------------------
void Setup_Interrupt(){ // Init Interrupt on PB1 Vsync
SYSCFGEN_bit = 1; // Enable clock for alternate
pin functions
RCC_APB2ENR.SYSCFGEN = 1; // Enable clock for alternate pin functions
SYSCFG_EXTICR1 |= 0x00000110; // Map external interrupt on PB1,PB2
EXTI_RTSR |= 0x00000006; // Set interrupt on Rising edge
(Int2,Int4) 4
EXTI_FTSR |= 0x00000000; // Set Interrupt on Falling
edge(Int2,Int4) 2
EXTI_IMR |= 0x00000006; // Set mask
//INTERUPCIONES
SYSCFG_EXTICR3 |= 0x00000001;
EXTI_RTSR |= 0x00000000; // Set interrupt on Rising edge
(Int2,Int4) 4
EXTI_FTSR |= 0x00000100; // Set Interrupt on Falling
edge(Int2,Int4) 2
EXTI_IMR |= 0x00000100; // Set mask
NVIC_IntEnable(IVT_INT_EXTI9_5);
SYSCFG_EXTICR3 |= 0x00000010;
EXTI_RTSR |= 0x00000000; // Set interrupt on Rising edge
(Int2,Int4) 4
EXTI_FTSR |= 0x00000200; // Set Interrupt on Falling
edge(Int2,Int4) 2
EXTI_IMR |= 0x00000200; // Set mask
NVIC_IntEnable(IVT_INT_EXTI9_5);
//Configuraci?n de la c?mara
//------------------------------------------------------------------------------
void softframe(){
int i;
Soft_I2C_Init();
Delay_us(25);
Soft_I2C_Start();
Delay_us(25);
Soft_I2C_Write(OV7670_ADDR);
Delay_us(25);
Soft_I2C_Write(0x12);
Delay_us(25);
Soft_I2C_Write(0x80);
Delay_us(25);
Soft_I2C_Write(OV7670_ADDR);
Delay_us(25);
Soft_I2C_Stop();
Delay_us(25);
void Cam_Display(){
unsigned int i,j,k;