?? camconfig.lst
字號(hào):
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]暴光時(shí)間,默認(rèn)為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
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -