Subversion Repositories svnkaklik

Rev

Rev 410 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log

Rev Author Line No. Line
484 kaklik 1
GAS LISTING /tmp/ccnpicUY.s 			page 1
151 kaklik 2
 
3
 
4
   1               		.file	"CamInterface.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	"CamInterface.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/interrupt.h",130,0,0,0
33
  30               		.stabs	"/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/io.h",130,0,0,0
34
  31               		.stabs	"/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/sfr_defs.h",130,0,0,0
35
  32               		.stabs	"/usr/lib/gcc/avr/4.2.1/../../../../avr/include/inttypes.h",130,0,0,0
36
  33               		.stabs	"/usr/lib/gcc/avr/4.2.1/../../../../avr/include/stdint.h",130,0,0,0
37
  34               		.stabs	"int8_t:t(5,1)=(0,10)",128,0,116,0
38
  35               		.stabs	"uint8_t:t(5,2)=(0,11)",128,0,117,0
39
  36               		.stabs	"int16_t:t(5,3)=(0,1)",128,0,118,0
40
  37               		.stabs	"uint16_t:t(5,4)=(0,4)",128,0,119,0
41
  38               		.stabs	"int32_t:t(5,5)=(0,3)",128,0,120,0
42
  39               		.stabs	"uint32_t:t(5,6)=(0,5)",128,0,121,0
43
  40               		.stabs	"int64_t:t(5,7)=(0,6)",128,0,122,0
44
  41               		.stabs	"uint64_t:t(5,8)=(0,7)",128,0,123,0
45
  42               		.stabs	"intptr_t:t(5,9)=(5,3)",128,0,135,0
46
  43               		.stabs	"uintptr_t:t(5,10)=(5,4)",128,0,140,0
47
  44               		.stabs	"int_least8_t:t(5,11)=(5,1)",128,0,152,0
48
  45               		.stabs	"uint_least8_t:t(5,12)=(5,2)",128,0,157,0
49
  46               		.stabs	"int_least16_t:t(5,13)=(5,3)",128,0,162,0
50
  47               		.stabs	"uint_least16_t:t(5,14)=(5,4)",128,0,167,0
51
  48               		.stabs	"int_least32_t:t(5,15)=(5,5)",128,0,172,0
52
  49               		.stabs	"uint_least32_t:t(5,16)=(5,6)",128,0,177,0
53
  50               		.stabs	"int_least64_t:t(5,17)=(5,7)",128,0,182,0
54
  51               		.stabs	"uint_least64_t:t(5,18)=(5,8)",128,0,187,0
55
  52               		.stabs	"int_fast8_t:t(5,19)=(5,1)",128,0,200,0
56
  53               		.stabs	"uint_fast8_t:t(5,20)=(5,2)",128,0,205,0
57
  54               		.stabs	"int_fast16_t:t(5,21)=(5,3)",128,0,210,0
58
  55               		.stabs	"uint_fast16_t:t(5,22)=(5,4)",128,0,215,0
59
  56               		.stabs	"int_fast32_t:t(5,23)=(5,5)",128,0,220,0
60
  57               		.stabs	"uint_fast32_t:t(5,24)=(5,6)",128,0,225,0
61
GAS LISTING /tmp/ccnpicUY.s 			page 2
151 kaklik 62
 
63
 
484 kaklik 64
  58               		.stabs	"int_fast64_t:t(5,25)=(5,7)",128,0,230,0
65
  59               		.stabs	"uint_fast64_t:t(5,26)=(5,8)",128,0,235,0
66
  60               		.stabs	"intmax_t:t(5,27)=(5,7)",128,0,249,0
67
  61               		.stabs	"uintmax_t:t(5,28)=(5,8)",128,0,254,0
68
  62               		.stabn	162,0,0,0
69
  63               		.stabs	"int_farptr_t:t(4,1)=(5,5)",128,0,76,0
70
  64               		.stabs	"uint_farptr_t:t(4,2)=(5,6)",128,0,80,0
71
  65               		.stabn	162,0,0,0
151 kaklik 72
  66               		.stabn	162,0,0,0
73
  67               		.stabn	162,0,0,0
74
  68               		.stabn	162,0,0,0
484 kaklik 75
  69               		.stabs	"/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h",130,0,0,0
76
  70               		.stabs	"/usr/lib/gcc/avr/4.2.1/include/stddef.h",130,0,0,0
77
  71               		.stabs	"size_t:t(7,1)=(0,4)",128,0,214,0
78
  72               		.stabn	162,0,0,0
151 kaklik 79
  73               		.stabn	162,0,0,0
484 kaklik 80
  74               		.stabs	"/usr/lib/gcc/avr/4.2.1/../../../../avr/include/stdlib.h",130,0,0,0
81
  75               		.stabs	"/usr/lib/gcc/avr/4.2.1/include/stddef.h",130,0,0,0
82
  76               		.stabs	"wchar_t:t(9,1)=(0,1)",128,0,326,0
83
  77               		.stabn	162,0,0,0
84
  78               		.stabs	"div_t:t(8,1)=(8,2)=s4quot:(0,1),0,16;rem:(0,1),16,16;;",128,0,69,0
85
  79               		.stabs	"ldiv_t:t(8,3)=(8,4)=s8quot:(0,3),0,32;rem:(0,3),32,32;;",128,0,75,0
86
  80               		.stabs	"__compar_fn_t:t(8,5)=(8,6)=*(8,7)=f(0,1)",128,0,78,0
87
  81               		.stabn	162,0,0,0
88
  82               		.stabs	"CommonDefs.h",130,0,0,0
89
  83               		.stabs	"bool_t:t(10,1)=(0,11)",128,0,56,0
90
  84               		.stabn	162,0,0,0
91
  85               		.stabs	"CamInt_resetCam:F(0,15)",36,0,225,CamInt_resetCam
92
  86               	.global	CamInt_resetCam
93
  87               		.type	CamInt_resetCam, @function
94
  88               	CamInt_resetCam:
95
  89               		.stabd	46,0,0
151 kaklik 96
   1:CamInterface.c **** /*
97
   2:CamInterface.c ****     Copyright (C) 2004    John Orlando
98
   3:CamInterface.c ****     
99
   4:CamInterface.c ****    AVRcam: a small real-time image processing engine.
100
   5:CamInterface.c **** 
101
   6:CamInterface.c ****     This program is free software; you can redistribute it and/or
102
   7:CamInterface.c ****     modify it under the terms of the GNU General Public
103
   8:CamInterface.c ****     License as published by the Free Software Foundation; either
104
   9:CamInterface.c ****     version 2 of the License, or (at your option) any later version.
105
  10:CamInterface.c **** 
106
  11:CamInterface.c ****     This program is distributed in the hope that it will be useful,
107
  12:CamInterface.c ****     but WITHOUT ANY WARRANTY; without even the implied warranty of
108
  13:CamInterface.c ****     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
109
  14:CamInterface.c ****     General Public License for more details.
110
  15:CamInterface.c **** 
111
  16:CamInterface.c ****     You should have received a copy of the GNU General Public
112
  17:CamInterface.c ****     License along with this program; if not, write to the Free Software
113
  18:CamInterface.c ****     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
114
  19:CamInterface.c **** 
115
  20:CamInterface.c ****    For more information on the AVRcam, please contact:
116
  21:CamInterface.c **** 
117
  22:CamInterface.c ****    john@jrobot.net
118
  23:CamInterface.c **** 
119
  24:CamInterface.c ****    or go to www.jrobot.net for more details regarding the system.
484 kaklik 120
  25:CamInterface.c **** */
121
GAS LISTING /tmp/ccnpicUY.s 			page 3
151 kaklik 122
 
123
 
124
  26:CamInterface.c **** /***********************************************************
125
  27:CamInterface.c **** 	Module Name: CamInterface.c
126
  28:CamInterface.c **** 	Module Date: 04/12/2004
127
  29:CamInterface.c **** 	Module Auth: John Orlando
128
  30:CamInterface.c **** 	
129
  31:CamInterface.c **** 	Description: This file is responsible for providing an
130
  32:CamInterface.c **** 	interface to the OV6620 camera hardware.  This includes
131
  33:CamInterface.c **** 	an interface to CamInterface.S for certain low-level,
132
  34:CamInterface.c **** 	optimized camera access routines.
133
  35:CamInterface.c ****     
134
  36:CamInterface.c ****     Revision History:
135
  37:CamInterface.c ****     Date        Rel Ver.    Notes
136
  38:CamInterface.c ****     4/10/2004      0.1     Module created
137
  39:CamInterface.c ****     6/30/2004      1.0     Initial release for Circuit Cellar
138
  40:CamInterface.c ****                            contest.
139
  41:CamInterface.c ****     11/15/2004     1.2     ifdef'd out the resetCam routine, since
140
  42:CamInterface.c ****                            resetting the cam now causes the OV6620's
141
  43:CamInterface.c ****                            clock to not be output (we have to start
142
  44:CamInterface.c ****                            it up after each reset with the external
143
  45:CamInterface.c ****                            tiny12 processor).
144
  46:CamInterface.c ****     1/16/2005      1.4     Ensure that the TCCR1B register is set so
145
  47:CamInterface.c ****                            nothing is clocking timer1 at startup.                             
146
  48:CamInterface.c **** ***********************************************************/
147
  49:CamInterface.c **** 
148
  50:CamInterface.c **** /*	Includes */
149
  51:CamInterface.c **** #include <avr/interrupt.h>
174 kaklik 150
  52:CamInterface.c **** #include <avr/sleep.h>
151
  53:CamInterface.c **** #include <avr/eeprom.h>
152
  54:CamInterface.c **** #include <stdlib.h>
153
  55:CamInterface.c **** #include <string.h>
154
  56:CamInterface.c **** #include "CommonDefs.h"
155
  57:CamInterface.c **** #include "CamInterface.h"
156
  58:CamInterface.c **** #include "Utility.h"
157
  59:CamInterface.c **** #include "UIMgr.h"
158
  60:CamInterface.c **** #include "Executive.h"
159
  61:CamInterface.c **** #include "UartInterface.h"
160
  62:CamInterface.c **** 
161
  63:CamInterface.c **** /*  Local Variables */
162
  64:CamInterface.c **** 
163
  65:CamInterface.c **** /* 	Local Structures and Typedefs */
164
  66:CamInterface.c **** 
165
  67:CamInterface.c **** /*  Definitions */
166
  68:CamInterface.c **** //#define OUTPUT_INITIAL_COLOR_MAP 1
167
  69:CamInterface.c **** 
168
  70:CamInterface.c **** #define FAST_ACQUIRE 1
169
  71:CamInterface.c **** #define CAM_G_BUS          	PINB
170
  72:CamInterface.c **** #define CAM_G_BUS_DIR      	DDRB
171
  73:CamInterface.c **** #define CAM_RB_BUS          PINC
172
  74:CamInterface.c **** #define CAM_RB_BUS_DIR 		DDRC
173
  75:CamInterface.c **** 
174
  76:CamInterface.c **** #define CAM_CONTROL_PORT     PORTD
175
  77:CamInterface.c **** #define CAM_CONTROL_PORT_DIR DDRD
176
  78:CamInterface.c **** #define CAM_RESET_LINE       BIT7
177
  79:CamInterface.c **** #define CAM_PIXEL_CLK_COUNT  BIT5
178
  80:CamInterface.c **** #define CAM_HREF             BIT4
179
  81:CamInterface.c **** #define CAM_PIXEL_CLK_INT    BIT3
484 kaklik 180
  82:CamInterface.c **** #define CAM_VSYNC            BIT2
181
GAS LISTING /tmp/ccnpicUY.s 			page 4
151 kaklik 182
 
183
 
174 kaklik 184
  83:CamInterface.c **** 
185
  84:CamInterface.c **** /*  Global Variables */
186
  85:CamInterface.c **** /* NOTE: This file MUST appear first in the Makefile for these variables to
187
  86:CamInterface.c **** be placed properly in RAM */
188
  87:CamInterface.c **** 
189
  88:CamInterface.c **** /* The colorMap[] table provides the membership lookup table to convert 
190
  89:CamInterface.c **** RGB or YUV pixel values into actual colors.  The membership table contains
191
  90:CamInterface.c **** 16 elements for each color channel, concatenated together.  The Red (or Y)
192
  91:CamInterface.c **** value is located in the first 16 bytes, the G (or U) value is located in
193
  92:CamInterface.c **** the second 16 bytes, and the B (or V) value is located in the last 16 bytes:
194
  93:CamInterface.c **** 
195
  94:CamInterface.c ****     ----------------------------------------------------------------------------------
196
  95:CamInterface.c ****     |red0|red1|red2|...|red15|green0|green1|green2|...|green15|blue0|blue1|...|blue15|
197
  96:CamInterface.c **** mem:|0x00 0x01 0x02     0x15   0x16   0x17   0x18       0x31   0x32  0x33       0x47 |
198
  97:CamInterface.c ****     ---------------------------------------------------------------------------------
199
  98:CamInterface.c **** Thus, the red lookup is accessed at colorMap+0, the green lookup is accessed 
200
  99:CamInterface.c **** at colorMap+16, and the blue lookup is accessed at colorMap+32.  */	
201
 100:CamInterface.c **** unsigned char colorMap[NUM_ELEMENTS_IN_COLOR_MAP] __attribute__ ((section (".noinit")));
202
 101:CamInterface.c **** 
203
 102:CamInterface.c **** /*  Extern Variables */
204
 103:CamInterface.c **** /* These two buffers hold the current and previous lines
205
 104:CamInterface.c **** of pixel data.  They are sized to the worst case scenario,
206
 105:CamInterface.c **** where the color changes between every pixel (unrealistic).
207
 106:CamInterface.c **** The format of each buffer is for all the even bytes to hold
208
 107:CamInterface.c **** the run-length, and the odd bytes to hold the color data. */
209
 108:CamInterface.c **** 
210
 109:CamInterface.c **** /* In addition, if we are in frameDump mode, we use these buffers
211
 110:CamInterface.c **** to store the acquired line data...we are actually grabbing ALL of the
212
 111:CamInterface.c **** pixels in a line (176) instead of the 88 we get normally during tracking.
213
 112:CamInterface.c **** But since we have enough to hold 88-RLE blocks, we already have the 176
214
 113:CamInterface.c **** allocated for this... */
215
 114:CamInterface.c **** unsigned char currentLineBuffer[LENGTH_OF_LINE_BUFFER];
216
 115:CamInterface.c **** unsigned char previousLineBuffer[LENGTH_OF_LINE_BUFFER];
217
 116:CamInterface.c **** 
218
 117:CamInterface.c **** /*  Extern Functions */
219
 118:CamInterface.c **** /* These functions are located in assembly files, and thus
220
 119:CamInterface.c **** must be externed here so they can be referenced in the source below. */
221
 120:CamInterface.c **** extern void CamIntAsm_waitForNewTrackingFrame(unsigned char *pBuffer, unsigned char *pMemLookup);
222
 121:CamInterface.c **** extern void CamIntAsm_waitForNewDumpFrame(unsigned char *pCurrBuffer, unsigned char *pPrevBuffer);
223
 122:CamInterface.c **** extern void CamIntAsm_acquireTrackingLine(unsigned char *pBuffer, unsigned char *pMemLookup);
224
 123:CamInterface.c **** extern void CamIntAsm_acquireDumpLine(unsigned char *pCurrBuffer, unsigned char *pPrevBuffer);
225
 124:CamInterface.c **** 
226
 125:CamInterface.c **** /***********************************************************
227
 126:CamInterface.c **** 	Function Name: CamInt_init
228
 127:CamInterface.c **** 	Function Description: This function is responsible
229
 128:CamInterface.c **** 	for initializing the camera interface.  This includes
230
 129:CamInterface.c **** 	setting up the i/o ports that are used to read the
231
 130:CamInterface.c **** 	camera busses, as well as resetting the camera.
232
 131:CamInterface.c **** 	Inputs:  none
233
 132:CamInterface.c **** 	Outputs: none
234
 133:CamInterface.c **** ***********************************************************/	
235
 134:CamInterface.c **** void CamInt_init(void)
236
 135:CamInterface.c **** {
237
 136:CamInterface.c **** #if OUTPUT_INITIAL_COLOR_MAP
238
 137:CamInterface.c **** 	unsigned char asciiBuffer[5];
239
 138:CamInterface.c ****     unsigned char i;
484 kaklik 240
 139:CamInterface.c **** #endif    
241
GAS LISTING /tmp/ccnpicUY.s 			page 5
151 kaklik 242
 
243
 
174 kaklik 244
 140:CamInterface.c ****     
245
 141:CamInterface.c **** 	/* set up the mega8 ports that will be interfacing
246
 142:CamInterface.c **** 	with the camera */	
247
 143:CamInterface.c **** 	CAM_CONTROL_PORT_DIR |= (1<<CAM_RESET_LINE); /* cam reset is output */
248
 144:CamInterface.c **** 	CAM_CONTROL_PORT_DIR |= 0x80;   /* set just the MSB as an output */
249
 145:CamInterface.c **** 	CAM_CONTROL_PORT_DIR &= 0xFB;   /* make sure bit2 is clear (input) */
250
 146:CamInterface.c **** 	CAM_CONTROL_PORT &= 0x7F;   /* set reset line low */
251
 147:CamInterface.c **** 	CAM_G_BUS_DIR &= 0xF0;  /* 4-bit G bus all inputs */
252
 148:CamInterface.c ****     CAM_G_BUS_DIR |= 0xF0;  /* disable the pull-up on PB4 and PB5 */
253
 149:CamInterface.c **** 	CAM_RB_BUS_DIR &= 0xF0;  /* 4-bit RB bus all inputs */
254
 150:CamInterface.c **** 	
255
 151:CamInterface.c ****     /* ensure that timer1 is disabled to start...eventually, when PCLK needs
256
 152:CamInterface.c ****     to feed timer1 through the external counter, it will be enabled on an
257
 153:CamInterface.c ****     "as needed" basis...*/
258
 154:CamInterface.c **** 	TCCR1B &= ~( (1<<CS12)|(1<<CS11)|(1<<CS10) );
259
 155:CamInterface.c **** 	
260
 156:CamInterface.c **** 	/* we'll turn on the interrupt after we assign the initial TCNT value */
261
 157:CamInterface.c **** 	
262
 158:CamInterface.c **** 	/* set up External Interrupt1 to interrupt us on rising edges (HREF)...
263
 159:CamInterface.c **** 	this is needed to indicate when the first pixel of each line is about to start, so
264
 160:CamInterface.c **** 	we can synch up with it...this interrupt will be disabled once HREF goes high */
265
 161:CamInterface.c **** 	
266
 162:CamInterface.c **** 	MCUCR |= (1<<ISC11) | (1<<ISC10);  /* rising edge interrupt */
267
 163:CamInterface.c **** 	/* the interrupt will be enabled when we are ready to detect the rising edge of
268
 164:CamInterface.c **** 	HREF...its now primed and ready to go */
269
 165:CamInterface.c **** 	
270
 166:CamInterface.c **** 	/* set up External Interrupt0 to interrupt us on rising edges (VSYNC) */
271
 167:CamInterface.c **** 	MCUCR |= (1<<ISC01) | (1<<ISC00);	/* rising edge interrupt */ 
272
 168:CamInterface.c **** 	GICR  |= (1<<INT0);    /* interrupt request enabled */
273
 169:CamInterface.c **** 	
274
 170:CamInterface.c **** 	/* set up TimerO to count and be clocked from an external pulse source
275
 171:CamInterface.c **** 	(HREF) on falling edges...eventually, we need to enable the interrupt
276
 172:CamInterface.c **** 	for this!  FIX THIS */
277
 173:CamInterface.c **** 	TCCR0 = (1<<CS02)|(1<<CS01)|(0<<CS00);
278
 174:CamInterface.c **** 	
279
 175:CamInterface.c **** 	/* setting up the PCLK counter with Timer1 will be done right after
280
 176:CamInterface.c **** 	we start receiving pixels in each line...we sacrifice the first pixel
281
 177:CamInterface.c **** 	in each line, but we'll account for it...*/
282
 178:CamInterface.c **** 	
283
 179:CamInterface.c **** 	/* set up the mega8 so that its sleep mode puts it in an IDLE sleep
284
 180:CamInterface.c **** 	mode, where it can wake up as fast as possible */
285
 181:CamInterface.c **** 	set_sleep_mode(SLEEP_MODE_IDLE);
286
 182:CamInterface.c **** 	/* umm....we need to actually enable the sleep mode...*/
287
 183:CamInterface.c **** 	MCUCR |= 0x80;
288
 184:CamInterface.c **** 	
289
 185:CamInterface.c **** 	/* initialize the memLookup table */
290
 186:CamInterface.c **** 	memset(colorMap,0x00,NUM_ELEMENTS_IN_COLOR_MAP);   
291
 187:CamInterface.c **** 	
292
 188:CamInterface.c **** 	/* read the color map out of EEPROM */
293
 189:CamInterface.c **** 	eeprom_read_block(colorMap, (unsigned char*)0x01,NUM_ELEMENTS_IN_COLOR_MAP);
294
 190:CamInterface.c **** 
295
 191:CamInterface.c **** #if OUTPUT_INITIAL_COLOR_MAP    
296
 192:CamInterface.c ****     UIMgr_txBuffer("\r\n",2);
297
 193:CamInterface.c ****     for (i=0; i<NUM_ELEMENTS_IN_COLOR_MAP; i++)
298
 194:CamInterface.c **** 	{
299
 195:CamInterface.c **** 		memset(asciiBuffer,0x00,5);
484 kaklik 300
 196:CamInterface.c **** 		itoa(colorMap[i],asciiBuffer,10);
301
GAS LISTING /tmp/ccnpicUY.s 			page 6
151 kaklik 302
 
303
 
174 kaklik 304
 197:CamInterface.c **** 		UIMgr_txBuffer(asciiBuffer,3);
305
 198:CamInterface.c **** 		UIMgr_txBuffer(" ",1);
306
 199:CamInterface.c **** 		if (i==15 || i == 31)
307
 200:CamInterface.c **** 		{
308
 201:CamInterface.c **** 			/* break up the output */
309
 202:CamInterface.c **** 			UIMgr_txBuffer("\r\n",2);
310
 203:CamInterface.c **** 		}
311
 204:CamInterface.c **** 	}
312
 205:CamInterface.c **** #endif    
313
 206:CamInterface.c **** 
314
 207:CamInterface.c **** #ifndef NO_CRYSTAL
315
 208:CamInterface.c **** 	CamInt_resetCam();	
316
 209:CamInterface.c **** #endif    
317
 210:CamInterface.c **** }
318
 211:CamInterface.c **** 
319
 212:CamInterface.c **** /***********************************************************
320
 213:CamInterface.c **** 	Function Name: CamInt_resetCam
321
 214:CamInterface.c **** 	Function Description: This function is responsible
322
 215:CamInterface.c **** 	for resetting the camera.  This is accomplished by
323
 216:CamInterface.c **** 	toggling the reset line on the OV6620 for ~100 mS.
324
 217:CamInterface.c **** 	Inputs:  none
325
 218:CamInterface.c **** 	Outputs: none
326
 219:CamInterface.c ****     IMPORTANT NOTE: This function has effectively been removed
327
 220:CamInterface.c ****     since resetting the camera now causes the camera to not
328
 221:CamInterface.c ****     output the clock signal.  Thus, if we reset the cam, the
329
 222:CamInterface.c ****     AVR has no clock, and thus doesn't run...
330
 223:CamInterface.c **** ***********************************************************/	
331
 224:CamInterface.c **** void CamInt_resetCam(void)
332
 225:CamInterface.c **** {
484 kaklik 333
  90               		.stabn	68,0,225,.LM0-.LFBB1
334
  91               	.LM0:
335
  92               	.LFBB1:
151 kaklik 336
  93               	/* prologue: frame size=0 */
337
  94               	/* prologue end (size=0) */
338
  95               	/* epilogue: frame size=0 */
339
  96 0000 0895      		ret
340
  97               	/* epilogue end (size=1) */
341
  98               	/* function CamInt_resetCam size 1 (0) */
342
  99               		.size	CamInt_resetCam, .-CamInt_resetCam
484 kaklik 343
 100               	.Lscope1:
344
 101               		.stabs	"",36,0,0,.Lscope1-.LFBB1
151 kaklik 345
 102               		.stabd	78,0,0
174 kaklik 346
 103               		.stabs	"CamInt_init:F(0,15)",36,0,135,CamInt_init
151 kaklik 347
 104               	.global	CamInt_init
348
 105               		.type	CamInt_init, @function
349
 106               	CamInt_init:
350
 107               		.stabd	46,0,0
484 kaklik 351
 108               		.stabn	68,0,135,.LM1-.LFBB2
151 kaklik 352
 109               	.LM1:
484 kaklik 353
 110               	.LFBB2:
354
 111               	/* prologue: frame size=0 */
355
 112               	/* prologue end (size=0) */
356
 113               		.stabn	68,0,143,.LM2-.LFBB2
357
 114               	.LM2:
358
 115 0002 8F9A      		sbi 49-0x20,7
359
 116               		.stabn	68,0,144,.LM3-.LFBB2
360
 117               	.LM3:
361
GAS LISTING /tmp/ccnpicUY.s 			page 7
151 kaklik 362
 
363
 
484 kaklik 364
 118 0004 8F9A      		sbi 49-0x20,7
365
 119               		.stabn	68,0,145,.LM4-.LFBB2
366
 120               	.LM4:
367
 121 0006 8A98      		cbi 49-0x20,2
368
 122               		.stabn	68,0,146,.LM5-.LFBB2
369
 123               	.LM5:
370
 124 0008 9798      		cbi 50-0x20,7
371
 125               		.stabn	68,0,147,.LM6-.LFBB2
372
 126               	.LM6:
373
 127 000a 87B3      		in r24,55-0x20
374
 128 000c 807F      		andi r24,lo8(-16)
375
 129 000e 87BB      		out 55-0x20,r24
376
 130               		.stabn	68,0,148,.LM7-.LFBB2
377
 131               	.LM7:
378
 132 0010 87B3      		in r24,55-0x20
379
 133 0012 806F      		ori r24,lo8(-16)
380
 134 0014 87BB      		out 55-0x20,r24
381
 135               		.stabn	68,0,149,.LM8-.LFBB2
382
 136               	.LM8:
383
 137 0016 84B3      		in r24,52-0x20
384
 138 0018 807F      		andi r24,lo8(-16)
385
 139 001a 84BB      		out 52-0x20,r24
386
 140               		.stabn	68,0,154,.LM9-.LFBB2
387
 141               	.LM9:
388
 142 001c 8EB5      		in r24,78-0x20
389
 143 001e 887F      		andi r24,lo8(-8)
390
 144 0020 8EBD      		out 78-0x20,r24
391
 145               		.stabn	68,0,162,.LM10-.LFBB2
392
 146               	.LM10:
393
 147 0022 85B7      		in r24,85-0x20
394
 148 0024 8C60      		ori r24,lo8(12)
395
 149 0026 85BF      		out 85-0x20,r24
396
 150               		.stabn	68,0,167,.LM11-.LFBB2
397
 151               	.LM11:
398
 152 0028 85B7      		in r24,85-0x20
399
 153 002a 8360      		ori r24,lo8(3)
400
 154 002c 85BF      		out 85-0x20,r24
401
 155               		.stabn	68,0,168,.LM12-.LFBB2
402
 156               	.LM12:
403
 157 002e 8BB7      		in r24,91-0x20
404
 158 0030 8064      		ori r24,lo8(64)
405
 159 0032 8BBF      		out 91-0x20,r24
406
 160               		.stabn	68,0,173,.LM13-.LFBB2
407
 161               	.LM13:
408
 162 0034 86E0      		ldi r24,lo8(6)
409
 163 0036 83BF      		out 83-0x20,r24
410
 164               		.stabn	68,0,181,.LM14-.LFBB2
411
 165               	.LM14:
412
 166 0038 85B7      		in r24,85-0x20
413
 167 003a 8F78      		andi r24,lo8(-113)
414
 168 003c 85BF      		out 85-0x20,r24
415
 169               		.stabn	68,0,183,.LM15-.LFBB2
416
 170               	.LM15:
417
 171 003e 85B7      		in r24,85-0x20
418
 172 0040 8068      		ori r24,lo8(-128)
419
 173 0042 85BF      		out 85-0x20,r24
420
 174               		.stabn	68,0,186,.LM16-.LFBB2
421
GAS LISTING /tmp/ccnpicUY.s 			page 8
151 kaklik 422
 
423
 
484 kaklik 424
 175               	.LM16:
425
 176 0044 E0E0      		ldi r30,lo8(colorMap)
426
 177 0046 F0E0      		ldi r31,hi8(colorMap)
427
 178 0048 80E3      		ldi r24,lo8(48)
428
 179 004a DF01      		movw r26,r30
429
 180 004c 982F      		mov r25,r24
430
 181 004e 1D92      		st X+,__zero_reg__
431
 182 0050 9A95      	        dec r25
432
 183 0052 01F4      		brne .-6
433
 184               	.LBB6:
434
 185               	.LBB7:
435
 186               	.LBB8:
436
 187               		.stabs	"/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h",132,0,0,.Ltext1
437
 188               	.Ltext1:
438
   1:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /* Copyright (c) 2002, 2003, 2004 Marek Michalkiewicz
439
   2:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****    Copyright (c) 2005, 2006 Bjoern Haase
440
   3:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****    All rights reserved.
441
   4:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
442
   5:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****    Redistribution and use in source and binary forms, with or without
443
   6:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****    modification, are permitted provided that the following conditions are met:
444
   7:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
445
   8:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****    * Redistributions of source code must retain the above copyright
446
   9:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      notice, this list of conditions and the following disclaimer.
447
  10:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
448
  11:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****    * Redistributions in binary form must reproduce the above copyright
449
  12:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      notice, this list of conditions and the following disclaimer in
450
  13:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      the documentation and/or other materials provided with the
451
  14:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      distribution.
452
  15:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
453
  16:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****    * Neither the name of the copyright holders nor the names of
454
  17:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      contributors may be used to endorse or promote products derived
455
  18:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      from this software without specific prior written permission.
456
  19:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
457
  20:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
458
  21:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
459
  22:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
460
  23:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
461
  24:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
462
  25:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
463
  26:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
464
  27:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
465
  28:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
466
  29:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
467
  30:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   POSSIBILITY OF SUCH DAMAGE. */
468
  31:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
469
  32:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /* $Id: eeprom.h,v 1.17.2.3 2006/05/23 17:18:23 aesok Exp $ */
470
  33:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
471
  34:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /*
472
  35:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****    eeprom.h
473
  36:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
474
  37:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****    Contributors:
475
  38:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      Created by Marek Michalkiewicz <marekm@linux.org.pl>
476
  39:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      eeprom_write_word and eeprom_write_block added by Artur Lipowski 
477
  40:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      <LAL@pro.onet.pl>
478
  41:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      Complete rewrite using the original interface by Bjoern Haase 
479
  42:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      <bjoern.haase@de.bosch.com>. 
480
  43:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****  */
481
GAS LISTING /tmp/ccnpicUY.s 			page 9
151 kaklik 482
 
483
 
484 kaklik 484
  44:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
485
  45:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #ifndef _EEPROM_H_
486
  46:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #define _EEPROM_H_ 1
487
  47:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
488
  48:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #define __need_size_t
489
  49:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #include <stddef.h>
490
  50:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #include <inttypes.h>
491
  51:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
492
  52:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
493
  53:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #ifdef __AVR_MEGA__
494
  54:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #define XCALL "call"
495
  55:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #else
496
  56:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #define XCALL "rcall"
497
  57:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #endif
498
  58:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
499
  59:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #include <avr/io.h>
500
  60:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #ifndef __EEPROM_REG_LOCATIONS__
501
  61:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /** \def __EEPROM_REG_LOCATIONS__
502
  62:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     \ingroup avr_eeprom
503
  63:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      In order to be able to work without a requiring a multilib 
504
  64:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      approach for dealing with controllers having the EEPROM registers
505
  65:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      at different positions in memory space, the eeprom functions evaluate
506
  66:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      __EEPROM_REG_LOCATIONS__: It is assumed to be defined by
507
  67:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      the device io header and contains 6 uppercase hex digits encoding the 
508
  68:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      addresses of EECR,EEDR and EEAR. 
509
  69:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      First two letters:  EECR address.
510
  70:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      Second two letters: EEDR address.
511
  71:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      Last two letters:   EEAR address.
512
  72:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      The default 1C1D1E corresponds to the
513
  73:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      register location that is valid for most controllers. The value
514
  74:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      of this define symbol is used for appending it to the base name of the
515
  75:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      assembler functions.  */
516
  76:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #define __EEPROM_REG_LOCATIONS__ 1C1D1E
517
  77:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #endif
518
  78:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #define _STR2(EXP) _STR1(EXP)
519
  79:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #define _STR1(EXP) #EXP
520
  80:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #define _REG_LOCATION_SUFFIX _STR2(__EEPROM_REG_LOCATIONS__)
521
  81:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
522
  82:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #ifndef CR_TAB
523
  83:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #define CR_TAB "\n\t"
524
  84:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #endif
525
  85:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
526
  86:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
527
  87:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /** \defgroup avr_eeprom <avr/eeprom.h>: EEPROM handling
528
  88:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     \code #include <avr/eeprom.h> \endcode
529
  89:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
530
  90:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     This header file declares the interface to some simple library
531
  91:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     routines suitable for handling the data EEPROM contained in the
532
  92:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     AVR microcontrollers.  The implementation uses a simple polled
533
  93:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     mode interface.  Applications that require interrupt-controlled
534
  94:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     EEPROM access to ensure that no time will be wasted in spinloops
535
  95:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     will have to deploy their own implementation.
536
  96:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
537
  97:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     \note All of the read/write functions first make sure the EEPROM
538
  98:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      is ready to be accessed.  Since this may cause long delays if a
539
  99:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      write operation is still pending, time-critical applications
540
 100:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      should first poll the EEPROM e. g. using eeprom_is_ready() before
541
GAS LISTING /tmp/ccnpicUY.s 			page 10
151 kaklik 542
 
543
 
484 kaklik 544
 101:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      attempting any actual I/O.
545
 102:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
546
 103:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     \note This header file declares inline functions that call the
547
 104:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      assembler subroutines directly. This prevents that the compiler
548
 105:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      generates push/pops for the call-clobbered registers. This way
549
 106:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      also a specific calling convention could be used for the eeprom
550
 107:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      routines e.g. by passing values in __tmp_reg__, eeprom addresses in
551
 108:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      X and memory addresses in Z registers. Method is optimized for code 
552
 109:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      size.
553
 110:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
554
 111:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     \note Presently supported are two locations of the EEPROM register
555
 112:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      set: 0x1F,0x20,0x21 and 0x1C,0x1D,0x1E 
556
 113:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      (see ::__EEPROM_REG_LOCATIONS__).
557
 114:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
558
 115:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     \note As these functions modify IO registers, they are known to be
559
 116:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      non-reentrant.  If any of these functions are used from both,
560
 117:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      standard and interrupt context, the applications must ensure
561
 118:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      proper protection (e.g. by disabling interrupts before accessing
562
 119:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      them).
563
 120:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
564
 121:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** */
565
 122:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
566
 123:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
567
 124:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /* forward declarations of the inline functions so that doxygen does
568
 125:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****    not get confused by the attribute expression.  */
569
 126:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
570
 127:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** static inline uint8_t __attribute__ ((always_inline))
571
 128:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** eeprom_read_byte (const uint8_t *addr);
572
 129:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
573
 130:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** static inline uint16_t __attribute__ ((always_inline)) 
574
 131:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** eeprom_read_word (const uint16_t *addr);
575
 132:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
576
 133:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** static inline void __attribute__ ((always_inline))
577
 134:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** eeprom_read_block (void *pointer_ram,
578
 135:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                    const void *pointer_eeprom,
579
 136:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                    size_t size);
580
 137:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
581
 138:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** static inline void __attribute__ ((always_inline))
582
 139:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** eeprom_write_byte (uint8_t *addr,uint8_t value);
583
 140:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
584
 141:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** static inline void __attribute__ ((always_inline))
585
 142:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** eeprom_write_word (uint16_t *addr,uint16_t value);
586
 143:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
587
 144:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** static inline void __attribute__ ((always_inline))
588
 145:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** eeprom_write_block (const void *pointer_ram,
589
 146:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                     void *pointer_eeprom,
590
 147:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                     size_t size);
591
 148:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
592
 149:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /** \name avr-libc declarations */
593
 150:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
594
 151:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /*@{*/
595
 152:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
596
 153:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /** \def EEMEM
597
 154:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     \ingroup avr_eeprom
598
 155:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     Attribute expression causing a variable to be allocated within the .eeprom
599
 156:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****      section.  */
600
 157:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #define EEMEM __attribute__((section(".eeprom")))
601
GAS LISTING /tmp/ccnpicUY.s 			page 11
151 kaklik 602
 
603
 
484 kaklik 604
 158:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
605
 159:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /** \def eeprom_is_ready
606
 160:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     \ingroup avr_eeprom
607
 161:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     \returns 1 if EEPROM is ready for a new read/write operation, 0 if not. */
608
 162:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
609
 163:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #if defined(__DOXYGEN__)
610
 164:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** # define eeprom_is_ready()
611
 165:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #elif defined(EEWE)
612
 166:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** # define eeprom_is_ready() bit_is_clear(EECR, EEWE)
613
 167:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #elif defined(EEPE)
614
 168:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** # define eeprom_is_ready() bit_is_clear(EECR, EEPE)
615
 169:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #elif defined(DEECR) && defined(EEL)
616
 170:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** # define eeprom_is_ready() bit_is_clear(DEECR, EEL)
617
 171:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #else
618
 172:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** # error "No write enable bit known for this device's EEPROM."
619
 173:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #endif
620
 174:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
621
 175:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /** \def eeprom_busy_wait
622
 176:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     \ingroup avr_eeprom
623
 177:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
624
 178:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     Loops until the eeprom is no longer busy.
625
 179:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
626
 180:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     \returns Nothing. */
627
 181:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
628
 182:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** #define eeprom_busy_wait() do {} while (!eeprom_is_ready())
629
 183:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
630
 184:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
631
 185:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /** \ingroup avr_eeprom
632
 186:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     Read one byte from EEPROM address \c addr. */
633
 187:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
634
 188:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** uint8_t 
635
 189:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** eeprom_read_byte (const uint8_t *addr) 
636
 190:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** {
637
 191:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   uint8_t result;
638
 192:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   __asm__ __volatile__
639
 193:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****       ( XCALL " __eeprom_read_byte_" _REG_LOCATION_SUFFIX CR_TAB
640
 194:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****         "mov %1,__tmp_reg__"
641
 195:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****        : "+x" (addr),
642
 196:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****          "=r" (result)
643
 197:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****        : );
644
 198:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   return result;
645
 199:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** }
646
 200:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
647
 201:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /** \ingroup avr_eeprom
648
 202:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     Read one 16-bit word (little endian) from EEPROM address \c addr. */
649
 203:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** uint16_t
650
 204:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** eeprom_read_word (const uint16_t *addr)
651
 205:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** {
652
 206:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   uint16_t result;
653
 207:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
654
 208:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   __asm__ __volatile__ (
655
 209:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****         XCALL " __eeprom_read_word_" _REG_LOCATION_SUFFIX CR_TAB
656
 210:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****        : "+x" (addr),
657
 211:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****          "=z" (result)
658
 212:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****        : );
659
 213:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   return result;
660
 214:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** }
661
GAS LISTING /tmp/ccnpicUY.s 			page 12
151 kaklik 662
 
663
 
484 kaklik 664
 215:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
665
 216:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** /** \ingroup avr_eeprom
666
 217:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     Read a block of \c n bytes from EEPROM address \c pointer_eeprom to
667
 218:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     \c pointer_ram.  For constant n <= 256 bytes a library function is used.
668
 219:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     For block sizes unknown at compile time or block sizes > 256 an inline
669
 220:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     loop is expanded. */
670
 221:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
671
 222:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** void 
672
 223:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** eeprom_read_block (void *pointer_ram,
673
 224:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                    const void *pointer_eeprom,
674
 225:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                    size_t n)
675
 226:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** {
676
 227:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   if (!__builtin_constant_p (n)
677
 228:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****       || n > 256)
678
 229:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     {
679
 230:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****       /* make sure size is a 16 bit variable.  */
680
 231:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****       uint16_t size = n; 
681
 232:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
682
 233:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****       __asm__ __volatile__ ( 
683
 234:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****             ".%=_start:" CR_TAB
684
 235:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****             "sbiw %2,1" CR_TAB
685
 236:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****             "brlt .%=_finished" CR_TAB
686
 237:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****              XCALL " __eeprom_read_byte_" _REG_LOCATION_SUFFIX CR_TAB
687
 238:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****             "st z+,__tmp_reg__" CR_TAB
688
 239:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****             "rjmp .%=_start" CR_TAB
689
 240:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****             ".%=_finished:" 
690
 241:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****           : "=x" (pointer_eeprom),
691
 242:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****             "=z" (pointer_ram),
692
 243:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****             "+w" (size)
693
 244:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****            : "x" (pointer_eeprom), 
694
 245:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****              "z" (pointer_ram)
695
 246:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****            : "memory");
696
 247:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     }
697
 248:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****   else
698
 249:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****     {
699
 250:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****       if (n != 0)
700
 251:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****         {
701
 252:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****           if (n == 256)
702
 253:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****             {
703
 254:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****               __asm__ __volatile__ (
704
 255:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                   XCALL " __eeprom_read_block_" _REG_LOCATION_SUFFIX 
705
 256:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                 : "+x" (pointer_eeprom),
706
 257:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                   "=z" (pointer_ram)
707
 258:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                 : "z"  (pointer_ram)
708
 259:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****                 : "memory");
709
 260:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****             }
710
 261:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****           else
711
 262:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****             {
712
 263:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****               /* Needed in order to truncate to 8 bit.  */
713
 264:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****               uint8_t len;
714
 265:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****               len = (uint8_t) n; 
715
 266:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h **** 
716
 267:/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/eeprom.h ****               __asm__ __volatile__ (
717
 189               		.stabn	68,0,267,.LM17-.LFBB2
718
 190               	.LM17:
719
 191 0054 A1E0      		ldi r26,lo8(1)
720
 192 0056 B0E0      		ldi r27,hi8(1)
721
GAS LISTING /tmp/ccnpicUY.s 			page 13
151 kaklik 722
 
723
 
484 kaklik 724
 193               	/* #APP */
725
 194 0058 182E      		mov __zero_reg__,r24
726
 195 005a 00D0      		rcall __eeprom_read_block_1C1D1E
727
 196               	/* #NOAPP */
728
 197               	.LBE8:
729
 198               	.LBE7:
730
 199               	.LBE6:
731
 200               	/* epilogue: frame size=0 */
732
 201 005c 0895      		ret
733
 202               	/* epilogue end (size=1) */
734
 203               	/* function CamInt_init size 48 (47) */
735
 204               		.size	CamInt_init, .-CamInt_init
736
 205               		.stabs	"pointer_eeprom:r(0,16)=*(0,17)=k(0,15)",64,0,189,26
737
 206               		.stabs	"pointer_ram:r(0,18)=*(0,15)",64,0,189,30
738
 207               		.stabn	192,0,0,.LBB6-.LFBB2
739
 208               		.stabn	224,0,0,.LBE6-.LFBB2
740
 209               	.Lscope2:
741
 210               		.stabs	"",36,0,0,.Lscope2-.LFBB2
742
 211               		.stabd	78,0,0
743
 212               		.comm currentLineBuffer,176,1
744
 213               		.comm previousLineBuffer,176,1
745
 214               	.global	colorMap
746
 215               		.section	.noinit,"aw",@nobits
747
 216               		.type	colorMap, @object
748
 217               		.size	colorMap, 48
749
 218               	colorMap:
750
 219 0000 0000 0000 		.skip 48,0
751
 219      0000 0000 
752
 219      0000 0000 
753
 219      0000 0000 
754
 219      0000 0000 
755
 220               		.stabs	"currentLineBuffer:G(0,19)=ar(0,20)=r(0,20);0;0177777;;0;175;(0,11)",32,0,114,0
756
 221               		.stabs	"previousLineBuffer:G(0,19)",32,0,115,0
757
 222               		.stabs	"colorMap:G(0,21)=ar(0,20);0;47;(0,11)",32,0,100,0
758
 223               		.text
759
 224               		.stabs	"",100,0,0,.Letext0
760
 225               	.Letext0:
761
 226               	/* File "CamInterface.c": code   49 = 0x0031 (  47), prologues   0, epilogues   2 */
762
GAS LISTING /tmp/ccnpicUY.s 			page 14
151 kaklik 763
 
764
 
765
DEFINED SYMBOLS
766
                            *ABS*:00000000 CamInterface.c
484 kaklik 767
     /tmp/ccnpicUY.s:2      *ABS*:0000003f __SREG__
768
     /tmp/ccnpicUY.s:3      *ABS*:0000003e __SP_H__
769
     /tmp/ccnpicUY.s:4      *ABS*:0000003d __SP_L__
770
     /tmp/ccnpicUY.s:5      *ABS*:00000000 __tmp_reg__
771
     /tmp/ccnpicUY.s:6      *ABS*:00000001 __zero_reg__
772
     /tmp/ccnpicUY.s:88     .text:00000000 CamInt_resetCam
773
     /tmp/ccnpicUY.s:106    .text:00000002 CamInt_init
774
     /tmp/ccnpicUY.s:218    .noinit:00000000 colorMap
151 kaklik 775
                            *COM*:000000b0 currentLineBuffer
776
                            *COM*:000000b0 previousLineBuffer
777
 
778
UNDEFINED SYMBOLS
779
__do_copy_data
780
__do_clear_bss
781
__eeprom_read_block_1C1D1E