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