484 |
kaklik |
1 |
GAS LISTING /tmp/cczUgJ5X.s page 1
|
174 |
kaklik |
2 |
|
|
|
3 |
|
|
|
4 |
1 .file "CamConfig.c"
|
484 |
kaklik |
5 |
2 __SREG__ = 0x3f
|
|
|
6 |
3 __SP_H__ = 0x3e
|
|
|
7 |
4 __SP_L__ = 0x3d
|
|
|
8 |
5 __tmp_reg__ = 0
|
|
|
9 |
6 __zero_reg__ = 1
|
|
|
10 |
7 .global __do_copy_data
|
|
|
11 |
8 .global __do_clear_bss
|
|
|
12 |
9 .stabs "/home/kaklik/projects/programy/C/avr/AVRcam/",100,0,2,.Ltext0
|
|
|
13 |
10 .stabs "CamConfig.c",100,0,2,.Ltext0
|
|
|
14 |
11 .text
|
|
|
15 |
12 .Ltext0:
|
|
|
16 |
13 .stabs "gcc2_compiled.",60,0,0,0
|
|
|
17 |
14 .stabs "int:t(0,1)=r(0,1);-32768;32767;",128,0,0,0
|
|
|
18 |
15 .stabs "char:t(0,2)=@s8;r(0,2);0;255;",128,0,0,0
|
|
|
19 |
16 .stabs "long int:t(0,3)=@s32;r(0,3);020000000000;017777777777;",128,0,0,0
|
|
|
20 |
17 .stabs "unsigned int:t(0,4)=r(0,4);0;0177777;",128,0,0,0
|
|
|
21 |
18 .stabs "long unsigned int:t(0,5)=@s32;r(0,5);0;037777777777;",128,0,0,0
|
|
|
22 |
19 .stabs "long long int:t(0,6)=@s64;r(0,6);01000000000000000000000;0777777777777777777777;",128,0,0,
|
|
|
23 |
20 .stabs "long long unsigned int:t(0,7)=@s64;r(0,7);0;01777777777777777777777;",128,0,0,0
|
|
|
24 |
21 .stabs "short int:t(0,8)=r(0,8);-32768;32767;",128,0,0,0
|
|
|
25 |
22 .stabs "short unsigned int:t(0,9)=r(0,9);0;0177777;",128,0,0,0
|
|
|
26 |
23 .stabs "signed char:t(0,10)=@s8;r(0,10);-128;127;",128,0,0,0
|
|
|
27 |
24 .stabs "unsigned char:t(0,11)=@s8;r(0,11);0;255;",128,0,0,0
|
|
|
28 |
25 .stabs "float:t(0,12)=r(0,1);4;0;",128,0,0,0
|
|
|
29 |
26 .stabs "double:t(0,13)=r(0,1);4;0;",128,0,0,0
|
|
|
30 |
27 .stabs "long double:t(0,14)=r(0,1);4;0;",128,0,0,0
|
|
|
31 |
28 .stabs "void:t(0,15)=(0,15)",128,0,0,0
|
|
|
32 |
29 .stabs "/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/io.h",130,0,0,0
|
|
|
33 |
30 .stabs "/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/sfr_defs.h",130,0,0,0
|
|
|
34 |
31 .stabs "/usr/lib/gcc/avr/4.2.1/../../../../avr/include/inttypes.h",130,0,0,0
|
|
|
35 |
32 .stabs "/usr/lib/gcc/avr/4.2.1/../../../../avr/include/stdint.h",130,0,0,0
|
|
|
36 |
33 .stabs "int8_t:t(4,1)=(0,10)",128,0,116,0
|
|
|
37 |
34 .stabs "uint8_t:t(4,2)=(0,11)",128,0,117,0
|
|
|
38 |
35 .stabs "int16_t:t(4,3)=(0,1)",128,0,118,0
|
|
|
39 |
36 .stabs "uint16_t:t(4,4)=(0,4)",128,0,119,0
|
|
|
40 |
37 .stabs "int32_t:t(4,5)=(0,3)",128,0,120,0
|
|
|
41 |
38 .stabs "uint32_t:t(4,6)=(0,5)",128,0,121,0
|
|
|
42 |
39 .stabs "int64_t:t(4,7)=(0,6)",128,0,122,0
|
|
|
43 |
40 .stabs "uint64_t:t(4,8)=(0,7)",128,0,123,0
|
|
|
44 |
41 .stabs "intptr_t:t(4,9)=(4,3)",128,0,135,0
|
|
|
45 |
42 .stabs "uintptr_t:t(4,10)=(4,4)",128,0,140,0
|
|
|
46 |
43 .stabs "int_least8_t:t(4,11)=(4,1)",128,0,152,0
|
|
|
47 |
44 .stabs "uint_least8_t:t(4,12)=(4,2)",128,0,157,0
|
|
|
48 |
45 .stabs "int_least16_t:t(4,13)=(4,3)",128,0,162,0
|
|
|
49 |
46 .stabs "uint_least16_t:t(4,14)=(4,4)",128,0,167,0
|
|
|
50 |
47 .stabs "int_least32_t:t(4,15)=(4,5)",128,0,172,0
|
|
|
51 |
48 .stabs "uint_least32_t:t(4,16)=(4,6)",128,0,177,0
|
|
|
52 |
49 .stabs "int_least64_t:t(4,17)=(4,7)",128,0,182,0
|
|
|
53 |
50 .stabs "uint_least64_t:t(4,18)=(4,8)",128,0,187,0
|
|
|
54 |
51 .stabs "int_fast8_t:t(4,19)=(4,1)",128,0,200,0
|
|
|
55 |
52 .stabs "uint_fast8_t:t(4,20)=(4,2)",128,0,205,0
|
|
|
56 |
53 .stabs "int_fast16_t:t(4,21)=(4,3)",128,0,210,0
|
|
|
57 |
54 .stabs "uint_fast16_t:t(4,22)=(4,4)",128,0,215,0
|
|
|
58 |
55 .stabs "int_fast32_t:t(4,23)=(4,5)",128,0,220,0
|
|
|
59 |
56 .stabs "uint_fast32_t:t(4,24)=(4,6)",128,0,225,0
|
|
|
60 |
57 .stabs "int_fast64_t:t(4,25)=(4,7)",128,0,230,0
|
|
|
61 |
GAS LISTING /tmp/cczUgJ5X.s page 2
|
174 |
kaklik |
62 |
|
|
|
63 |
|
484 |
kaklik |
64 |
58 .stabs "uint_fast64_t:t(4,26)=(4,8)",128,0,235,0
|
|
|
65 |
59 .stabs "intmax_t:t(4,27)=(4,7)",128,0,249,0
|
|
|
66 |
60 .stabs "uintmax_t:t(4,28)=(4,8)",128,0,254,0
|
|
|
67 |
61 .stabn 162,0,0,0
|
|
|
68 |
62 .stabs "int_farptr_t:t(3,1)=(4,5)",128,0,76,0
|
|
|
69 |
63 .stabs "uint_farptr_t:t(3,2)=(4,6)",128,0,80,0
|
|
|
70 |
64 .stabn 162,0,0,0
|
174 |
kaklik |
71 |
65 .stabn 162,0,0,0
|
|
|
72 |
66 .stabn 162,0,0,0
|
484 |
kaklik |
73 |
67 .stabs "CamConfig.h",130,0,0,0
|
|
|
74 |
68 .stabs "I2CInterface.h",130,0,0,0
|
|
|
75 |
69 .stabs "CommonDefs.h",130,0,0,0
|
|
|
76 |
70 .stabs "bool_t:t(7,1)=(0,11)",128,0,56,0
|
|
|
77 |
71 .stabn 162,0,0,0
|
|
|
78 |
72 .stabs "i2cCmd_t:t(6,1)=(6,2)=s2configReg:(0,11),0,8;data:(0,11),8,8;;",128,0,53,0
|
|
|
79 |
73 .stabn 162,0,0,0
|
174 |
kaklik |
80 |
74 .stabn 162,0,0,0
|
484 |
kaklik |
81 |
75 .stabs "CamConfig_writeTxFifo:F(7,1)",36,0,155,CamConfig_writeTxFifo
|
|
|
82 |
76 .stabs "cmd:P(6,1)",64,0,154,24
|
|
|
83 |
77 .global CamConfig_writeTxFifo
|
|
|
84 |
78 .type CamConfig_writeTxFifo, @function
|
|
|
85 |
79 CamConfig_writeTxFifo:
|
|
|
86 |
80 .stabd 46,0,0
|
174 |
kaklik |
87 |
1:CamConfig.c **** /*
|
|
|
88 |
2:CamConfig.c **** Copyright (C) 2004 John Orlando
|
|
|
89 |
3:CamConfig.c ****
|
|
|
90 |
4:CamConfig.c **** AVRcam: a small real-time image processing engine.
|
|
|
91 |
5:CamConfig.c ****
|
|
|
92 |
6:CamConfig.c **** This program is free software; you can redistribute it and/or
|
|
|
93 |
7:CamConfig.c **** modify it under the terms of the GNU General Public
|
|
|
94 |
8:CamConfig.c **** License as published by the Free Software Foundation; either
|
|
|
95 |
9:CamConfig.c **** version 2 of the License, or (at your option) any later version.
|
|
|
96 |
10:CamConfig.c ****
|
|
|
97 |
11:CamConfig.c **** This program is distributed in the hope that it will be useful,
|
|
|
98 |
12:CamConfig.c **** but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
99 |
13:CamConfig.c **** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
100 |
14:CamConfig.c **** General Public License for more details.
|
|
|
101 |
15:CamConfig.c ****
|
|
|
102 |
16:CamConfig.c **** You should have received a copy of the GNU General Public
|
|
|
103 |
17:CamConfig.c **** License along with this program; if not, write to the Free Software
|
|
|
104 |
18:CamConfig.c **** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
|
105 |
19:CamConfig.c ****
|
|
|
106 |
20:CamConfig.c **** For more information on the AVRcam, please contact:
|
|
|
107 |
21:CamConfig.c ****
|
|
|
108 |
22:CamConfig.c **** john@jrobot.net
|
|
|
109 |
23:CamConfig.c ****
|
|
|
110 |
24:CamConfig.c **** or go to www.jrobot.net for more details regarding the system.
|
|
|
111 |
25:CamConfig.c **** */
|
|
|
112 |
26:CamConfig.c **** /**********************************************************
|
|
|
113 |
27:CamConfig.c **** Module Name: CamConfig.c
|
|
|
114 |
28:CamConfig.c **** Module Date: 04/10/2004
|
|
|
115 |
29:CamConfig.c **** Module Auth: John Orlando
|
|
|
116 |
30:CamConfig.c ****
|
|
|
117 |
31:CamConfig.c **** Description: This module is responsible for the
|
|
|
118 |
32:CamConfig.c **** high-level configuration activities of the OV6620
|
|
|
119 |
33:CamConfig.c **** camera module. This module interfaces with the
|
484 |
kaklik |
120 |
34:CamConfig.c **** I2CInterface module to perform this configuration.
|
|
|
121 |
GAS LISTING /tmp/cczUgJ5X.s page 3
|
174 |
kaklik |
122 |
|
|
|
123 |
|
|
|
124 |
35:CamConfig.c ****
|
|
|
125 |
36:CamConfig.c **** Revision History:
|
|
|
126 |
37:CamConfig.c **** Date Rel Ver. Notes
|
|
|
127 |
38:CamConfig.c **** 4/10/2004 0.1 Module created
|
|
|
128 |
39:CamConfig.c **** 6/30/2004 1.0 Initial release for Circuit Cellar
|
|
|
129 |
40:CamConfig.c **** contest.
|
|
|
130 |
41:CamConfig.c **** 11/15/2004 1.2 Added code to un-tri-state the
|
|
|
131 |
42:CamConfig.c **** OV6620's pixel data busses at
|
|
|
132 |
43:CamConfig.c **** startup after four seconds.
|
|
|
133 |
44:CamConfig.c **** This was added in to
|
|
|
134 |
45:CamConfig.c **** allow the user to re-program the
|
|
|
135 |
46:CamConfig.c **** mega8 at startup if needed.
|
|
|
136 |
47:CamConfig.c **** ***********************************************************/
|
|
|
137 |
48:CamConfig.c ****
|
|
|
138 |
49:CamConfig.c **** /* Includes */
|
|
|
139 |
50:CamConfig.c **** #include <avr/io.h>
|
|
|
140 |
51:CamConfig.c **** #include "CamConfig.h"
|
|
|
141 |
52:CamConfig.c **** #include "I2CInterface.h"
|
|
|
142 |
53:CamConfig.c **** #include "CommonDefs.h"
|
|
|
143 |
54:CamConfig.c **** #include "Utility.h"
|
|
|
144 |
55:CamConfig.c ****
|
|
|
145 |
56:CamConfig.c **** /**********************************************************/
|
|
|
146 |
57:CamConfig.c **** /* Definitions */
|
|
|
147 |
58:CamConfig.c **** /* The length of an I2C command is made up of a register address
|
|
|
148 |
59:CamConfig.c **** plus the actual value of the register */
|
|
|
149 |
60:CamConfig.c **** #define SIZE_OF_I2C_CMD 2
|
|
|
150 |
61:CamConfig.c **** #define MAX_NUM_CONFIG_CMDS 8
|
|
|
151 |
62:CamConfig.c **** #define CAM_CONFIG_TX_FIFO_SIZE MAX_NUM_CONFIG_CMDS
|
|
|
152 |
63:CamConfig.c **** #define CAM_CONFIG_TX_FIFO_MASK CAM_CONFIG_TX_FIFO_SIZE-1
|
|
|
153 |
64:CamConfig.c ****
|
|
|
154 |
65:CamConfig.c **** /* Local Variables */
|
|
|
155 |
66:CamConfig.c ****
|
|
|
156 |
67:CamConfig.c **** /* Local Structures and Typedefs */
|
|
|
157 |
68:CamConfig.c ****
|
|
|
158 |
69:CamConfig.c **** /* Local Function Prototypes */
|
|
|
159 |
70:CamConfig.c **** static i2cCmd_t CamConfig_readTxFifo(void);
|
|
|
160 |
71:CamConfig.c ****
|
|
|
161 |
72:CamConfig.c **** /* Extern Variables */
|
|
|
162 |
73:CamConfig.c **** i2cCmd_t CamConfig_txFifo[CAM_CONFIG_TX_FIFO_SIZE];
|
|
|
163 |
74:CamConfig.c **** unsigned char CamConfig_txFifoHead=0;
|
|
|
164 |
75:CamConfig.c **** unsigned char CamConfig_txFifoTail=0;
|
|
|
165 |
76:CamConfig.c ****
|
|
|
166 |
77:CamConfig.c **** /***********************************************************
|
|
|
167 |
78:CamConfig.c **** Function Name: CamConfig_init
|
|
|
168 |
79:CamConfig.c **** Function Description: This function is responsible for
|
|
|
169 |
80:CamConfig.c **** performing the initial configuration of the camera.
|
|
|
170 |
81:CamConfig.c **** Inputs: none
|
|
|
171 |
82:CamConfig.c **** Outputs: none
|
|
|
172 |
83:CamConfig.c **** ***********************************************************/
|
|
|
173 |
84:CamConfig.c **** void CamConfig_init(void)
|
|
|
174 |
85:CamConfig.c **** {
|
|
|
175 |
86:CamConfig.c **** CamConfig_setCamReg(0x14,0x20); /* reduce frame size */
|
|
|
176 |
87:CamConfig.c **** CamConfig_setCamReg(0x39,0x40); /* gate PCLK with HREF */
|
|
|
177 |
88:CamConfig.c **** CamConfig_setCamReg(0x12,0x28); /* set RGB mode, with no AWB */
|
|
|
178 |
89:CamConfig.c **** CamConfig_setCamReg(0x28,0x05); /* set color sequencer */
|
|
|
179 |
90:CamConfig.c **** CamConfig_setCamReg(0x13,0x01); /* un-tri-state the Y/UV lines */
|
484 |
kaklik |
180 |
91:CamConfig.c ****
|
|
|
181 |
GAS LISTING /tmp/cczUgJ5X.s page 4
|
174 |
kaklik |
182 |
|
|
|
183 |
|
|
|
184 |
92:CamConfig.c **** /* send the first four cmds in the I2C fifo */
|
|
|
185 |
93:CamConfig.c **** CamConfig_sendFifoCmds();
|
|
|
186 |
94:CamConfig.c **** }
|
|
|
187 |
95:CamConfig.c ****
|
|
|
188 |
96:CamConfig.c ****
|
|
|
189 |
97:CamConfig.c **** /***********************************************************
|
|
|
190 |
98:CamConfig.c **** Function Name: CamConfig_setCamReg
|
|
|
191 |
99:CamConfig.c **** Function Description: This function is responsible for
|
|
|
192 |
100:CamConfig.c **** creating an I2C cmd structure and placing it into the
|
|
|
193 |
101:CamConfig.c **** cmd fifo.
|
|
|
194 |
102:CamConfig.c **** Inputs: reg - the register to modify
|
|
|
195 |
103:CamConfig.c **** val - the new value of the register
|
|
|
196 |
104:CamConfig.c **** Outputs: none
|
|
|
197 |
105:CamConfig.c **** ***********************************************************/
|
|
|
198 |
106:CamConfig.c **** void CamConfig_setCamReg(unsigned char reg, unsigned char val)
|
|
|
199 |
107:CamConfig.c **** {
|
|
|
200 |
108:CamConfig.c **** i2cCmd_t cmd;
|
|
|
201 |
109:CamConfig.c ****
|
|
|
202 |
110:CamConfig.c **** cmd.configReg = reg;
|
|
|
203 |
111:CamConfig.c **** cmd.data = val;
|
|
|
204 |
112:CamConfig.c **** #ifndef SIMULATION
|
|
|
205 |
113:CamConfig.c **** CamConfig_writeTxFifo(cmd);
|
|
|
206 |
114:CamConfig.c **** #endif
|
|
|
207 |
115:CamConfig.c **** }
|
|
|
208 |
116:CamConfig.c **** /***********************************************************
|
|
|
209 |
117:CamConfig.c **** Function Name: CamConfig_sendFifoCmds
|
|
|
210 |
118:CamConfig.c **** Function Description: This function is responsible for
|
|
|
211 |
119:CamConfig.c **** sending the entire contents of the config fifo. This
|
|
|
212 |
120:CamConfig.c **** function won't return until the configuration process
|
|
|
213 |
121:CamConfig.c **** is complete (or an error is encountered).
|
|
|
214 |
122:CamConfig.c **** Inputs: none
|
|
|
215 |
123:CamConfig.c **** Outputs: none
|
|
|
216 |
124:CamConfig.c **** Note: Since this function is written to use the TWI
|
|
|
217 |
125:CamConfig.c **** interrupt in the I2CInterface module, there will be
|
|
|
218 |
126:CamConfig.c **** some busy-waiting here...no big deal, since we end up
|
|
|
219 |
127:CamConfig.c **** having to trash the frame that we are executing this
|
|
|
220 |
128:CamConfig.c **** slave write in anyway (since we can't meet the strict
|
|
|
221 |
129:CamConfig.c **** timing requirements and write i2c at the same time).
|
|
|
222 |
130:CamConfig.c **** ***********************************************************/
|
|
|
223 |
131:CamConfig.c **** void CamConfig_sendFifoCmds(void)
|
|
|
224 |
132:CamConfig.c **** {
|
|
|
225 |
133:CamConfig.c **** i2cCmd_t cmd;
|
|
|
226 |
134:CamConfig.c ****
|
|
|
227 |
135:CamConfig.c **** while (CamConfig_txFifoHead != CamConfig_txFifoTail)
|
|
|
228 |
136:CamConfig.c **** {
|
|
|
229 |
137:CamConfig.c **** cmd = CamConfig_readTxFifo();
|
|
|
230 |
138:CamConfig.c **** I2CInt_writeData(CAM_ADDRESS,&cmd.configReg,SIZE_OF_I2C_CMD);
|
|
|
231 |
139:CamConfig.c **** Utility_delay(100);
|
|
|
232 |
140:CamConfig.c **** /* wait for the I2C transaction to complete */
|
|
|
233 |
141:CamConfig.c **** while(I2CInt_isI2cBusy() == TRUE);
|
|
|
234 |
142:CamConfig.c **** }
|
|
|
235 |
143:CamConfig.c **** }
|
|
|
236 |
144:CamConfig.c ****
|
|
|
237 |
145:CamConfig.c **** /***********************************************************
|
|
|
238 |
146:CamConfig.c **** Function Name: CamConfig_writeTxFifo
|
|
|
239 |
147:CamConfig.c **** Function Description: This function is responsible for
|
484 |
kaklik |
240 |
148:CamConfig.c **** adding a new command to the tx fifo. It adjusts all
|
|
|
241 |
GAS LISTING /tmp/cczUgJ5X.s page 5
|
174 |
kaklik |
242 |
|
|
|
243 |
|
|
|
244 |
149:CamConfig.c **** needed pointers.
|
|
|
245 |
150:CamConfig.c **** Inputs: cmd - the i2cCmd_t to add to the fifo
|
|
|
246 |
151:CamConfig.c **** Outputs: bool_t - indicating if writing to the fifo
|
|
|
247 |
152:CamConfig.c **** causes it to wrap
|
|
|
248 |
153:CamConfig.c **** ***********************************************************/
|
|
|
249 |
154:CamConfig.c **** bool_t CamConfig_writeTxFifo(i2cCmd_t cmd)
|
|
|
250 |
155:CamConfig.c **** {
|
484 |
kaklik |
251 |
81 .stabn 68,0,155,.LM0-.LFBB1
|
|
|
252 |
82 .LM0:
|
|
|
253 |
83 .LFBB1:
|
174 |
kaklik |
254 |
84 /* prologue: frame size=0 */
|
|
|
255 |
85 /* prologue end (size=0) */
|
|
|
256 |
156:CamConfig.c **** unsigned char tmpHead;
|
|
|
257 |
157:CamConfig.c **** bool_t retVal = TRUE;
|
|
|
258 |
158:CamConfig.c ****
|
|
|
259 |
159:CamConfig.c **** CamConfig_txFifo[CamConfig_txFifoHead] = cmd;
|
484 |
kaklik |
260 |
86 .stabn 68,0,159,.LM1-.LFBB1
|
174 |
kaklik |
261 |
87 .LM1:
|
|
|
262 |
88 0000 2091 0000 lds r18,CamConfig_txFifoHead
|
|
|
263 |
89 0004 E22F mov r30,r18
|
|
|
264 |
90 0006 FF27 clr r31
|
|
|
265 |
91 0008 EE0F lsl r30
|
|
|
266 |
92 000a FF1F rol r31
|
|
|
267 |
93 000c E050 subi r30,lo8(-(CamConfig_txFifo))
|
|
|
268 |
94 000e F040 sbci r31,hi8(-(CamConfig_txFifo))
|
|
|
269 |
95 0010 9183 std Z+1,r25
|
|
|
270 |
96 0012 8083 st Z,r24
|
|
|
271 |
160:CamConfig.c ****
|
|
|
272 |
161:CamConfig.c **** /* see if we need to wrap */
|
|
|
273 |
162:CamConfig.c **** tmpHead = (CamConfig_txFifoHead+1) & (CAM_CONFIG_TX_FIFO_MASK);
|
484 |
kaklik |
274 |
97 .stabn 68,0,162,.LM2-.LFBB1
|
174 |
kaklik |
275 |
98 .LM2:
|
|
|
276 |
99 0014 2F5F subi r18,lo8(-(1))
|
|
|
277 |
100 0016 2770 andi r18,lo8(7)
|
|
|
278 |
163:CamConfig.c **** CamConfig_txFifoHead = tmpHead;
|
484 |
kaklik |
279 |
101 .stabn 68,0,163,.LM3-.LFBB1
|
174 |
kaklik |
280 |
102 .LM3:
|
|
|
281 |
103 0018 2093 0000 sts CamConfig_txFifoHead,r18
|
|
|
282 |
104 001c 90E0 ldi r25,lo8(0)
|
|
|
283 |
105 001e 8091 0000 lds r24,CamConfig_txFifoTail
|
|
|
284 |
106 0022 2817 cp r18,r24
|
484 |
kaklik |
285 |
107 0024 01F4 brne .L2
|
|
|
286 |
108 .stabn 68,0,163,.LM4-.LFBB1
|
174 |
kaklik |
287 |
109 .LM4:
|
|
|
288 |
110 0026 91E0 ldi r25,lo8(1)
|
|
|
289 |
111 .L2:
|
|
|
290 |
112 0028 81E0 ldi r24,lo8(1)
|
|
|
291 |
113 002a 8927 eor r24,r25
|
|
|
292 |
164:CamConfig.c ****
|
|
|
293 |
165:CamConfig.c **** /* check to see if we have filled up the queue */
|
|
|
294 |
166:CamConfig.c **** if (CamConfig_txFifoHead == CamConfig_txFifoTail)
|
|
|
295 |
167:CamConfig.c **** {
|
|
|
296 |
168:CamConfig.c **** /* we wrapped the fifo...return false */
|
|
|
297 |
169:CamConfig.c **** retVal = FALSE;
|
|
|
298 |
170:CamConfig.c **** }
|
|
|
299 |
171:CamConfig.c **** return(retVal);
|
|
|
300 |
172:CamConfig.c **** }
|
484 |
kaklik |
301 |
GAS LISTING /tmp/cczUgJ5X.s page 6
|
174 |
kaklik |
302 |
|
|
|
303 |
|
484 |
kaklik |
304 |
114 .stabn 68,0,172,.LM5-.LFBB1
|
174 |
kaklik |
305 |
115 .LM5:
|
|
|
306 |
116 002c 9927 clr r25
|
|
|
307 |
117 /* epilogue: frame size=0 */
|
|
|
308 |
118 002e 0895 ret
|
|
|
309 |
119 /* epilogue end (size=1) */
|
|
|
310 |
120 /* function CamConfig_writeTxFifo size 24 (23) */
|
|
|
311 |
121 .size CamConfig_writeTxFifo, .-CamConfig_writeTxFifo
|
|
|
312 |
122 .stabs "tmpHead:r(0,11)",64,0,156,18
|
484 |
kaklik |
313 |
123 .stabn 192,0,0,.LFBB1-.LFBB1
|
|
|
314 |
124 .stabn 224,0,0,.Lscope1-.LFBB1
|
|
|
315 |
125 .Lscope1:
|
|
|
316 |
126 .stabs "",36,0,0,.Lscope1-.LFBB1
|
174 |
kaklik |
317 |
127 .stabd 78,0,0
|
|
|
318 |
128 .stabs "CamConfig_setCamReg:F(0,15)",36,0,107,CamConfig_setCamReg
|
|
|
319 |
129 .stabs "reg:P(0,11)",64,0,106,24
|
|
|
320 |
130 .stabs "val:P(0,11)",64,0,106,22
|
|
|
321 |
131 .global CamConfig_setCamReg
|
|
|
322 |
132 .type CamConfig_setCamReg, @function
|
|
|
323 |
133 CamConfig_setCamReg:
|
|
|
324 |
134 .stabd 46,0,0
|
484 |
kaklik |
325 |
135 .stabn 68,0,107,.LM6-.LFBB2
|
174 |
kaklik |
326 |
136 .LM6:
|
484 |
kaklik |
327 |
137 .LFBB2:
|
|
|
328 |
138 /* prologue: frame size=0 */
|
|
|
329 |
139 /* prologue end (size=0) */
|
|
|
330 |
140 .stabn 68,0,110,.LM7-.LFBB2
|
|
|
331 |
141 .LM7:
|
|
|
332 |
142 0030 282F mov r18,r24
|
|
|
333 |
143 .stabn 68,0,111,.LM8-.LFBB2
|
|
|
334 |
144 .LM8:
|
|
|
335 |
145 0032 362F mov r19,r22
|
|
|
336 |
146 .stabn 68,0,113,.LM9-.LFBB2
|
|
|
337 |
147 .LM9:
|
|
|
338 |
148 0034 C901 movw r24,r18
|
|
|
339 |
149 0036 00D0 rcall CamConfig_writeTxFifo
|
|
|
340 |
150 /* epilogue: frame size=0 */
|
|
|
341 |
151 0038 0895 ret
|
|
|
342 |
152 /* epilogue end (size=1) */
|
|
|
343 |
153 /* function CamConfig_setCamReg size 5 (4) */
|
|
|
344 |
154 .size CamConfig_setCamReg, .-CamConfig_setCamReg
|
|
|
345 |
155 .stabs "cmd:r(6,1)",64,0,108,18
|
|
|
346 |
156 .stabn 192,0,0,.LFBB2-.LFBB2
|
|
|
347 |
157 .stabn 224,0,0,.Lscope2-.LFBB2
|
|
|
348 |
158 .Lscope2:
|
|
|
349 |
159 .stabs "",36,0,0,.Lscope2-.LFBB2
|
|
|
350 |
160 .stabd 78,0,0
|
|
|
351 |
161 .stabs "CamConfig_sendFifoCmds:F(0,15)",36,0,132,CamConfig_sendFifoCmds
|
|
|
352 |
162 .global CamConfig_sendFifoCmds
|
|
|
353 |
163 .type CamConfig_sendFifoCmds, @function
|
|
|
354 |
164 CamConfig_sendFifoCmds:
|
|
|
355 |
165 .stabd 46,0,0
|
|
|
356 |
166 .stabn 68,0,132,.LM10-.LFBB3
|
|
|
357 |
167 .LM10:
|
|
|
358 |
168 .LFBB3:
|
|
|
359 |
169 /* prologue: frame size=2 */
|
|
|
360 |
170 003a EF92 push r14
|
|
|
361 |
GAS LISTING /tmp/cczUgJ5X.s page 7
|
174 |
kaklik |
362 |
|
|
|
363 |
|
484 |
kaklik |
364 |
171 003c FF92 push r15
|
|
|
365 |
172 003e 0F93 push r16
|
|
|
366 |
173 0040 1F93 push r17
|
|
|
367 |
174 0042 CF93 push r28
|
|
|
368 |
175 0044 DF93 push r29
|
|
|
369 |
176 0046 CDB7 in r28,__SP_L__
|
|
|
370 |
177 0048 DEB7 in r29,__SP_H__
|
|
|
371 |
178 004a 2297 sbiw r28,2
|
|
|
372 |
179 004c 0FB6 in __tmp_reg__,__SREG__
|
|
|
373 |
180 004e F894 cli
|
|
|
374 |
181 0050 DEBF out __SP_H__,r29
|
|
|
375 |
182 0052 0FBE out __SREG__,__tmp_reg__
|
|
|
376 |
183 0054 CDBF out __SP_L__,r28
|
|
|
377 |
184 /* prologue end (size=14) */
|
|
|
378 |
185 .LBB4:
|
|
|
379 |
186 .LBB5:
|
174 |
kaklik |
380 |
173:CamConfig.c ****
|
|
|
381 |
174:CamConfig.c **** /***********************************************************
|
|
|
382 |
175:CamConfig.c **** Function Name: CamConfig_readTxFifo
|
|
|
383 |
176:CamConfig.c **** Function Description: This function is responsible for
|
|
|
384 |
177:CamConfig.c **** reading a cmd out of the tx fifo.
|
|
|
385 |
178:CamConfig.c **** Inputs: none
|
|
|
386 |
179:CamConfig.c **** Outputs: i2cCmd_t - the cmd read from the fifo
|
|
|
387 |
180:CamConfig.c **** ***********************************************************/
|
|
|
388 |
181:CamConfig.c **** static i2cCmd_t CamConfig_readTxFifo(void)
|
|
|
389 |
182:CamConfig.c **** {
|
|
|
390 |
183:CamConfig.c **** i2cCmd_t cmd;
|
|
|
391 |
184:CamConfig.c **** unsigned char tmpTail;
|
|
|
392 |
185:CamConfig.c ****
|
|
|
393 |
186:CamConfig.c **** /* just return the current tail from the rx fifo */
|
|
|
394 |
187:CamConfig.c **** cmd = CamConfig_txFifo[CamConfig_txFifoTail];
|
484 |
kaklik |
395 |
187 .stabn 68,0,187,.LM11-.LFBB3
|
|
|
396 |
188 .LM11:
|
|
|
397 |
189 0056 0F2E mov __tmp_reg__,r31
|
|
|
398 |
190 0058 F0E0 ldi r31,lo8(CamConfig_txFifo)
|
|
|
399 |
191 005a EF2E mov r14,r31
|
|
|
400 |
192 005c F0E0 ldi r31,hi8(CamConfig_txFifo)
|
|
|
401 |
193 005e FF2E mov r15,r31
|
|
|
402 |
194 0060 F02D mov r31,__tmp_reg__
|
|
|
403 |
195 .LBE5:
|
|
|
404 |
196 .LBE4:
|
|
|
405 |
197 .stabn 68,0,138,.LM12-.LFBB3
|
|
|
406 |
198 .LM12:
|
|
|
407 |
199 0062 8E01 movw r16,r28
|
|
|
408 |
200 0064 0F5F subi r16,lo8(-(1))
|
|
|
409 |
201 0066 1F4F sbci r17,hi8(-(1))
|
|
|
410 |
202 0068 00C0 rjmp .L7
|
|
|
411 |
203 .L8:
|
|
|
412 |
204 .LBB7:
|
|
|
413 |
205 .LBB6:
|
|
|
414 |
206 .stabn 68,0,187,.LM13-.LFBB3
|
|
|
415 |
207 .LM13:
|
|
|
416 |
208 006a E32F mov r30,r19
|
|
|
417 |
209 006c FF27 clr r31
|
|
|
418 |
210 006e EE0F lsl r30
|
|
|
419 |
211 0070 FF1F rol r31
|
|
|
420 |
212 0072 EE0D add r30,r14
|
|
|
421 |
GAS LISTING /tmp/cczUgJ5X.s page 8
|
|
|
422 |
|
|
|
423 |
|
|
|
424 |
213 0074 FF1D adc r31,r15
|
|
|
425 |
214 0076 9181 ldd r25,Z+1
|
|
|
426 |
215 0078 2081 ld r18,Z
|
174 |
kaklik |
427 |
188:CamConfig.c **** tmpTail = (CamConfig_txFifoTail+1) & (CAM_CONFIG_TX_FIFO_MASK);
|
|
|
428 |
189:CamConfig.c **** CamConfig_txFifoTail = tmpTail;
|
484 |
kaklik |
429 |
216 .stabn 68,0,189,.LM14-.LFBB3
|
|
|
430 |
217 .LM14:
|
|
|
431 |
218 007a 832F mov r24,r19
|
|
|
432 |
219 007c 8F5F subi r24,lo8(-(1))
|
|
|
433 |
220 007e 8770 andi r24,lo8(7)
|
|
|
434 |
221 0080 8093 0000 sts CamConfig_txFifoTail,r24
|
|
|
435 |
222 .stabn 68,0,137,.LM15-.LFBB3
|
|
|
436 |
223 .LM15:
|
|
|
437 |
224 0084 9A83 std Y+2,r25
|
|
|
438 |
225 0086 2983 std Y+1,r18
|
|
|
439 |
226 .LBE6:
|
|
|
440 |
227 .LBE7:
|
|
|
441 |
228 .stabn 68,0,138,.LM16-.LFBB3
|
|
|
442 |
229 .LM16:
|
|
|
443 |
230 0088 42E0 ldi r20,lo8(2)
|
|
|
444 |
231 008a B801 movw r22,r16
|
|
|
445 |
232 008c 80E6 ldi r24,lo8(96)
|
|
|
446 |
233 008e 00D0 rcall I2CInt_writeData
|
|
|
447 |
234 .stabn 68,0,139,.LM17-.LFBB3
|
|
|
448 |
235 .LM17:
|
|
|
449 |
236 0090 84E6 ldi r24,lo8(100)
|
|
|
450 |
237 0092 90E0 ldi r25,hi8(100)
|
|
|
451 |
238 0094 00D0 rcall Utility_delay
|
|
|
452 |
239 .L9:
|
|
|
453 |
240 .stabn 68,0,141,.LM18-.LFBB3
|
|
|
454 |
241 .LM18:
|
|
|
455 |
242 0096 00D0 rcall I2CInt_isI2cBusy
|
|
|
456 |
243 0098 8130 cpi r24,lo8(1)
|
|
|
457 |
244 009a 01F0 breq .L9
|
|
|
458 |
245 .L7:
|
|
|
459 |
246 .stabn 68,0,135,.LM19-.LFBB3
|
|
|
460 |
247 .LM19:
|
|
|
461 |
248 009c 3091 0000 lds r19,CamConfig_txFifoTail
|
|
|
462 |
249 00a0 8091 0000 lds r24,CamConfig_txFifoHead
|
|
|
463 |
250 00a4 8317 cp r24,r19
|
|
|
464 |
251 00a6 01F4 brne .L8
|
|
|
465 |
252 /* epilogue: frame size=2 */
|
|
|
466 |
253 00a8 2296 adiw r28,2
|
|
|
467 |
254 00aa 0FB6 in __tmp_reg__,__SREG__
|
|
|
468 |
255 00ac F894 cli
|
|
|
469 |
256 00ae DEBF out __SP_H__,r29
|
|
|
470 |
257 00b0 0FBE out __SREG__,__tmp_reg__
|
|
|
471 |
258 00b2 CDBF out __SP_L__,r28
|
|
|
472 |
259 00b4 DF91 pop r29
|
|
|
473 |
260 00b6 CF91 pop r28
|
|
|
474 |
261 00b8 1F91 pop r17
|
|
|
475 |
262 00ba 0F91 pop r16
|
|
|
476 |
263 00bc FF90 pop r15
|
|
|
477 |
264 00be EF90 pop r14
|
|
|
478 |
265 00c0 0895 ret
|
|
|
479 |
266 /* epilogue end (size=13) */
|
|
|
480 |
267 /* function CamConfig_sendFifoCmds size 68 (41) */
|
|
|
481 |
GAS LISTING /tmp/cczUgJ5X.s page 9
|
174 |
kaklik |
482 |
|
|
|
483 |
|
484 |
kaklik |
484 |
268 .size CamConfig_sendFifoCmds, .-CamConfig_sendFifoCmds
|
|
|
485 |
269 .stabs "cmd:(6,1)",128,0,133,1
|
|
|
486 |
270 .stabn 192,0,0,.LFBB3-.LFBB3
|
|
|
487 |
271 .stabn 224,0,0,.Lscope3-.LFBB3
|
|
|
488 |
272 .Lscope3:
|
|
|
489 |
273 .stabs "",36,0,0,.Lscope3-.LFBB3
|
|
|
490 |
274 .stabd 78,0,0
|
|
|
491 |
275 .stabs "CamConfig_init:F(0,15)",36,0,85,CamConfig_init
|
|
|
492 |
276 .global CamConfig_init
|
|
|
493 |
277 .type CamConfig_init, @function
|
|
|
494 |
278 CamConfig_init:
|
|
|
495 |
279 .stabd 46,0,0
|
|
|
496 |
280 .stabn 68,0,85,.LM20-.LFBB4
|
|
|
497 |
281 .LM20:
|
|
|
498 |
282 .LFBB4:
|
|
|
499 |
283 /* prologue: frame size=0 */
|
|
|
500 |
284 /* prologue end (size=0) */
|
|
|
501 |
285 .stabn 68,0,86,.LM21-.LFBB4
|
|
|
502 |
286 .LM21:
|
|
|
503 |
287 00c2 60E2 ldi r22,lo8(32)
|
|
|
504 |
288 00c4 84E1 ldi r24,lo8(20)
|
|
|
505 |
289 00c6 00D0 rcall CamConfig_setCamReg
|
|
|
506 |
290 .stabn 68,0,87,.LM22-.LFBB4
|
|
|
507 |
291 .LM22:
|
|
|
508 |
292 00c8 60E4 ldi r22,lo8(64)
|
|
|
509 |
293 00ca 89E3 ldi r24,lo8(57)
|
|
|
510 |
294 00cc 00D0 rcall CamConfig_setCamReg
|
|
|
511 |
295 .stabn 68,0,88,.LM23-.LFBB4
|
|
|
512 |
296 .LM23:
|
|
|
513 |
297 00ce 68E2 ldi r22,lo8(40)
|
|
|
514 |
298 00d0 82E1 ldi r24,lo8(18)
|
|
|
515 |
299 00d2 00D0 rcall CamConfig_setCamReg
|
|
|
516 |
300 .stabn 68,0,89,.LM24-.LFBB4
|
|
|
517 |
301 .LM24:
|
|
|
518 |
302 00d4 65E0 ldi r22,lo8(5)
|
|
|
519 |
303 00d6 88E2 ldi r24,lo8(40)
|
|
|
520 |
304 00d8 00D0 rcall CamConfig_setCamReg
|
|
|
521 |
305 .stabn 68,0,90,.LM25-.LFBB4
|
|
|
522 |
306 .LM25:
|
|
|
523 |
307 00da 61E0 ldi r22,lo8(1)
|
|
|
524 |
308 00dc 83E1 ldi r24,lo8(19)
|
|
|
525 |
309 00de 00D0 rcall CamConfig_setCamReg
|
|
|
526 |
310 .stabn 68,0,93,.LM26-.LFBB4
|
|
|
527 |
311 .LM26:
|
|
|
528 |
312 00e0 00D0 rcall CamConfig_sendFifoCmds
|
|
|
529 |
313 /* epilogue: frame size=0 */
|
|
|
530 |
314 00e2 0895 ret
|
|
|
531 |
315 /* epilogue end (size=1) */
|
|
|
532 |
316 /* function CamConfig_init size 17 (16) */
|
|
|
533 |
317 .size CamConfig_init, .-CamConfig_init
|
|
|
534 |
318 .Lscope4:
|
|
|
535 |
319 .stabs "",36,0,0,.Lscope4-.LFBB4
|
|
|
536 |
320 .stabd 78,0,0
|
|
|
537 |
321 .global CamConfig_txFifoHead
|
|
|
538 |
322 .global CamConfig_txFifoHead
|
|
|
539 |
323 .section .bss
|
|
|
540 |
324 .type CamConfig_txFifoHead, @object
|
|
|
541 |
GAS LISTING /tmp/cczUgJ5X.s page 10
|
174 |
kaklik |
542 |
|
|
|
543 |
|
484 |
kaklik |
544 |
325 .size CamConfig_txFifoHead, 1
|
|
|
545 |
326 CamConfig_txFifoHead:
|
|
|
546 |
327 0000 00 .skip 1,0
|
|
|
547 |
328 .global CamConfig_txFifoTail
|
|
|
548 |
329 .global CamConfig_txFifoTail
|
|
|
549 |
330 .type CamConfig_txFifoTail, @object
|
|
|
550 |
331 .size CamConfig_txFifoTail, 1
|
|
|
551 |
332 CamConfig_txFifoTail:
|
|
|
552 |
333 0001 00 .skip 1,0
|
|
|
553 |
334 .comm CamConfig_txFifo,16,1
|
|
|
554 |
335 .stabs "CamConfig_txFifo:G(0,16)=ar(0,17)=r(0,17);0;0177777;;0;7;(6,1)",32,0,73,0
|
|
|
555 |
336 .stabs "CamConfig_txFifoHead:G(0,11)",32,0,74,0
|
|
|
556 |
337 .stabs "CamConfig_txFifoTail:G(0,11)",32,0,75,0
|
|
|
557 |
338 .text
|
|
|
558 |
339 .stabs "",100,0,0,.Letext0
|
|
|
559 |
340 .Letext0:
|
|
|
560 |
341 /* File "CamConfig.c": code 114 = 0x0072 ( 84), prologues 14, epilogues 16 */
|
|
|
561 |
GAS LISTING /tmp/cczUgJ5X.s page 11
|
174 |
kaklik |
562 |
|
|
|
563 |
|
|
|
564 |
DEFINED SYMBOLS
|
|
|
565 |
*ABS*:00000000 CamConfig.c
|
484 |
kaklik |
566 |
/tmp/cczUgJ5X.s:2 *ABS*:0000003f __SREG__
|
|
|
567 |
/tmp/cczUgJ5X.s:3 *ABS*:0000003e __SP_H__
|
|
|
568 |
/tmp/cczUgJ5X.s:4 *ABS*:0000003d __SP_L__
|
|
|
569 |
/tmp/cczUgJ5X.s:5 *ABS*:00000000 __tmp_reg__
|
|
|
570 |
/tmp/cczUgJ5X.s:6 *ABS*:00000001 __zero_reg__
|
|
|
571 |
/tmp/cczUgJ5X.s:79 .text:00000000 CamConfig_writeTxFifo
|
|
|
572 |
/tmp/cczUgJ5X.s:326 .bss:00000000 CamConfig_txFifoHead
|
174 |
kaklik |
573 |
*COM*:00000010 CamConfig_txFifo
|
484 |
kaklik |
574 |
/tmp/cczUgJ5X.s:332 .bss:00000001 CamConfig_txFifoTail
|
|
|
575 |
/tmp/cczUgJ5X.s:133 .text:00000030 CamConfig_setCamReg
|
|
|
576 |
/tmp/cczUgJ5X.s:164 .text:0000003a CamConfig_sendFifoCmds
|
|
|
577 |
/tmp/cczUgJ5X.s:278 .text:000000c2 CamConfig_init
|
174 |
kaklik |
578 |
|
|
|
579 |
UNDEFINED SYMBOLS
|
|
|
580 |
__do_copy_data
|
|
|
581 |
__do_clear_bss
|
|
|
582 |
I2CInt_writeData
|
|
|
583 |
Utility_delay
|
|
|
584 |
I2CInt_isI2cBusy
|