亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? camconfig.c

?? ov7620是采用cmos傳感器技術的攝像頭
?? C
字號:
/**********************************************************
    Module Name: CamConfig.c
    Module Date: 04/10/2004
    Module Auth: John Orlando 
    Copyright (c) 2004 John Orlando  All Rights Reserved 

    Description: This module is responsible for the
    high-level configuration activities of the OV6620
    camera module.  This module interfaces with the
    I2CInterface module to perform this configuration.
    ***********************************************************/

/*  Includes */
#include <avr/io.h>
#include "CamConfig.h"
#include "I2CInterface.h"
#include "CommonDefs.h"
#include "Utility.h"

/**********************************************************/
/*  Definitions */
/* The length of an I2C command is made up of a register address
    plus the actual value of the register */
#define SIZE_OF_I2C_CMD 2
#define MAX_NUM_CONFIG_CMDS 8
#define CAM_CONFIG_TX_FIFO_SIZE MAX_NUM_CONFIG_CMDS
#define CAM_CONFIG_TX_FIFO_MASK CAM_CONFIG_TX_FIFO_SIZE-1

/*  Local Variables */

/*  Local Structures and Typedefs */

/*  Local Function Prototypes */
static i2cCmd_t CamConfig_readTxFifo(void);

/*  Extern Variables */
i2cCmd_t 		CamConfig_txFifo[CAM_CONFIG_TX_FIFO_SIZE];
unsigned char CamConfig_txFifoHead=0;
unsigned char CamConfig_txFifoTail=0;

/***********************************************************
    Function Name: CamConfig_init
    Function Description: This function is responsible for
    performing the initial configuration of the camera.
    Inputs:  none
    Outputs: none
    ***********************************************************/
void CamConfig_init(void)
{
    CamConfig_setCamReg(0x14,0x20);  /* reduce frame size */
    CamConfig_setCamReg(0x39,0x40);  /* gate PCLK with HREF */
    CamConfig_setCamReg(0x12,0x28);  /* set RGB mode, with no AWB */
    CamConfig_setCamReg(0x28,0x05);  /* set color sequencer */

    /* send the first four cmds in the I2C fifo */
    CamConfig_sendFifoCmds();

    //CamConfig_setCamReg(0x16,0x09);  /* assert HREF in odd frames only */
    //CamConfig_sendFifoCmds();

}


/***********************************************************
    Function Name: CamConfig_setCamReg
    Function Description: This function is responsible for
    creating an I2C cmd structure and placing it into the
    cmd fifo.
    Inputs:  reg - the register to modify
    val - the new value of the register
    Outputs: none
    ***********************************************************/
void CamConfig_setCamReg(unsigned char reg, unsigned char val)
{
    i2cCmd_t cmd;

    cmd.configReg = reg;
    cmd.data = val;
#ifndef SIMULATION
    CamConfig_writeTxFifo(cmd);
#endif
}
/***********************************************************
    Function Name: CamConfig_sendFifoCmds
    Function Description: This function is responsible for
    sending the entire contents of the config fifo.  This
    function won't return until the configuration process
    is complete (or an error is encountered).
    Inputs:  none
    Outputs: none
    Note: Since this function is written to use the TWI
    interrupt in the I2CInterface module, there will be
    some busy-waiting here...no big deal, since we end up
    having to trash the frame that we are executing this
    slave write in anyway (since we can't meet the strict
    timing requirements and write i2c at the same time).
    ***********************************************************/
void CamConfig_sendFifoCmds(void)
{
    i2cCmd_t cmd;

    while (CamConfig_txFifoHead != CamConfig_txFifoTail)
    {
        cmd = CamConfig_readTxFifo();
        I2CInt_writeData(CAM_ADDRESS,&cmd.configReg,SIZE_OF_I2C_CMD);
        Utility_delay(100);
        /* wait for the I2C transaction to complete */
        while(I2CInt_isI2cBusy() == TRUE);
    }
}

/***********************************************************
    Function Name: CamConfig_writeTxFifo
    Function Description: This function is responsible for
    adding a new command to the tx fifo.  It adjusts all
    needed pointers.
    Inputs:  cmd - the i2cCmd_t to add to the fifo
    Outputs: bool_t - indicating if writing to the fifo
    causes it to wrap
    ***********************************************************/
bool_t CamConfig_writeTxFifo(i2cCmd_t cmd)
{
    unsigned char tmpHead;
    bool_t retVal = TRUE;

    CamConfig_txFifo[CamConfig_txFifoHead] = cmd;

    /* see if we need to wrap */
    tmpHead = (CamConfig_txFifoHead+1) & (CAM_CONFIG_TX_FIFO_MASK);
    CamConfig_txFifoHead = tmpHead;

    /* check to see if we have filled up the queue */
    if (CamConfig_txFifoHead == CamConfig_txFifoTail)
    {
        /* we wrapped the fifo...return false */
        retVal = FALSE;
    }
    return(retVal);
}

/***********************************************************
    Function Name: CamConfig_readTxFifo
    Function Description: This function is responsible for
    reading a cmd out of the tx fifo.
    Inputs:  none
    Outputs: i2cCmd_t - the cmd read from the fifo
    ***********************************************************/
static i2cCmd_t CamConfig_readTxFifo(void)
{
    i2cCmd_t cmd;
    unsigned char tmpTail;

    /* just return the current tail from the rx fifo */
    cmd = CamConfig_txFifo[CamConfig_txFifoTail];
    tmpTail = (CamConfig_txFifoTail+1) & (CAM_CONFIG_TX_FIFO_MASK);
    CamConfig_txFifoTail = tmpTail;

    return(cmd);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美国产精品一区| 欧美日韩一区二区三区在线| 全国精品久久少妇| 亚洲一区二区三区四区五区黄| 亚洲欧洲在线观看av| 亚洲婷婷国产精品电影人久久| 亚洲日本护士毛茸茸| 亚洲精品久久7777| 亚洲一区欧美一区| 五月综合激情网| 秋霞成人午夜伦在线观看| 捆绑紧缚一区二区三区视频| 久久精品国产亚洲aⅴ| 精久久久久久久久久久| 国产成人午夜99999| 99这里只有精品| 欧美日韩一二三区| 日韩欧美二区三区| 国产欧美一区二区精品久导航 | 亚洲一区在线观看视频| 亚洲一区二区三区爽爽爽爽爽 | 欧美va日韩va| 国产免费久久精品| 一区二区高清视频在线观看| 亚洲制服欧美中文字幕中文字幕| 日韩国产在线一| 黄色日韩网站视频| 色呦呦网站一区| 7799精品视频| 国产欧美视频一区二区| 一区二区三区四区五区视频在线观看| 爽好多水快深点欧美视频| 国产伦精品一区二区三区在线观看| 99热这里都是精品| 日韩欧美高清在线| 亚洲伦理在线精品| 国产永久精品大片wwwapp| 91蜜桃免费观看视频| 91麻豆精品国产91久久久久久| 中文字幕高清不卡| 免费欧美在线视频| 欧亚一区二区三区| 中文久久乱码一区二区| 免费日本视频一区| 日本道在线观看一区二区| 久久久亚洲精品石原莉奈| 一区二区三区四区五区视频在线观看| 久久av老司机精品网站导航| 在线视频中文字幕一区二区| 久久精品一区蜜桃臀影院| 洋洋成人永久网站入口| 成人黄色片在线观看| 日韩一级片网址| 亚洲成av人片在线| 一本色道亚洲精品aⅴ| 国产日韩欧美综合在线| 青青草国产成人av片免费| 色系网站成人免费| 国产精品国产三级国产| 国产成人午夜精品影院观看视频 | 成人国产精品免费观看| 日韩亚洲欧美中文三级| 亚洲妇女屁股眼交7| 色噜噜狠狠色综合中国| 日本一区二区三区电影| 国产综合成人久久大片91| 日韩欧美国产系列| 日韩av一区二区三区四区| 欧美日韩在线精品一区二区三区激情| 亚洲欧洲日韩女同| 处破女av一区二区| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 亚洲人成精品久久久久久| 成人黄色大片在线观看| 国产欧美日韩在线看| 粉嫩欧美一区二区三区高清影视| 欧美一区二区在线视频| 奇米色777欧美一区二区| 91精品福利在线一区二区三区| 三级在线观看一区二区| 欧美一区二区三区免费视频 | 久久久久久久av麻豆果冻| 美女视频免费一区| 久久久午夜精品| 成人午夜在线播放| 国产精品不卡视频| 91精品福利视频| 亚州成人在线电影| 日韩一区二区高清| 国产成人在线观看免费网站| 国产精品色哟哟| 日本韩国欧美在线| 天堂影院一区二区| 2024国产精品| 成人白浆超碰人人人人| 亚洲综合色婷婷| 欧美一区二区免费观在线| 国产一区二区调教| 亚洲人成网站色在线观看| 在线观看视频一区二区| 青青国产91久久久久久| 中文字幕精品在线不卡| 欧美丝袜丝nylons| 精品一区二区三区在线播放| 欧美激情综合五月色丁香小说| 色女孩综合影院| 久久99精品网久久| 亚洲欧美日韩精品久久久久| 日韩一级片在线播放| 懂色av一区二区三区免费看| 亚洲最大成人综合| 久久一夜天堂av一区二区三区| 99精品一区二区| 蜜桃精品在线观看| 一区二区三区欧美在线观看| 欧美成人一区二区三区在线观看 | 亚洲一区在线视频观看| 日韩精品一区二区三区视频在线观看 | 日韩**一区毛片| 国产精品美女视频| 欧美r级电影在线观看| 色av成人天堂桃色av| 狠狠色丁香婷综合久久| 香蕉影视欧美成人| 国产精品久久免费看| 日韩欧美色综合网站| 欧美午夜电影一区| 不卡一区中文字幕| 国产毛片一区二区| 美女性感视频久久| 天天综合网天天综合色| 亚洲狠狠丁香婷婷综合久久久| 久久亚洲精精品中文字幕早川悠里 | 欧美电影免费观看高清完整版在线| 91在线视频官网| 成人午夜短视频| 国产精品中文字幕一区二区三区| 日韩高清不卡一区| 亚洲一卡二卡三卡四卡| 亚洲欧美怡红院| 中文字幕av不卡| 国产免费成人在线视频| 亚洲精品一区二区三区影院| 777午夜精品免费视频| 欧美天堂亚洲电影院在线播放| 一本大道久久a久久精二百| 国产成人av在线影院| 国产福利一区二区三区视频在线| 蓝色福利精品导航| 精品一区在线看| 九一九一国产精品| 精品一区二区三区欧美| 卡一卡二国产精品 | 亚洲欧美日韩在线| 亚洲欧美区自拍先锋| 亚洲欧美日韩久久| 亚洲午夜视频在线| 日韩电影一区二区三区| 秋霞成人午夜伦在线观看| 日本成人在线不卡视频| 麻豆久久久久久久| 国内精品免费在线观看| 国产露脸91国语对白| 成人美女视频在线看| 97精品国产露脸对白| 在线国产电影不卡| 91精品欧美久久久久久动漫 | www..com久久爱| 一本大道久久a久久精二百| 欧美日韩一级二级| 日韩欧美的一区| 中文字幕成人av| 亚洲国产日韩av| 国精产品一区一区三区mba视频 | 69堂成人精品免费视频| 3d成人h动漫网站入口| wwwwxxxxx欧美| 亚洲猫色日本管| 美女在线视频一区| www.综合网.com| 欧美精品乱人伦久久久久久| 精品国一区二区三区| 亚洲婷婷在线视频| 日韩国产高清影视| 春色校园综合激情亚洲| 欧美女孩性生活视频| 国产日产欧美一区二区视频| 一区二区三区不卡视频| 国产一区二区三区四区五区美女| 一本到三区不卡视频| 精品久久久久久久久久久院品网| 亚洲欧美综合色| 激情文学综合网| 欧美日韩一区二区不卡| 国产精品素人一区二区| 亚洲超碰97人人做人人爱| 成人综合婷婷国产精品久久蜜臀 | 色哦色哦哦色天天综合| 日韩欧美国产一区在线观看| 自拍偷在线精品自拍偷无码专区|