GAS LISTING /tmp/cctTSiV3.s 			page 1


   1               		.file	"CamConfig.c"
   2               		.arch atmega8
   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
  10               		.stabs	"/home/kaklik/projects/programy/Atmel_C/AVRcam/",100,0,2,.Ltext0
  11               		.stabs	"CamConfig.c",100,0,2,.Ltext0
  12               		.text
  13               	.Ltext0:
  14               		.stabs	"gcc2_compiled.",60,0,0,0
  15               		.stabs	"int:t(0,1)=r(0,1);-32768;32767;",128,0,0,0
  16               		.stabs	"char:t(0,2)=@s8;r(0,2);0;255;",128,0,0,0
  17               		.stabs	"long int:t(0,3)=@s32;r(0,3);020000000000;017777777777;",128,0,0,0
  18               		.stabs	"unsigned int:t(0,4)=r(0,4);0;0177777;",128,0,0,0
  19               		.stabs	"long unsigned int:t(0,5)=@s32;r(0,5);0;037777777777;",128,0,0,0
  20               		.stabs	"long long int:t(0,6)=@s64;r(0,6);01000000000000000000000;0777777777777777777777;",128,0,0,
  21               		.stabs	"long long unsigned int:t(0,7)=@s64;r(0,7);0;01777777777777777777777;",128,0,0,0
  22               		.stabs	"short int:t(0,8)=r(0,8);-32768;32767;",128,0,0,0
  23               		.stabs	"short unsigned int:t(0,9)=r(0,9);0;0177777;",128,0,0,0
  24               		.stabs	"signed char:t(0,10)=@s8;r(0,10);-128;127;",128,0,0,0
  25               		.stabs	"unsigned char:t(0,11)=@s8;r(0,11);0;255;",128,0,0,0
  26               		.stabs	"float:t(0,12)=r(0,1);4;0;",128,0,0,0
  27               		.stabs	"double:t(0,13)=r(0,1);4;0;",128,0,0,0
  28               		.stabs	"long double:t(0,14)=r(0,1);4;0;",128,0,0,0
  29               		.stabs	"void:t(0,15)=(0,15)",128,0,0,0
  30               		.stabs	"/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/io.h",130,0,0,0
  31               		.stabs	"/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/sfr_defs.h",130,0,0,0
  32               		.stabs	"/usr/lib/gcc/avr/4.1.0/../../../../avr/include/inttypes.h",130,0,0,0
  33               		.stabs	"/usr/lib/gcc/avr/4.1.0/../../../../avr/include/stdint.h",130,0,0,0
  34               		.stabs	"int8_t:t(4,1)=(0,10)",128,0,116,0
  35               		.stabs	"uint8_t:t(4,2)=(0,11)",128,0,117,0
  36               		.stabs	"int16_t:t(4,3)=(0,1)",128,0,118,0
  37               		.stabs	"uint16_t:t(4,4)=(0,4)",128,0,119,0
  38               		.stabs	"int32_t:t(4,5)=(0,3)",128,0,120,0
  39               		.stabs	"uint32_t:t(4,6)=(0,5)",128,0,121,0
  40               		.stabs	"int64_t:t(4,7)=(0,6)",128,0,122,0
  41               		.stabs	"uint64_t:t(4,8)=(0,7)",128,0,123,0
  42               		.stabs	"intptr_t:t(4,9)=(4,3)",128,0,135,0
  43               		.stabs	"uintptr_t:t(4,10)=(4,4)",128,0,140,0
  44               		.stabs	"int_least8_t:t(4,11)=(4,1)",128,0,152,0
  45               		.stabs	"uint_least8_t:t(4,12)=(4,2)",128,0,157,0
  46               		.stabs	"int_least16_t:t(4,13)=(4,3)",128,0,162,0
  47               		.stabs	"uint_least16_t:t(4,14)=(4,4)",128,0,167,0
  48               		.stabs	"int_least32_t:t(4,15)=(4,5)",128,0,172,0
  49               		.stabs	"uint_least32_t:t(4,16)=(4,6)",128,0,177,0
  50               		.stabs	"int_least64_t:t(4,17)=(4,7)",128,0,182,0
  51               		.stabs	"uint_least64_t:t(4,18)=(4,8)",128,0,187,0
  52               		.stabs	"int_fast8_t:t(4,19)=(4,1)",128,0,200,0
  53               		.stabs	"uint_fast8_t:t(4,20)=(4,2)",128,0,205,0
  54               		.stabs	"int_fast16_t:t(4,21)=(4,3)",128,0,210,0
  55               		.stabs	"uint_fast16_t:t(4,22)=(4,4)",128,0,215,0
  56               		.stabs	"int_fast32_t:t(4,23)=(4,5)",128,0,220,0
  57               		.stabs	"uint_fast32_t:t(4,24)=(4,6)",128,0,225,0
GAS LISTING /tmp/cctTSiV3.s 			page 2


  58               		.stabs	"int_fast64_t:t(4,25)=(4,7)",128,0,230,0
  59               		.stabs	"uint_fast64_t:t(4,26)=(4,8)",128,0,235,0
  60               		.stabs	"intmax_t:t(4,27)=(4,7)",128,0,249,0
  61               		.stabs	"uintmax_t:t(4,28)=(4,8)",128,0,254,0
  62               		.stabn	162,0,0,0
  63               		.stabs	"int_farptr_t:t(3,1)=(4,5)",128,0,76,0
  64               		.stabs	"uint_farptr_t:t(3,2)=(4,6)",128,0,80,0
  65               		.stabn	162,0,0,0
  66               		.stabn	162,0,0,0
  67               		.stabn	162,0,0,0
  68               		.stabs	"CamConfig.h",130,0,0,0
  69               		.stabs	"I2CInterface.h",130,0,0,0
  70               		.stabs	"CommonDefs.h",130,0,0,0
  71               		.stabs	"bool_t:t(7,1)=(0,11)",128,0,56,0
  72               		.stabn	162,0,0,0
  73               		.stabs	"i2cCmd_t:t(6,1)=(6,2)=s2configReg:(0,11),0,8;data:(0,11),8,8;;",128,0,53,0
  74               		.stabn	162,0,0,0
  75               		.stabn	162,0,0,0
  76               		.stabs	"CamConfig_writeTxFifo:F(7,1)",36,0,155,CamConfig_writeTxFifo
  77               		.stabs	"cmd:P(6,1)",64,0,154,24
  78               	.global	CamConfig_writeTxFifo
  79               		.type	CamConfig_writeTxFifo, @function
  80               	CamConfig_writeTxFifo:
  81               		.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
GAS LISTING /tmp/cctTSiV3.s 			page 3


  34:CamConfig.c   **** 	I2CInterface module to perform this configuration.
  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 */
GAS LISTING /tmp/cctTSiV3.s 			page 4


  91:CamConfig.c   **** 	
  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
GAS LISTING /tmp/cctTSiV3.s 			page 5


 148:CamConfig.c   **** 	adding a new command to the tx fifo.  It adjusts all
 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   **** {
  82               		.stabn	68,0,155,.LM0-CamConfig_writeTxFifo
  83               	.LM0:
  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-CamConfig_writeTxFifo
  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-CamConfig_writeTxFifo
  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-CamConfig_writeTxFifo
 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 09F4      		brne .L2
 108               		.stabn	68,0,163,.LM4-CamConfig_writeTxFifo
 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/cctTSiV3.s 			page 6


 114               		.stabn	68,0,172,.LM5-CamConfig_writeTxFifo
 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,CamConfig_writeTxFifo-CamConfig_writeTxFifo
 124               		.stabn	224,0,0,.Lscope0-CamConfig_writeTxFifo
 125               	.Lscope0:
 126               		.stabs	"",36,0,0,.Lscope0-CamConfig_writeTxFifo
 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-CamConfig_setCamReg
 136               	.LM6:
 137               	/* prologue: frame size=0 */
 138               	/* prologue end (size=0) */
 139               		.stabn	68,0,110,.LM7-CamConfig_setCamReg
 140               	.LM7:
 141 0030 282F      		mov r18,r24
 142               		.stabn	68,0,111,.LM8-CamConfig_setCamReg
 143               	.LM8:
 144 0032 362F      		mov r19,r22
 145               		.stabn	68,0,113,.LM9-CamConfig_setCamReg
 146               	.LM9:
 147 0034 C901      		movw r24,r18
 148 0036 E4DF      		rcall CamConfig_writeTxFifo
 149               	/* epilogue: frame size=0 */
 150 0038 0895      		ret
 151               	/* epilogue end (size=1) */
 152               	/* function CamConfig_setCamReg size 5 (4) */
 153               		.size	CamConfig_setCamReg, .-CamConfig_setCamReg
 154               		.stabs	"cmd:r(6,1)",64,0,108,18
 155               		.stabn	192,0,0,CamConfig_setCamReg-CamConfig_setCamReg
 156               		.stabn	224,0,0,.Lscope1-CamConfig_setCamReg
 157               	.Lscope1:
 158               		.stabs	"",36,0,0,.Lscope1-CamConfig_setCamReg
 159               		.stabd	78,0,0
 160               		.stabs	"CamConfig_sendFifoCmds:F(0,15)",36,0,132,CamConfig_sendFifoCmds
 161               	.global	CamConfig_sendFifoCmds
 162               		.type	CamConfig_sendFifoCmds, @function
 163               	CamConfig_sendFifoCmds:
 164               		.stabd	46,0,0
 165               		.stabn	68,0,132,.LM10-CamConfig_sendFifoCmds
 166               	.LM10:
 167               	/* prologue: frame size=2 */
 168 003a 0F93      		push r16
 169 003c 1F93      		push r17
 170 003e CF93      		push r28
GAS LISTING /tmp/cctTSiV3.s 			page 7


 171 0040 DF93      		push r29
 172 0042 CDB7      		in r28,__SP_L__
 173 0044 DEB7      		in r29,__SP_H__
 174 0046 2297      		sbiw r28,2
 175 0048 0FB6      		in __tmp_reg__,__SREG__
 176 004a F894      		cli
 177 004c DEBF      		out __SP_H__,r29
 178 004e 0FBE      		out __SREG__,__tmp_reg__
 179 0050 CDBF      		out __SP_L__,r28
 180               	/* prologue end (size=12) */
 181 0052 8E01      		movw r16,r28
 182 0054 0F5F      		subi r16,lo8(-(1))
 183 0056 1F4F      		sbci r17,hi8(-(1))
 184 0058 19C0      		rjmp .L7
 185               	.L8:
 186               	.LBB4:
 187               	.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];	
 188               		.stabn	68,0,187,.LM11-CamConfig_sendFifoCmds
 189               	.LM11:
 190 005a E32F      		mov r30,r19
 191 005c FF27      		clr r31
 192 005e EE0F      		lsl r30
 193 0060 FF1F      		rol r31
 194 0062 E050      		subi r30,lo8(-(CamConfig_txFifo))
 195 0064 F040      		sbci r31,hi8(-(CamConfig_txFifo))
 196 0066 9181      		ldd r25,Z+1
 197 0068 2081      		ld r18,Z
 188:CamConfig.c   **** 	tmpTail = (CamConfig_txFifoTail+1) & (CAM_CONFIG_TX_FIFO_MASK);
 189:CamConfig.c   **** 	CamConfig_txFifoTail = tmpTail;
 198               		.stabn	68,0,189,.LM12-CamConfig_sendFifoCmds
 199               	.LM12:
 200 006a 832F      		mov r24,r19
 201 006c 8F5F      		subi r24,lo8(-(1))
 202 006e 8770      		andi r24,lo8(7)
 203 0070 8093 0000 		sts CamConfig_txFifoTail,r24
 204               		.stabn	68,0,137,.LM13-CamConfig_sendFifoCmds
 205               	.LM13:
 206 0074 9A83      		std Y+2,r25
 207 0076 2983      		std Y+1,r18
 208               	.LBE5:
 209               	.LBE4:
 210               		.stabn	68,0,138,.LM14-CamConfig_sendFifoCmds
GAS LISTING /tmp/cctTSiV3.s 			page 8


 211               	.LM14:
 212 0078 42E0      		ldi r20,lo8(2)
 213 007a B801      		movw r22,r16
 214 007c 80E6      		ldi r24,lo8(96)
 215 007e 00D0      		rcall I2CInt_writeData
 216               		.stabn	68,0,139,.LM15-CamConfig_sendFifoCmds
 217               	.LM15:
 218 0080 84E6      		ldi r24,lo8(100)
 219 0082 90E0      		ldi r25,hi8(100)
 220 0084 00D0      		rcall Utility_delay
 221               	.L9:
 222               		.stabn	68,0,141,.LM16-CamConfig_sendFifoCmds
 223               	.LM16:
 224 0086 00D0      		rcall I2CInt_isI2cBusy
 225 0088 8130      		cpi r24,lo8(1)
 226 008a E9F3      		breq .L9
 227               	.L7:
 228               		.stabn	68,0,135,.LM17-CamConfig_sendFifoCmds
 229               	.LM17:
 230 008c 3091 0000 		lds r19,CamConfig_txFifoTail
 231 0090 8091 0000 		lds r24,CamConfig_txFifoHead
 232 0094 8317      		cp r24,r19
 233 0096 09F7      		brne .L8
 234               	/* epilogue: frame size=2 */
 235 0098 2296      		adiw r28,2
 236 009a 0FB6      		in __tmp_reg__,__SREG__
 237 009c F894      		cli
 238 009e DEBF      		out __SP_H__,r29
 239 00a0 0FBE      		out __SREG__,__tmp_reg__
 240 00a2 CDBF      		out __SP_L__,r28
 241 00a4 DF91      		pop r29
 242 00a6 CF91      		pop r28
 243 00a8 1F91      		pop r17
 244 00aa 0F91      		pop r16
 245 00ac 0895      		ret
 246               	/* epilogue end (size=11) */
 247               	/* function CamConfig_sendFifoCmds size 58 (35) */
 248               		.size	CamConfig_sendFifoCmds, .-CamConfig_sendFifoCmds
 249               		.stabs	"cmd:(6,1)",128,0,133,1
 250               		.stabn	192,0,0,CamConfig_sendFifoCmds-CamConfig_sendFifoCmds
 251               		.stabn	224,0,0,.Lscope2-CamConfig_sendFifoCmds
 252               	.Lscope2:
 253               		.stabs	"",36,0,0,.Lscope2-CamConfig_sendFifoCmds
 254               		.stabd	78,0,0
 255               		.stabs	"CamConfig_init:F(0,15)",36,0,85,CamConfig_init
 256               	.global	CamConfig_init
 257               		.type	CamConfig_init, @function
 258               	CamConfig_init:
 259               		.stabd	46,0,0
 260               		.stabn	68,0,85,.LM18-CamConfig_init
 261               	.LM18:
 262               	/* prologue: frame size=0 */
 263               	/* prologue end (size=0) */
 264               		.stabn	68,0,86,.LM19-CamConfig_init
 265               	.LM19:
 266 00ae 60E2      		ldi r22,lo8(32)
 267 00b0 84E1      		ldi r24,lo8(20)
GAS LISTING /tmp/cctTSiV3.s 			page 9


 268 00b2 BEDF      		rcall CamConfig_setCamReg
 269               		.stabn	68,0,87,.LM20-CamConfig_init
 270               	.LM20:
 271 00b4 60E4      		ldi r22,lo8(64)
 272 00b6 89E3      		ldi r24,lo8(57)
 273 00b8 BBDF      		rcall CamConfig_setCamReg
 274               		.stabn	68,0,88,.LM21-CamConfig_init
 275               	.LM21:
 276 00ba 68E2      		ldi r22,lo8(40)
 277 00bc 82E1      		ldi r24,lo8(18)
 278 00be B8DF      		rcall CamConfig_setCamReg
 279               		.stabn	68,0,89,.LM22-CamConfig_init
 280               	.LM22:
 281 00c0 65E0      		ldi r22,lo8(5)
 282 00c2 88E2      		ldi r24,lo8(40)
 283 00c4 B5DF      		rcall CamConfig_setCamReg
 284               		.stabn	68,0,90,.LM23-CamConfig_init
 285               	.LM23:
 286 00c6 61E0      		ldi r22,lo8(1)
 287 00c8 83E1      		ldi r24,lo8(19)
 288 00ca B2DF      		rcall CamConfig_setCamReg
 289               		.stabn	68,0,93,.LM24-CamConfig_init
 290               	.LM24:
 291 00cc B6DF      		rcall CamConfig_sendFifoCmds
 292               	/* epilogue: frame size=0 */
 293 00ce 0895      		ret
 294               	/* epilogue end (size=1) */
 295               	/* function CamConfig_init size 17 (16) */
 296               		.size	CamConfig_init, .-CamConfig_init
 297               	.Lscope3:
 298               		.stabs	"",36,0,0,.Lscope3-CamConfig_init
 299               		.stabd	78,0,0
 300               	.global	CamConfig_txFifoHead
 301               	.global	CamConfig_txFifoHead
 302               		.section .bss
 303               		.type	CamConfig_txFifoHead, @object
 304               		.size	CamConfig_txFifoHead, 1
 305               	CamConfig_txFifoHead:
 306 0000 00        		.skip 1,0
 307               	.global	CamConfig_txFifoTail
 308               	.global	CamConfig_txFifoTail
 309               		.type	CamConfig_txFifoTail, @object
 310               		.size	CamConfig_txFifoTail, 1
 311               	CamConfig_txFifoTail:
 312 0001 00        		.skip 1,0
 313               		.comm CamConfig_txFifo,16,1
 314               		.stabs	"CamConfig_txFifo:G(0,16)=ar(0,17)=r(0,17);0;0177777;;0;7;(6,1)",32,0,73,0
 315               		.stabs	"CamConfig_txFifoHead:G(0,11)",32,0,74,0
 316               		.stabs	"CamConfig_txFifoTail:G(0,11)",32,0,75,0
 317               		.text
 318               		.stabs	"",100,0,0,.Letext0
 319               	.Letext0:
 320               	/* File "CamConfig.c": code  104 = 0x0068 (  78), prologues  12, epilogues  14 */
GAS LISTING /tmp/cctTSiV3.s 			page 10


DEFINED SYMBOLS
                            *ABS*:00000000 CamConfig.c
     /tmp/cctTSiV3.s:3      *ABS*:0000003f __SREG__
     /tmp/cctTSiV3.s:4      *ABS*:0000003e __SP_H__
     /tmp/cctTSiV3.s:5      *ABS*:0000003d __SP_L__
     /tmp/cctTSiV3.s:6      *ABS*:00000000 __tmp_reg__
     /tmp/cctTSiV3.s:7      *ABS*:00000001 __zero_reg__
     /tmp/cctTSiV3.s:80     .text:00000000 CamConfig_writeTxFifo
     /tmp/cctTSiV3.s:305    .bss:00000000 CamConfig_txFifoHead
                            *COM*:00000010 CamConfig_txFifo
     /tmp/cctTSiV3.s:311    .bss:00000001 CamConfig_txFifoTail
     /tmp/cctTSiV3.s:133    .text:00000030 CamConfig_setCamReg
     /tmp/cctTSiV3.s:163    .text:0000003a CamConfig_sendFifoCmds
     /tmp/cctTSiV3.s:258    .text:000000ae CamConfig_init

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
I2CInt_writeData
Utility_delay
I2CInt_isI2cBusy
