⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 camconfig.lst

📁 mg128+Ov7620实现图象采集
💻 LST
📖 第 1 页 / 共 2 页
字号:
   1               		.file	"CamConfig.c"
   2               		.arch atmega128
   3               	__SREG__ = 0x3f
   4               	__SP_H__ = 0x3e
   5               	__SP_L__ = 0x3d
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  11               		.text
  12               	.Ltext0:
  61               	.global	CamConfig_txFifoHead
  62               	.global	CamConfig_txFifoHead
  63               		.section .bss
  66               	CamConfig_txFifoHead:
  67 0000 00        		.skip 1,0
  68               	.global	CamConfig_txFifoTail
  69               	.global	CamConfig_txFifoTail
  72               	CamConfig_txFifoTail:
  73 0001 00        		.skip 1,0
  74               		.text
  76               	.global	CamConfig_init
  78               	CamConfig_init:
   1:CamConfig.c   **** /**********************************************************
   2:CamConfig.c   **** 	Module Name: CamConfig.c
   3:CamConfig.c   **** 	Module Date: 04/10/2004
   4:CamConfig.c   ****     Module Auth: John Orlando 
   5:CamConfig.c   **** 	
   6:CamConfig.c   **** 	Description: This module is responsible for the 
   7:CamConfig.c   **** 	high-level configuration activities of the OV6620
   8:CamConfig.c   **** 	camera module.  This module interfaces with the
   9:CamConfig.c   **** 	I2CInterface module to perform this configuration.
  10:CamConfig.c   ****     
  11:CamConfig.c   ****     Revision History:
  12:CamConfig.c   ****     Date        Rel Ver.    Notes
  13:CamConfig.c   ****     4/10/2004      0.1     Module created
  14:CamConfig.c   ****     6/30/2004      1.0     Initial release for Circuit Cellar
  15:CamConfig.c   ****                            contest.
  16:CamConfig.c   ****     11/15/2004     1.2     Added code to un-tri-state the
  17:CamConfig.c   ****                            OV6620's pixel data busses at
  18:CamConfig.c   ****                            startup after four seconds.  
  19:CamConfig.c   ****                            This was added in to 
  20:CamConfig.c   ****                            allow the user to re-program the
  21:CamConfig.c   ****                            mega8 at startup if needed.
  22:CamConfig.c   **** ***********************************************************/
  23:CamConfig.c   **** 
  24:CamConfig.c   **** /*  Includes */
  25:CamConfig.c   **** #include <avr/io.h>
  26:CamConfig.c   **** #include "CamConfig.h"
  27:CamConfig.c   **** #include "I2CInterface.h"
  28:CamConfig.c   **** #include "CommonDefs.h"
  29:CamConfig.c   **** #include "Utility.h"
  30:CamConfig.c   **** 
  31:CamConfig.c   **** /**********************************************************/
  32:CamConfig.c   **** /*  Definitions */
  33:CamConfig.c   **** /* The length of an I2C command is made up of a register address
  34:CamConfig.c   **** plus the actual value of the register */
  35:CamConfig.c   **** #define SIZE_OF_I2C_CMD 2
  36:CamConfig.c   **** #define MAX_NUM_CONFIG_CMDS 8
  37:CamConfig.c   **** #define CAM_CONFIG_TX_FIFO_SIZE MAX_NUM_CONFIG_CMDS 
  38:CamConfig.c   **** #define CAM_CONFIG_TX_FIFO_MASK CAM_CONFIG_TX_FIFO_SIZE-1
  39:CamConfig.c   **** 
  40:CamConfig.c   **** /*  Local Variables */
  41:CamConfig.c   **** 
  42:CamConfig.c   **** /*  Local Structures and Typedefs */
  43:CamConfig.c   **** 
  44:CamConfig.c   **** /*  Local Function Prototypes */
  45:CamConfig.c   **** static i2cCmd_t CamConfig_readTxFifo(void);
  46:CamConfig.c   **** 
  47:CamConfig.c   **** /*  Extern Variables */
  48:CamConfig.c   **** i2cCmd_t 		CamConfig_txFifo[CAM_CONFIG_TX_FIFO_SIZE];
  49:CamConfig.c   **** unsigned char CamConfig_txFifoHead=0;
  50:CamConfig.c   **** unsigned char CamConfig_txFifoTail=0;
  51:CamConfig.c   **** 
  52:CamConfig.c   **** /***********************************************************
  53:CamConfig.c   **** 	Function Name: CamConfig_init
  54:CamConfig.c   **** 	Function Description: This function is responsible for
  55:CamConfig.c   **** 	performing the initial configuration of the camera.
  56:CamConfig.c   **** 	Inputs:  none
  57:CamConfig.c   **** 	Outputs: none
  58:CamConfig.c   **** ***********************************************************/	
  59:CamConfig.c   **** void CamConfig_init(void)
  60:CamConfig.c   **** {
  80               	.LM1:
  81               	/* prologue: frame size=0 */
  82               	/* prologue end (size=0) */
  61:CamConfig.c   **** 	CamConfig_setCamReg(0x14,0x20);  /* reduce frame size */
  84               	.LM2:
  85 0000 60E2      		ldi r22,lo8(32)
  86 0002 84E1      		ldi r24,lo8(20)
  87 0004 0E94 0000 		call CamConfig_setCamReg
  62:CamConfig.c   **** 	CamConfig_setCamReg(0x71,0x40);  /* gate PCLK with HREF *///改过
  89               	.LM3:
  90 0008 60E4      		ldi r22,lo8(64)
  91 000a 81E7      		ldi r24,lo8(113)
  92 000c 0E94 0000 		call CamConfig_setCamReg
  63:CamConfig.c   **** 	CamConfig_setCamReg(0x12,0x28);  /* set RGB mode, with no AWB */
  94               	.LM4:
  95 0010 68E2      		ldi r22,lo8(40)
  96 0012 82E1      		ldi r24,lo8(18)
  97 0014 0E94 0000 		call CamConfig_setCamReg
  64:CamConfig.c   **** 	CamConfig_setCamReg(0x28,0x05);  /* set color sequencer */
  99               	.LM5:
 100 0018 65E0      		ldi r22,lo8(5)
 101 001a 88E2      		ldi r24,lo8(40)
 102 001c 0E94 0000 		call CamConfig_setCamReg
  65:CamConfig.c   ****     CamConfig_setCamReg(0x13,0x01);  /* un-tri-state the Y/UV lines */
 104               	.LM6:
 105 0020 61E0      		ldi r22,lo8(1)
 106 0022 83E1      		ldi r24,lo8(19)
 107 0024 0E94 0000 		call CamConfig_setCamReg
  66:CamConfig.c   **** 	
  67:CamConfig.c   **** 	//CamConfig_setCamReg(0x65,0x43);
  68:CamConfig.c   **** 	//Utility_delay(100);
  69:CamConfig.c   **** 	//CamConfig_setCamReg(0x10,0x00); //加入[SC]暴光时间,默认为0x9A
  70:CamConfig.c   ****     //CamConfig_setCamReg(0x01,0xcF);
  71:CamConfig.c   ****     //CamConfig_setCamReg(0x02,0xcf);
  72:CamConfig.c   ****    //CamConfig_setCamReg(0x0c,0x2f) ; 
  73:CamConfig.c   ****    //CamConfig_setCamReg(0x07,0xc8);
  74:CamConfig.c   ****    //CamConfig_setCamReg(0x10,0xff);
  75:CamConfig.c   **** 	//Utility_delay(100);
  76:CamConfig.c   **** 	//CamConfig_setCamReg(0x13,0x00);
  77:CamConfig.c   **** 	/* send the first four cmds in the I2C fifo */
  78:CamConfig.c   **** 	CamConfig_sendFifoCmds();	
 109               	.LM7:
 110 0028 0E94 0000 		call CamConfig_sendFifoCmds
 111               	/* epilogue: frame size=0 */
 112 002c 0895      		ret
 113               	/* epilogue end (size=1) */
 114               	/* function CamConfig_init size 23 (22) */
 116               	.Lscope0:
 120               	.global	CamConfig_setCamReg
 122               	CamConfig_setCamReg:
  79:CamConfig.c   **** }
  80:CamConfig.c   **** 
  81:CamConfig.c   **** 
  82:CamConfig.c   **** /***********************************************************
  83:CamConfig.c   **** 	Function Name: CamConfig_setCamReg
  84:CamConfig.c   **** 	Function Description: This function is responsible for
  85:CamConfig.c   **** 	creating an I2C cmd structure and placing it into the
  86:CamConfig.c   **** 	cmd fifo.
  87:CamConfig.c   **** 	Inputs:  reg - the register to modify
  88:CamConfig.c   **** 	         val - the new value of the register
  89:CamConfig.c   **** 	Outputs: none
  90:CamConfig.c   **** ***********************************************************/	
  91:CamConfig.c   **** void CamConfig_setCamReg(unsigned char reg, unsigned char val)
  92:CamConfig.c   **** {
 124               	.LM8:
 125               	/* prologue: frame size=0 */
 126               	/* prologue end (size=0) */
  93:CamConfig.c   **** 	i2cCmd_t cmd;
  94:CamConfig.c   **** 	
  95:CamConfig.c   **** 	cmd.configReg = reg;
 128               	.LM9:
 129 002e 282F      		mov r18,r24
  96:CamConfig.c   **** 	cmd.data = val;
 131               	.LM10:
 132 0030 362F      		mov r19,r22
  97:CamConfig.c   **** #ifndef SIMULATION	
  98:CamConfig.c   **** 	CamConfig_writeTxFifo(cmd);
 134               	.LM11:
 135 0032 C901      		movw r24,r18
 136 0034 0E94 0000 		call CamConfig_writeTxFifo
 137               	/* epilogue: frame size=0 */
 138 0038 0895      		ret
 139               	/* epilogue end (size=1) */
 140               	/* function CamConfig_setCamReg size 6 (5) */
 145               	.Lscope1:
 147               	.global	CamConfig_sendFifoCmds
 149               	CamConfig_sendFifoCmds:
  99:CamConfig.c   **** #endif	
 100:CamConfig.c   **** }
 101:CamConfig.c   **** /***********************************************************
 102:CamConfig.c   **** 	Function Name: CamConfig_sendFifoCmds
 103:CamConfig.c   **** 	Function Description: This function is responsible for
 104:CamConfig.c   **** 	sending the entire contents of the config fifo.  This
 105:CamConfig.c   **** 	function won't return until the configuration process
 106:CamConfig.c   **** 	is complete (or an error is encountered).
 107:CamConfig.c   **** 	Inputs:  none
 108:CamConfig.c   **** 	Outputs: none
 109:CamConfig.c   **** 	Note: Since this function is written to use the TWI
 110:CamConfig.c   **** 	interrupt in the I2CInterface module, there will be 
 111:CamConfig.c   **** 	some busy-waiting here...no big deal, since we end up
 112:CamConfig.c   **** 	having to trash the frame that we are executing this
 113:CamConfig.c   **** 	slave write in anyway (since we can't meet the strict
 114:CamConfig.c   **** 	timing requirements and write i2c at the same time).
 115:CamConfig.c   **** ***********************************************************/	
 116:CamConfig.c   **** void CamConfig_sendFifoCmds(void)
 117:CamConfig.c   **** {
 151               	.LM12:
 152               	/* prologue: frame size=2 */
 153 003a CF93      		push r28
 154 003c DF93      		push r29
 155 003e CDB7      		in r28,__SP_L__
 156 0040 DEB7      		in r29,__SP_H__
 157 0042 2297      		sbiw r28,2
 158 0044 0FB6      		in __tmp_reg__,__SREG__
 159 0046 F894      		cli
 160 0048 DEBF      		out __SP_H__,r29
 161 004a 0FBE      		out __SREG__,__tmp_reg__
 162 004c CDBF      		out __SP_L__,r28

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -