1,11 → 1,11 |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 1 |
|
|
1 # 1 "CamInterfaceAsm.S" |
2 # 1 "<built-in>" |
GAS LISTING /tmp/cckBHomO.s page 1 |
|
|
1 # 1 "CamInterfaceAsm.S" |
2 # 1 "<built-in>" |
1 ; |
0 |
0 |
0 |
0 |
2 ; Copyright (C) 2004 John Orlando |
3 ; |
4 ; AVRcam: a small real-time image processing engine. |
58,480 → 58,1169 |
51 ; and is turned off when it isn't needed. |
52 |
53 #include <avr/io.h> |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 2 |
|
|
1 /* Copyright (c) 2002,2003 Marek Michalkiewicz, Joerg Wunsch |
2 All rights reserved. |
3 |
4 Redistribution and use in source and binary forms, with or without |
5 modification, are permitted provided that the following conditions are met: |
6 |
7 * Redistributions of source code must retain the above copyright |
8 notice, this list of conditions and the following disclaimer. |
9 * Redistributions in binary form must reproduce the above copyright |
10 notice, this list of conditions and the following disclaimer in |
11 the documentation and/or other materials provided with the |
12 distribution. |
13 |
14 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
15 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
16 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
17 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
18 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
19 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
20 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
21 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
22 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
23 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
24 POSSIBILITY OF SUCH DAMAGE. */ |
25 |
26 /* $Id: io.h,v 1.10 2003/02/28 23:03:40 marekm Exp $ */ |
27 |
28 /** \defgroup avr_io AVR device-specific IO definitions |
29 \code #include <avr/io.h> \endcode |
30 |
31 This header file includes the apropriate IO definitions for the |
32 device that has been specified by the <tt>-mmcu=</tt> compiler |
33 command-line switch. This is done by diverting to the appropriate |
34 file <tt><avr/io</tt><em>XXXX</em><tt>.h></tt> which should |
35 never be included directly. Some register names common to all |
36 AVR devices are defined directly within <tt><avr/io.h></tt>, |
37 but most of the details come from the respective include file. |
38 |
39 Note that this file always includes |
40 \code #include <avr/sfr_defs.h> \endcode |
41 See \ref avr_sfr for the details. |
42 |
43 Included are definitions of the IO register set and their |
44 respective bit values as specified in the Atmel documentation. |
45 Note that Atmel is not very consistent in its naming conventions, |
46 so even identical functions sometimes get different names on |
47 different devices. |
48 |
49 Also included are the specific names useable for interrupt |
50 function definitions as documented |
51 \ref avr_signames "here". |
52 |
53 Finally, the following macros are defined: |
54 |
55 - \b RAMEND |
56 <br> |
57 A constant describing the last on-chip RAM location. |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 3 |
|
|
58 <br> |
59 - \b XRAMEND |
60 <br> |
61 A constant describing the last possible location in RAM. |
62 This is equal to RAMEND for devices that do not allow for |
63 external RAM. |
64 <br> |
65 - \b E2END |
66 <br> |
67 A constant describing the address of the last EEPROM cell. |
68 <br> |
69 - \b FLASHEND |
70 <br> |
71 A constant describing the last byte address in flash ROM. |
72 <br> |
73 - \b SPM_PAGESIZE |
74 <br> |
75 For devices with bootloader support, the flash pagesize |
76 (in bytes) to be used for the \c SPM instruction. */ |
77 |
78 #ifndef _AVR_IO_H_ |
79 #define _AVR_IO_H_ |
80 |
81 #include <avr/sfr_defs.h> |
1 /* Copyright (c) 2002, Marek Michalkiewicz <marekm@amelek.gda.pl> |
2 All rights reserved. |
3 |
4 Redistribution and use in source and binary forms, with or without |
5 modification, are permitted provided that the following conditions are met: |
6 |
7 * Redistributions of source code must retain the above copyright |
8 notice, this list of conditions and the following disclaimer. |
9 * Redistributions in binary form must reproduce the above copyright |
10 notice, this list of conditions and the following disclaimer in |
11 the documentation and/or other materials provided with the |
12 distribution. |
13 |
14 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
15 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
16 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
17 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
18 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
19 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
20 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
21 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
22 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
23 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
24 POSSIBILITY OF SUCH DAMAGE. */ |
25 |
26 /* avr/sfr_defs.h - macros for accessing AVR special function registers */ |
27 |
28 /* $Id: sfr_defs.h,v 1.10 2003/08/11 21:42:13 troth Exp $ */ |
29 |
30 #ifndef _AVR_SFR_DEFS_H_ |
31 #define _AVR_SFR_DEFS_H_ 1 |
32 |
33 /** \defgroup avr_sfr_notes Additional notes from <avr/sfr_defs.h> |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 4 |
|
|
34 \ingroup avr_sfr |
35 |
36 The \c <avr/sfr_defs.h> file is included by all of the \c <avr/ioXXXX.h> |
37 files, which use macros defined here to make the special function register |
38 definitions look like C variables or simple constants, depending on the |
39 <tt>_SFR_ASM_COMPAT</tt> define. Some examples from \c <avr/iom128.h> to |
40 show how to define such macros: |
41 |
42 \code |
43 #define PORTA _SFR_IO8(0x1b) |
44 #define TCNT1 _SFR_IO16(0x2c) |
45 #define PORTF _SFR_MEM8(0x61) |
46 #define TCNT3 _SFR_MEM16(0x88) |
47 \endcode |
48 |
49 If \c _SFR_ASM_COMPAT is not defined, C programs can use names like |
50 <tt>PORTA</tt> directly in C expressions (also on the left side of |
51 assignment operators) and GCC will do the right thing (use short I/O |
52 instructions if possible). The \c __SFR_OFFSET definition is not used in |
53 any way in this case. |
54 |
55 Define \c _SFR_ASM_COMPAT as 1 to make these names work as simple constants |
56 (addresses of the I/O registers). This is necessary when included in |
57 preprocessed assembler (*.S) source files, so it is done automatically if |
58 \c __ASSEMBLER__ is defined. By default, all addresses are defined as if |
59 they were memory addresses (used in \c lds/sts instructions). To use these |
60 addresses in \c in/out instructions, you must subtract 0x20 from them. |
61 |
62 For more backwards compatibility, insert the following at the start of your |
63 old assembler source file: |
64 |
65 \code |
66 #define __SFR_OFFSET 0 |
67 \endcode |
68 |
69 This automatically subtracts 0x20 from I/O space addresses, but it's a |
70 hack, so it is recommended to change your source: wrap such addresses in |
71 macros defined here, as shown below. After this is done, the |
72 <tt>__SFR_OFFSET</tt> definition is no longer necessary and can be removed. |
73 |
74 Real example - this code could be used in a boot loader that is portable |
75 between devices with \c SPMCR at different addresses. |
76 |
77 \verbatim |
78 <avr/iom163.h>: #define SPMCR _SFR_IO8(0x37) |
79 <avr/iom128.h>: #define SPMCR _SFR_MEM8(0x68) |
80 \endverbatim |
81 |
82 \code |
82 |
83 /* |
84 * Registers common to all AVR devices. |
85 */ |
86 |
87 #if __AVR_ARCH__ != 1 |
88 /* |
89 * AVR architecture 1 has no RAM, thus no stack pointer. |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 5 |
|
|
90 * |
91 * All other archs do have a stack pointer. Some devices have only |
92 * less than 256 bytes of possible RAM locations (128 Bytes of SRAM |
93 * and no option for external RAM), thus SPH is officially "reserved" |
94 * for them. We catch this case below after including the |
95 * device-specific ioXXXX.h file, by examining XRAMEND, and |
96 * #undef-ining SP and SPH in that case. |
97 */ |
98 /* Stack Pointer */ |
99 #define SP _SFR_IO16(0x3D) |
100 #define SPL _SFR_IO8(0x3D) |
101 #define SPH _SFR_IO8(0x3E) |
102 #endif /* #if __AVR_ARCH__ != 1 */ |
103 |
104 /* Status REGister */ |
105 #define SREG _SFR_IO8(0x3F) |
106 |
107 /* Status Register - SREG */ |
108 #define SREG_I 7 |
109 #define SREG_T 6 |
110 #define SREG_H 5 |
111 #define SREG_S 4 |
112 #define SREG_V 3 |
113 #define SREG_N 2 |
114 #define SREG_Z 1 |
115 #define SREG_C 0 |
116 |
117 /* Pointer definition */ |
118 #if __AVR_ARCH__ != 1 |
119 /* avr1 has only the Z pointer */ |
120 #define XL r26 |
121 #define XH r27 |
122 #define YL r28 |
123 #define YH r29 |
124 #endif /* #if __AVR_ARCH__ != 1 */ |
125 #define ZL r30 |
126 #define ZH r31 |
127 |
128 /* |
129 * Only few devices come without EEPROM. In order to assemble the |
130 * EEPROM library components without defining a specific device, we |
131 * keep the EEPROM-related definitions here, and catch the devices |
132 * without EEPROM (E2END == 0) below. Obviously, the EEPROM library |
133 * functions will not work for them. ;-) |
134 */ |
135 /* EEPROM Control Register */ |
136 #define EECR _SFR_IO8(0x1C) |
137 |
138 /* EEPROM Data Register */ |
139 #define EEDR _SFR_IO8(0x1D) |
140 |
141 /* EEPROM Address Register */ |
142 #define EEAR _SFR_IO16(0x1E) |
143 #define EEARL _SFR_IO8(0x1E) |
144 #define EEARH _SFR_IO8(0x1F) |
145 |
146 /* EEPROM Control Register */ |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 6 |
|
|
147 #define EERIE 3 |
148 #define EEMWE 2 |
149 #define EEWE 1 |
150 #define EERE 0 |
151 |
152 #if defined (__AVR_AT94K__) |
153 # include <avr/ioat94k.h> |
154 #elif defined (__AVR_AT43USB320__) |
155 # include <avr/io43u32x.h> |
156 #elif defined (__AVR_AT43USB355__) |
157 # include <avr/io43u35x.h> |
158 #elif defined (__AVR_AT76C711__) |
159 # include <avr/io76c711.h> |
160 #elif defined (__AVR_AT86RF401__) |
161 # include <avr/io86r401.h> |
162 #elif defined (__AVR_ATmega128__) |
163 # include <avr/iom128.h> |
164 #elif defined (__AVR_ATmega64__) |
165 # include <avr/iom64.h> |
166 #elif defined (__AVR_ATmega103__) |
167 # include <avr/iom103.h> |
168 #elif defined (__AVR_ATmega32__) |
169 # include <avr/iom32.h> |
170 #elif defined (__AVR_ATmega323__) |
171 # include <avr/iom323.h> |
172 #elif defined (__AVR_ATmega16__) |
173 # include <avr/iom16.h> |
174 #elif defined (__AVR_ATmega161__) |
175 # include <avr/iom161.h> |
176 #elif defined (__AVR_ATmega162__) |
177 # include <avr/iom162.h> |
178 #elif defined (__AVR_ATmega163__) |
179 # include <avr/iom163.h> |
180 #elif defined (__AVR_ATmega169__) |
181 # include <avr/iom169.h> |
182 #elif defined (__AVR_ATmega8__) |
183 # include <avr/iom8.h> |
1 /* Copyright (c) 2002, Marek Michalkiewicz |
2 All rights reserved. |
3 |
4 Redistribution and use in source and binary forms, with or without |
5 modification, are permitted provided that the following conditions are met: |
6 |
7 * Redistributions of source code must retain the above copyright |
8 notice, this list of conditions and the following disclaimer. |
9 * Redistributions in binary form must reproduce the above copyright |
10 notice, this list of conditions and the following disclaimer in |
11 the documentation and/or other materials provided with the |
12 distribution. |
13 |
14 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
15 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
16 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
17 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
18 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
19 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
20 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 7 |
|
|
21 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
22 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
23 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
24 POSSIBILITY OF SUCH DAMAGE. */ |
25 |
26 /* $Id: iom8.h,v 1.8 2003/02/17 09:57:28 marekm Exp $ */ |
27 |
28 /* avr/iom8.h - definitions for ATmega8 */ |
29 |
30 #ifndef _AVR_IOM8_H_ |
31 #define _AVR_IOM8_H_ 1 |
32 |
33 /* This file should only be included from <avr/io.h>, never directly. */ |
34 |
35 #ifndef _AVR_IO_H_ |
36 # error "Include <avr/io.h> instead of this file." |
37 #endif |
38 |
39 #ifndef _AVR_IOXXX_H_ |
40 # define _AVR_IOXXX_H_ "iom8.h" |
41 #else |
42 # error "Attempt to include more than one <avr/ioXXX.h> file." |
43 #endif |
44 |
45 /* I/O registers */ |
46 |
47 /* TWI stands for "Two Wire Interface" or "TWI Was I2C(tm)" */ |
48 #define TWBR _SFR_IO8(0x00) |
49 #define TWSR _SFR_IO8(0x01) |
50 #define TWAR _SFR_IO8(0x02) |
51 #define TWDR _SFR_IO8(0x03) |
52 |
53 /* ADC */ |
54 #define ADCW _SFR_IO16(0x04) |
55 #ifndef __ASSEMBLER__ |
56 #define ADC _SFR_IO16(0x04) |
57 #endif |
58 #define ADCL _SFR_IO8(0x04) |
59 #define ADCH _SFR_IO8(0x05) |
60 #define ADCSR _SFR_IO8(0x06) |
61 #define ADCSRA _SFR_IO8(0x06) /* Changed in 2486H-AVR-09/02 */ |
62 #define ADMUX _SFR_IO8(0x07) |
63 |
64 /* analog comparator */ |
65 #define ACSR _SFR_IO8(0x08) |
66 |
67 /* USART */ |
68 #define UBRRL _SFR_IO8(0x09) |
69 #define UCSRB _SFR_IO8(0x0A) |
70 #define UCSRA _SFR_IO8(0x0B) |
71 #define UDR _SFR_IO8(0x0C) |
72 |
73 /* SPI */ |
74 #define SPCR _SFR_IO8(0x0D) |
75 #define SPSR _SFR_IO8(0x0E) |
76 #define SPDR _SFR_IO8(0x0F) |
77 |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 8 |
|
|
78 /* Port D */ |
79 #define PIND _SFR_IO8(0x10) |
80 #define DDRD _SFR_IO8(0x11) |
81 #define PORTD _SFR_IO8(0x12) |
82 |
83 /* Port C */ |
84 #define PINC _SFR_IO8(0x13) |
85 #define DDRC _SFR_IO8(0x14) |
86 #define PORTC _SFR_IO8(0x15) |
87 |
88 /* Port B */ |
89 #define PINB _SFR_IO8(0x16) |
90 #define DDRB _SFR_IO8(0x17) |
91 #define PORTB _SFR_IO8(0x18) |
92 |
93 /* 0x1C..0x1F EEPROM */ |
94 |
95 #define UCSRC _SFR_IO8(0x20) |
96 #define UBRRH _SFR_IO8(0x20) |
97 |
98 #define WDTCR _SFR_IO8(0x21) |
99 #define ASSR _SFR_IO8(0x22) |
100 |
101 /* Timer 2 */ |
102 #define OCR2 _SFR_IO8(0x23) |
103 #define TCNT2 _SFR_IO8(0x24) |
104 #define TCCR2 _SFR_IO8(0x25) |
105 |
106 /* Timer 1 */ |
107 #define ICR1 _SFR_IO16(0x26) |
108 #define ICR1L _SFR_IO8(0x26) |
109 #define ICR1H _SFR_IO8(0x27) |
110 #define OCR1B _SFR_IO16(0x28) |
111 #define OCR1BL _SFR_IO8(0x28) |
112 #define OCR1BH _SFR_IO8(0x29) |
113 #define OCR1A _SFR_IO16(0x2A) |
114 #define OCR1AL _SFR_IO8(0x2A) |
115 #define OCR1AH _SFR_IO8(0x2B) |
116 #define TCNT1 _SFR_IO16(0x2C) |
117 #define TCNT1L _SFR_IO8(0x2C) |
118 #define TCNT1H _SFR_IO8(0x2D) |
119 #define TCCR1B _SFR_IO8(0x2E) |
120 #define TCCR1A _SFR_IO8(0x2F) |
121 |
122 #define SFIOR _SFR_IO8(0x30) |
123 |
124 #define OSCCAL _SFR_IO8(0x31) |
125 |
126 /* Timer 0 */ |
127 #define TCNT0 _SFR_IO8(0x32) |
128 #define TCCR0 _SFR_IO8(0x33) |
129 |
130 #define MCUCSR _SFR_IO8(0x34) |
131 #define MCUCR _SFR_IO8(0x35) |
132 |
133 #define TWCR _SFR_IO8(0x36) |
134 |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 9 |
|
|
135 #define SPMCR _SFR_IO8(0x37) |
136 |
137 #define TIFR _SFR_IO8(0x38) |
138 #define TIMSK _SFR_IO8(0x39) |
139 |
140 #define GIFR _SFR_IO8(0x3A) |
141 #define GIMSK _SFR_IO8(0x3B) |
142 #define GICR _SFR_IO8(0x3B) /* Changed in 2486H-AVR-09/02 */ |
143 |
144 /* 0x3C reserved (OCR0?) */ |
145 |
146 /* 0x3D..0x3E SP */ |
147 |
148 /* 0x3F SREG */ |
149 |
150 /* Interrupt vectors */ |
151 |
152 #define SIG_INTERRUPT0 _VECTOR(1) |
153 #define SIG_INTERRUPT1 _VECTOR(2) |
154 #define SIG_OUTPUT_COMPARE2 _VECTOR(3) |
155 #define SIG_OVERFLOW2 _VECTOR(4) |
156 #define SIG_INPUT_CAPTURE1 _VECTOR(5) |
157 #define SIG_OUTPUT_COMPARE1A _VECTOR(6) |
158 #define SIG_OUTPUT_COMPARE1B _VECTOR(7) |
159 #define SIG_OVERFLOW1 _VECTOR(8) |
160 #define SIG_OVERFLOW0 _VECTOR(9) |
161 #define SIG_SPI _VECTOR(10) |
162 #define SIG_UART_RECV _VECTOR(11) |
163 #define SIG_UART_DATA _VECTOR(12) |
164 #define SIG_UART_TRANS _VECTOR(13) |
165 #define SIG_ADC _VECTOR(14) |
166 #define SIG_EEPROM_READY _VECTOR(15) |
167 #define SIG_COMPARATOR _VECTOR(16) |
168 #define SIG_2WIRE_SERIAL _VECTOR(17) |
169 #define SIG_SPM_READY _VECTOR(18) |
170 |
171 #define _VECTORS_SIZE 38 |
172 |
173 /* Bit numbers */ |
174 |
175 /* GIMSK / GICR */ |
176 #define INT1 7 |
177 #define INT0 6 |
178 #define IVSEL 1 |
179 #define IVCE 0 |
180 |
181 /* GIFR */ |
182 #define INTF1 7 |
183 #define INTF0 6 |
184 |
184 #elif defined (__AVR_ATmega8515__) |
GAS LISTING /tmp/cckBHomO.s page 2 |
|
|
1 /* Copyright (c) 2002,2003,2005,2006, Marek Michalkiewicz, Joerg Wunsch |
2 All rights reserved. |
3 |
4 Redistribution and use in source and binary forms, with or without |
5 modification, are permitted provided that the following conditions are met: |
6 |
7 * Redistributions of source code must retain the above copyright |
8 notice, this list of conditions and the following disclaimer. |
9 |
10 * Redistributions in binary form must reproduce the above copyright |
11 notice, this list of conditions and the following disclaimer in |
12 the documentation and/or other materials provided with the |
13 distribution. |
14 |
15 * Neither the name of the copyright holders nor the names of |
16 contributors may be used to endorse or promote products derived |
17 from this software without specific prior written permission. |
18 |
19 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
20 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
21 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
22 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
23 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
24 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
25 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
26 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
27 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
28 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
29 POSSIBILITY OF SUCH DAMAGE. */ |
30 |
31 /* $Id: io.h,v 1.24.2.7 2006/04/19 16:53:25 aesok Exp $ */ |
32 |
33 /** \defgroup avr_io <avr/io.h>: AVR device-specific IO definitions |
34 \code #include <avr/io.h> \endcode |
35 |
36 This header file includes the apropriate IO definitions for the |
37 device that has been specified by the <tt>-mmcu=</tt> compiler |
38 command-line switch. This is done by diverting to the appropriate |
39 file <tt><avr/io</tt><em>XXXX</em><tt>.h></tt> which should |
40 never be included directly. Some register names common to all |
41 AVR devices are defined directly within <tt><avr/io.h></tt>, |
42 but most of the details come from the respective include file. |
43 |
44 Note that this file always includes |
45 \code #include <avr/sfr_defs.h> \endcode |
46 See \ref avr_sfr for the details. |
47 |
48 Included are definitions of the IO register set and their |
49 respective bit values as specified in the Atmel documentation. |
50 Note that Atmel is not very consistent in its naming conventions, |
51 so even identical functions sometimes get different names on |
52 different devices. |
53 |
54 Also included are the specific names useable for interrupt |
55 function definitions as documented |
56 \ref avr_signames "here". |
57 |
GAS LISTING /tmp/cckBHomO.s page 3 |
|
|
58 Finally, the following macros are defined: |
59 |
60 - \b RAMEND |
61 <br> |
62 A constant describing the last on-chip RAM location. |
63 <br> |
64 - \b XRAMEND |
65 <br> |
66 A constant describing the last possible location in RAM. |
67 This is equal to RAMEND for devices that do not allow for |
68 external RAM. |
69 <br> |
70 - \b E2END |
71 <br> |
72 A constant describing the address of the last EEPROM cell. |
73 <br> |
74 - \b FLASHEND |
75 <br> |
76 A constant describing the last byte address in flash ROM. |
77 <br> |
78 - \b SPM_PAGESIZE |
79 <br> |
80 For devices with bootloader support, the flash pagesize |
81 (in bytes) to be used for the \c SPM instruction. */ |
82 |
83 #ifndef _AVR_IO_H_ |
84 #define _AVR_IO_H_ |
85 |
86 #include <avr/sfr_defs.h> |
1 /* Copyright (c) 2002, Marek Michalkiewicz <marekm@amelek.gda.pl> |
2 All rights reserved. |
3 |
4 Redistribution and use in source and binary forms, with or without |
5 modification, are permitted provided that the following conditions are met: |
6 |
7 * Redistributions of source code must retain the above copyright |
8 notice, this list of conditions and the following disclaimer. |
9 |
10 * Redistributions in binary form must reproduce the above copyright |
11 notice, this list of conditions and the following disclaimer in |
12 the documentation and/or other materials provided with the |
13 distribution. |
14 |
15 * Neither the name of the copyright holders nor the names of |
16 contributors may be used to endorse or promote products derived |
17 from this software without specific prior written permission. |
18 |
19 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
20 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
21 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
22 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
23 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
24 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
25 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
26 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
27 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
28 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
GAS LISTING /tmp/cckBHomO.s page 4 |
|
|
29 POSSIBILITY OF SUCH DAMAGE. */ |
30 |
31 /* avr/sfr_defs.h - macros for accessing AVR special function registers */ |
32 |
33 /* $Id: sfr_defs.h,v 1.16 2005/09/10 21:31:13 joerg_wunsch Exp $ */ |
34 |
35 #ifndef _AVR_SFR_DEFS_H_ |
36 #define _AVR_SFR_DEFS_H_ 1 |
37 |
38 /** \defgroup avr_sfr_notes Additional notes from <avr/sfr_defs.h> |
39 \ingroup avr_sfr |
40 |
41 The \c <avr/sfr_defs.h> file is included by all of the \c <avr/ioXXXX.h> |
42 files, which use macros defined here to make the special function register |
43 definitions look like C variables or simple constants, depending on the |
44 <tt>_SFR_ASM_COMPAT</tt> define. Some examples from \c <avr/iom128.h> to |
45 show how to define such macros: |
46 |
47 \code |
48 #define PORTA _SFR_IO8(0x1b) |
49 #define TCNT1 _SFR_IO16(0x2c) |
50 #define PORTF _SFR_MEM8(0x61) |
51 #define TCNT3 _SFR_MEM16(0x88) |
52 \endcode |
53 |
54 If \c _SFR_ASM_COMPAT is not defined, C programs can use names like |
55 <tt>PORTA</tt> directly in C expressions (also on the left side of |
56 assignment operators) and GCC will do the right thing (use short I/O |
57 instructions if possible). The \c __SFR_OFFSET definition is not used in |
58 any way in this case. |
59 |
60 Define \c _SFR_ASM_COMPAT as 1 to make these names work as simple constants |
61 (addresses of the I/O registers). This is necessary when included in |
62 preprocessed assembler (*.S) source files, so it is done automatically if |
63 \c __ASSEMBLER__ is defined. By default, all addresses are defined as if |
64 they were memory addresses (used in \c lds/sts instructions). To use these |
65 addresses in \c in/out instructions, you must subtract 0x20 from them. |
66 |
67 For more backwards compatibility, insert the following at the start of your |
68 old assembler source file: |
69 |
70 \code |
71 #define __SFR_OFFSET 0 |
72 \endcode |
73 |
74 This automatically subtracts 0x20 from I/O space addresses, but it's a |
75 hack, so it is recommended to change your source: wrap such addresses in |
76 macros defined here, as shown below. After this is done, the |
77 <tt>__SFR_OFFSET</tt> definition is no longer necessary and can be removed. |
78 |
79 Real example - this code could be used in a boot loader that is portable |
80 between devices with \c SPMCR at different addresses. |
81 |
82 \verbatim |
83 <avr/iom163.h>: #define SPMCR _SFR_IO8(0x37) |
84 <avr/iom128.h>: #define SPMCR _SFR_MEM8(0x68) |
85 \endverbatim |
GAS LISTING /tmp/cckBHomO.s page 5 |
|
|
86 |
87 \code |
87 |
88 #ifndef __AVR_HAVE_MOVW__ |
89 # if defined(__AVR_ENHANCED__) && __AVR_ENHANCED__ |
90 # define __AVR_HAVE_MOVW__ 1 |
91 # endif |
92 #endif |
93 |
94 #ifndef __AVR_HAVE_LPMX__ |
95 # if defined(__AVR_ENHANCED__) && __AVR_ENHANCED__ |
96 # define __AVR_HAVE_LPMX__ 1 |
97 # endif |
98 #endif |
99 |
100 /* |
101 * Registers common to all AVR devices. |
102 */ |
103 |
104 #if __AVR_ARCH__ != 1 |
105 /* |
106 * AVR architecture 1 has no RAM, thus no stack pointer. |
107 * |
108 * All other archs do have a stack pointer. Some devices have only |
109 * less than 256 bytes of possible RAM locations (128 Bytes of SRAM |
110 * and no option for external RAM), thus SPH is officially "reserved" |
111 * for them. We catch this case below after including the |
112 * device-specific ioXXXX.h file, by examining XRAMEND, and |
113 * #undef-ining SP and SPH in that case. |
114 */ |
115 /* Stack Pointer */ |
116 #define SP _SFR_IO16(0x3D) |
117 #define SPL _SFR_IO8(0x3D) |
118 #define SPH _SFR_IO8(0x3E) |
119 #endif /* #if __AVR_ARCH__ != 1 */ |
120 |
121 /* Status REGister */ |
122 #define SREG _SFR_IO8(0x3F) |
123 |
124 /* Status Register - SREG */ |
125 #define SREG_I 7 |
126 #define SREG_T 6 |
127 #define SREG_H 5 |
128 #define SREG_S 4 |
129 #define SREG_V 3 |
130 #define SREG_N 2 |
131 #define SREG_Z 1 |
132 #define SREG_C 0 |
133 |
134 /* Pointer definition */ |
135 #if __AVR_ARCH__ != 1 |
136 /* avr1 has only the Z pointer */ |
137 #define XL r26 |
138 #define XH r27 |
139 #define YL r28 |
140 #define YH r29 |
141 #endif /* #if __AVR_ARCH__ != 1 */ |
GAS LISTING /tmp/cckBHomO.s page 6 |
|
|
142 #define ZL r30 |
143 #define ZH r31 |
144 |
145 /* |
146 * Only few devices come without EEPROM. In order to assemble the |
147 * EEPROM library components without defining a specific device, we |
148 * keep the EEPROM-related definitions here. |
149 */ |
150 #if defined(__COMPILING_AVR_LIBC__) |
151 |
152 /* EEPROM Control Register */ |
153 #define EECR _SFR_IO8(0x1C) |
154 |
155 /* EEPROM Data Register */ |
156 #define EEDR _SFR_IO8(0x1D) |
157 |
158 /* EEPROM Address Register */ |
159 #define EEAR _SFR_IO16(0x1E) |
160 #define EEARL _SFR_IO8(0x1E) |
161 #define EEARH _SFR_IO8(0x1F) |
162 |
163 /* EEPROM Control Register */ |
164 #define EERIE 3 |
165 #define EEMWE 2 |
166 #define EEWE 1 |
167 #define EERE 0 |
168 |
169 #endif /* __COMPILING_AVR_LIBC__ */ |
170 |
171 #if defined (__AVR_AT94K__) |
172 # include <avr/ioat94k.h> |
173 #elif defined (__AVR_AT43USB320__) |
174 # include <avr/io43u32x.h> |
175 #elif defined (__AVR_AT43USB355__) |
176 # include <avr/io43u35x.h> |
177 #elif defined (__AVR_AT76C711__) |
178 # include <avr/io76c711.h> |
179 #elif defined (__AVR_AT86RF401__) |
180 # include <avr/io86r401.h> |
181 #elif defined (__AVR_AT90PWM2__) |
182 # include <avr/io90pwmx.h> |
183 #elif defined (__AVR_AT90PWM3__) |
184 # include <avr/io90pwmx.h> |
185 #elif defined (__AVR_ATmega128__) |
186 # include <avr/iom128.h> |
187 #elif defined (__AVR_ATmega1280__) |
188 # include <avr/iom1280.h> |
189 #elif defined (__AVR_ATmega1281__) |
190 # include <avr/iom1281.h> |
191 #elif defined (__AVR_AT90CAN32__) |
192 # include <avr/iocan32.h> |
193 #elif defined (__AVR_AT90CAN64__) |
194 # include <avr/iocan64.h> |
195 #elif defined (__AVR_AT90CAN128__) |
196 # include <avr/iocan128.h> |
197 #elif defined (__AVR_AT90USB646__) |
198 # include <avr/iousb646.h> |
GAS LISTING /tmp/cckBHomO.s page 7 |
|
|
199 #elif defined (__AVR_AT90USB647__) |
200 # include <avr/iousb647.h> |
201 #elif defined (__AVR_AT90USB1286__) |
202 # include <avr/iousb1286.h> |
203 #elif defined (__AVR_AT90USB1287__) |
204 # include <avr/iousb1287.h> |
205 #elif defined (__AVR_ATmega64__) |
206 # include <avr/iom64.h> |
207 #elif defined (__AVR_ATmega640__) |
208 # include <avr/iom640.h> |
209 #elif defined (__AVR_ATmega644__) |
210 # include <avr/iom644.h> |
211 #elif defined (__AVR_ATmega644P__) |
212 # include <avr/iom644.h> |
213 #elif defined (__AVR_ATmega645__) |
214 # include <avr/iom645.h> |
215 #elif defined (__AVR_ATmega6450__) |
216 # include <avr/iom6450.h> |
217 #elif defined (__AVR_ATmega649__) |
218 # include <avr/iom649.h> |
219 #elif defined (__AVR_ATmega6490__) |
220 # include <avr/iom6490.h> |
221 #elif defined (__AVR_ATmega103__) |
222 # include <avr/iom103.h> |
223 #elif defined (__AVR_ATmega32__) |
224 # include <avr/iom32.h> |
225 #elif defined (__AVR_ATmega323__) |
226 # include <avr/iom323.h> |
227 #elif defined (__AVR_ATmega324P__) |
228 # include <avr/iom324.h> |
229 #elif defined (__AVR_ATmega325__) |
230 # include <avr/iom325.h> |
231 #elif defined (__AVR_ATmega3250__) |
232 # include <avr/iom3250.h> |
233 #elif defined (__AVR_ATmega329__) |
234 # include <avr/iom329.h> |
235 #elif defined (__AVR_ATmega3290__) |
236 # include <avr/iom3290.h> |
237 #elif defined (__AVR_ATmega406__) |
238 # include <avr/iom406.h> |
239 #elif defined (__AVR_ATmega16__) |
240 # include <avr/iom16.h> |
241 #elif defined (__AVR_ATmega161__) |
242 # include <avr/iom161.h> |
243 #elif defined (__AVR_ATmega162__) |
244 # include <avr/iom162.h> |
245 #elif defined (__AVR_ATmega163__) |
246 # include <avr/iom163.h> |
247 #elif defined (__AVR_ATmega164P__) |
248 # include <avr/iom164.h> |
249 #elif defined (__AVR_ATmega165__) |
250 # include <avr/iom165.h> |
251 #elif defined (__AVR_ATmega168__) |
252 # include <avr/iom168.h> |
253 #elif defined (__AVR_ATmega169__) |
254 # include <avr/iom169.h> |
255 #elif defined (__AVR_ATmega8__) |
GAS LISTING /tmp/cckBHomO.s page 8 |
|
|
256 # include <avr/iom8.h> |
1 /* Copyright (c) 2002, Marek Michalkiewicz |
2 All rights reserved. |
3 |
4 Redistribution and use in source and binary forms, with or without |
5 modification, are permitted provided that the following conditions are met: |
6 |
7 * Redistributions of source code must retain the above copyright |
8 notice, this list of conditions and the following disclaimer. |
9 |
10 * Redistributions in binary form must reproduce the above copyright |
11 notice, this list of conditions and the following disclaimer in |
12 the documentation and/or other materials provided with the |
13 distribution. |
14 |
15 * Neither the name of the copyright holders nor the names of |
16 contributors may be used to endorse or promote products derived |
17 from this software without specific prior written permission. |
18 |
19 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
20 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
21 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
22 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
23 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
24 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
25 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
26 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
27 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
28 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
29 POSSIBILITY OF SUCH DAMAGE. */ |
30 |
31 /* $Id: iom8.h,v 1.13 2005/10/30 22:11:23 joerg_wunsch Exp $ */ |
32 |
33 /* avr/iom8.h - definitions for ATmega8 */ |
34 |
35 #ifndef _AVR_IOM8_H_ |
36 #define _AVR_IOM8_H_ 1 |
37 |
38 /* This file should only be included from <avr/io.h>, never directly. */ |
39 |
40 #ifndef _AVR_IO_H_ |
41 # error "Include <avr/io.h> instead of this file." |
42 #endif |
43 |
44 #ifndef _AVR_IOXXX_H_ |
45 # define _AVR_IOXXX_H_ "iom8.h" |
46 #else |
47 # error "Attempt to include more than one <avr/ioXXX.h> file." |
48 #endif |
49 |
50 /* I/O registers */ |
51 |
52 /* TWI stands for "Two Wire Interface" or "TWI Was I2C(tm)" */ |
53 #define TWBR _SFR_IO8(0x00) |
54 #define TWSR _SFR_IO8(0x01) |
55 #define TWAR _SFR_IO8(0x02) |
56 #define TWDR _SFR_IO8(0x03) |
GAS LISTING /tmp/cckBHomO.s page 9 |
|
|
57 |
58 /* ADC */ |
59 #define ADCW _SFR_IO16(0x04) |
60 #ifndef __ASSEMBLER__ |
61 #define ADC _SFR_IO16(0x04) |
62 #endif |
63 #define ADCL _SFR_IO8(0x04) |
64 #define ADCH _SFR_IO8(0x05) |
65 #define ADCSR _SFR_IO8(0x06) |
66 #define ADCSRA _SFR_IO8(0x06) /* Changed in 2486H-AVR-09/02 */ |
67 #define ADMUX _SFR_IO8(0x07) |
68 |
69 /* analog comparator */ |
70 #define ACSR _SFR_IO8(0x08) |
71 |
72 /* USART */ |
73 #define UBRRL _SFR_IO8(0x09) |
74 #define UCSRB _SFR_IO8(0x0A) |
75 #define UCSRA _SFR_IO8(0x0B) |
76 #define UDR _SFR_IO8(0x0C) |
77 |
78 /* SPI */ |
79 #define SPCR _SFR_IO8(0x0D) |
80 #define SPSR _SFR_IO8(0x0E) |
81 #define SPDR _SFR_IO8(0x0F) |
82 |
83 /* Port D */ |
84 #define PIND _SFR_IO8(0x10) |
85 #define DDRD _SFR_IO8(0x11) |
86 #define PORTD _SFR_IO8(0x12) |
87 |
88 /* Port C */ |
89 #define PINC _SFR_IO8(0x13) |
90 #define DDRC _SFR_IO8(0x14) |
91 #define PORTC _SFR_IO8(0x15) |
92 |
93 /* Port B */ |
94 #define PINB _SFR_IO8(0x16) |
95 #define DDRB _SFR_IO8(0x17) |
96 #define PORTB _SFR_IO8(0x18) |
97 |
98 /* EEPROM Control Register */ |
99 #define EECR _SFR_IO8(0x1C) |
100 |
101 /* EEPROM Data Register */ |
102 #define EEDR _SFR_IO8(0x1D) |
103 |
104 /* EEPROM Address Register */ |
105 #define EEAR _SFR_IO16(0x1E) |
106 #define EEARL _SFR_IO8(0x1E) |
107 #define EEARH _SFR_IO8(0x1F) |
108 |
109 #define UCSRC _SFR_IO8(0x20) |
110 #define UBRRH _SFR_IO8(0x20) |
111 |
112 #define WDTCR _SFR_IO8(0x21) |
113 #define ASSR _SFR_IO8(0x22) |
GAS LISTING /tmp/cckBHomO.s page 10 |
|
|
114 |
115 /* Timer 2 */ |
116 #define OCR2 _SFR_IO8(0x23) |
117 #define TCNT2 _SFR_IO8(0x24) |
118 #define TCCR2 _SFR_IO8(0x25) |
119 |
120 /* Timer 1 */ |
121 #define ICR1 _SFR_IO16(0x26) |
122 #define ICR1L _SFR_IO8(0x26) |
123 #define ICR1H _SFR_IO8(0x27) |
124 #define OCR1B _SFR_IO16(0x28) |
125 #define OCR1BL _SFR_IO8(0x28) |
126 #define OCR1BH _SFR_IO8(0x29) |
127 #define OCR1A _SFR_IO16(0x2A) |
128 #define OCR1AL _SFR_IO8(0x2A) |
129 #define OCR1AH _SFR_IO8(0x2B) |
130 #define TCNT1 _SFR_IO16(0x2C) |
131 #define TCNT1L _SFR_IO8(0x2C) |
132 #define TCNT1H _SFR_IO8(0x2D) |
133 #define TCCR1B _SFR_IO8(0x2E) |
134 #define TCCR1A _SFR_IO8(0x2F) |
135 |
136 #define SFIOR _SFR_IO8(0x30) |
137 |
138 #define OSCCAL _SFR_IO8(0x31) |
139 |
140 /* Timer 0 */ |
141 #define TCNT0 _SFR_IO8(0x32) |
142 #define TCCR0 _SFR_IO8(0x33) |
143 |
144 #define MCUCSR _SFR_IO8(0x34) |
145 #define MCUCR _SFR_IO8(0x35) |
146 |
147 #define TWCR _SFR_IO8(0x36) |
148 |
149 #define SPMCR _SFR_IO8(0x37) |
150 |
151 #define TIFR _SFR_IO8(0x38) |
152 #define TIMSK _SFR_IO8(0x39) |
153 |
154 #define GIFR _SFR_IO8(0x3A) |
155 #define GIMSK _SFR_IO8(0x3B) |
156 #define GICR _SFR_IO8(0x3B) /* Changed in 2486H-AVR-09/02 */ |
157 |
158 /* 0x3C reserved (OCR0?) */ |
159 |
160 /* 0x3D..0x3E SP */ |
161 |
162 /* 0x3F SREG */ |
163 |
164 /* Interrupt vectors */ |
165 |
166 /* External Interrupt Request 0 */ |
167 #define INT0_vect _VECTOR(1) |
168 #define SIG_INTERRUPT0 _VECTOR(1) |
169 |
170 /* External Interrupt Request 1 */ |
GAS LISTING /tmp/cckBHomO.s page 11 |
|
|
171 #define INT1_vect _VECTOR(2) |
172 #define SIG_INTERRUPT1 _VECTOR(2) |
173 |
174 /* Timer/Counter2 Compare Match */ |
175 #define TIMER2_COMP_vect _VECTOR(3) |
176 #define SIG_OUTPUT_COMPARE2 _VECTOR(3) |
177 |
178 /* Timer/Counter2 Overflow */ |
179 #define TIMER2_OVF_vect _VECTOR(4) |
180 #define SIG_OVERFLOW2 _VECTOR(4) |
181 |
182 /* Timer/Counter1 Capture Event */ |
183 #define TIMER1_CAPT_vect _VECTOR(5) |
184 #define SIG_INPUT_CAPTURE1 _VECTOR(5) |
185 |
186 /* Timer/Counter1 Compare Match A */ |
187 #define TIMER1_COMPA_vect _VECTOR(6) |
188 #define SIG_OUTPUT_COMPARE1A _VECTOR(6) |
189 |
190 /* Timer/Counter1 Compare Match B */ |
191 #define TIMER1_COMPB_vect _VECTOR(7) |
192 #define SIG_OUTPUT_COMPARE1B _VECTOR(7) |
193 |
194 /* Timer/Counter1 Overflow */ |
195 #define TIMER1_OVF_vect _VECTOR(8) |
196 #define SIG_OVERFLOW1 _VECTOR(8) |
197 |
198 /* Timer/Counter0 Overflow */ |
199 #define TIMER0_OVF_vect _VECTOR(9) |
200 #define SIG_OVERFLOW0 _VECTOR(9) |
201 |
202 /* Serial Transfer Complete */ |
203 #define SPI_STC_vect _VECTOR(10) |
204 #define SIG_SPI _VECTOR(10) |
205 |
206 /* USART, Rx Complete */ |
207 #define USART_RXC_vect _VECTOR(11) |
208 #define SIG_UART_RECV _VECTOR(11) |
209 |
210 /* USART Data Register Empty */ |
211 #define USART_UDRE_vect _VECTOR(12) |
212 #define SIG_UART_DATA _VECTOR(12) |
213 |
214 /* USART, Tx Complete */ |
215 #define USART_TXC_vect _VECTOR(13) |
216 #define SIG_UART_TRANS _VECTOR(13) |
217 |
218 /* ADC Conversion Complete */ |
219 #define ADC_vect _VECTOR(14) |
220 #define SIG_ADC _VECTOR(14) |
221 |
222 /* EEPROM Ready */ |
223 #define EE_RDY_vect _VECTOR(15) |
224 #define SIG_EEPROM_READY _VECTOR(15) |
225 |
226 /* Analog Comparator */ |
227 #define ANA_COMP_vect _VECTOR(16) |
GAS LISTING /tmp/cckBHomO.s page 12 |
|
|
228 #define SIG_COMPARATOR _VECTOR(16) |
229 |
230 /* 2-wire Serial Interface */ |
231 #define TWI_vect _VECTOR(17) |
232 #define SIG_2WIRE_SERIAL _VECTOR(17) |
233 |
234 /* Store Program Memory Ready */ |
235 #define SPM_RDY_vect _VECTOR(18) |
236 #define SIG_SPM_READY _VECTOR(18) |
237 |
238 #define _VECTORS_SIZE 38 |
239 |
240 /* Bit numbers */ |
241 |
242 /* GIMSK / GICR */ |
243 #define INT1 7 |
244 #define INT0 6 |
245 #define IVSEL 1 |
246 #define IVCE 0 |
247 |
248 /* GIFR */ |
249 #define INTF1 7 |
250 #define INTF0 6 |
251 |
252 /* TIMSK */ |
253 #define OCIE2 7 |
254 #define TOIE2 6 |
255 #define TICIE1 5 |
256 #define OCIE1A 4 |
257 #define OCIE1B 3 |
257 #elif defined (__AVR_ATmega48__) |
258 # include <avr/iom48.h> |
259 #elif defined (__AVR_ATmega88__) |
260 # include <avr/iom88.h> |
261 #elif defined (__AVR_ATmega8515__) |
262 # include <avr/iom8515.h> |
263 #elif defined (__AVR_ATmega8535__) |
264 # include <avr/iom8535.h> |
265 #elif defined (__AVR_AT90S8535__) |
266 # include <avr/io8535.h> |
267 #elif defined (__AVR_AT90C8534__) |
268 # include <avr/io8534.h> |
269 #elif defined (__AVR_AT90S8515__) |
270 # include <avr/io8515.h> |
271 #elif defined (__AVR_AT90S4434__) |
272 # include <avr/io4434.h> |
273 #elif defined (__AVR_AT90S4433__) |
274 # include <avr/io4433.h> |
275 #elif defined (__AVR_AT90S4414__) |
276 # include <avr/io4414.h> |
277 #elif defined (__AVR_ATtiny22__) |
278 # include <avr/iotn22.h> |
279 #elif defined (__AVR_ATtiny26__) |
280 # include <avr/iotn26.h> |
281 #elif defined (__AVR_AT90S2343__) |
282 # include <avr/io2343.h> |
283 #elif defined (__AVR_AT90S2333__) |
GAS LISTING /tmp/cckBHomO.s page 13 |
|
|
284 # include <avr/io2333.h> |
285 #elif defined (__AVR_AT90S2323__) |
286 # include <avr/io2323.h> |
287 #elif defined (__AVR_AT90S2313__) |
288 # include <avr/io2313.h> |
289 #elif defined (__AVR_ATtiny2313__) |
290 # include <avr/iotn2313.h> |
291 #elif defined (__AVR_ATtiny13__) |
292 # include <avr/iotn13.h> |
293 #elif defined (__AVR_ATtiny25__) |
294 # include <avr/iotn25.h> |
295 #elif defined (__AVR_ATtiny45__) |
296 # include <avr/iotn45.h> |
297 #elif defined (__AVR_ATtiny85__) |
298 # include <avr/iotn85.h> |
299 #elif defined (__AVR_ATtiny24__) |
300 # include <avr/iotn24.h> |
301 #elif defined (__AVR_ATtiny44__) |
302 # include <avr/iotn44.h> |
303 #elif defined (__AVR_ATtiny84__) |
304 # include <avr/iotn84.h> |
305 #elif defined (__AVR_ATtiny261__) |
306 # include <avr/iotn261.h> |
307 #elif defined (__AVR_ATtiny461__) |
308 # include <avr/iotn461.h> |
309 #elif defined (__AVR_ATtiny861__) |
310 # include <avr/iotn861.h> |
311 /* avr1: the following only supported for assembler programs */ |
312 #elif defined (__AVR_ATtiny28__) |
313 # include <avr/iotn28.h> |
314 #elif defined (__AVR_AT90S1200__) |
315 # include <avr/io1200.h> |
316 #elif defined (__AVR_ATtiny15__) |
317 # include <avr/iotn15.h> |
318 #elif defined (__AVR_ATtiny12__) |
319 # include <avr/iotn12.h> |
320 #elif defined (__AVR_ATtiny11__) |
321 # include <avr/iotn11.h> |
322 #else |
323 # if !defined(__COMPILING_AVR_LIBC__) |
324 # warning "device type not defined" |
325 # endif |
326 #endif |
327 |
328 #include <avr/portpins.h> |
1 /* Copyright (c) 2003 Theodore A. Roth |
2 All rights reserved. |
3 |
4 Redistribution and use in source and binary forms, with or without |
5 modification, are permitted provided that the following conditions are met: |
6 |
7 * Redistributions of source code must retain the above copyright |
8 notice, this list of conditions and the following disclaimer. |
9 |
10 * Redistributions in binary form must reproduce the above copyright |
11 notice, this list of conditions and the following disclaimer in |
12 the documentation and/or other materials provided with the |
GAS LISTING /tmp/cckBHomO.s page 14 |
|
|
13 distribution. |
14 |
15 * Neither the name of the copyright holders nor the names of |
16 contributors may be used to endorse or promote products derived |
17 from this software without specific prior written permission. |
18 |
19 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
20 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
21 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
22 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
23 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
24 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
25 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
26 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
27 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
28 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
29 POSSIBILITY OF SUCH DAMAGE. */ |
30 |
31 /* $Id: portpins.h,v 1.3.4.1 2006/03/10 16:22:38 aesok Exp $ */ |
32 |
33 #ifndef _AVR_PORTPINS_H_ |
34 #define _AVR_PORTPINS_H_ 1 |
35 |
36 /* This file should only be included from <avr/io.h>, never directly. */ |
37 |
38 #ifndef _AVR_IO_H_ |
39 # error "Include <avr/io.h> instead of this file." |
40 #endif |
41 |
42 /* Define Generic PORTn, DDn, and PINn values. */ |
43 |
44 /* Port Data Register (generic) */ |
45 #define PORT7 7 |
46 #define PORT6 6 |
47 #define PORT5 5 |
48 #define PORT4 4 |
49 #define PORT3 3 |
50 #define PORT2 2 |
51 #define PORT1 1 |
52 #define PORT0 0 |
53 |
54 /* Port Data Direction Register (generic) */ |
55 #define DD7 7 |
56 #define DD6 6 |
57 #define DD5 5 |
58 #define DD4 4 |
59 #define DD3 3 |
60 #define DD2 2 |
61 #define DD1 1 |
62 #define DD0 0 |
63 |
64 /* Port Input Pins (generic) */ |
65 #define PIN7 7 |
66 #define PIN6 6 |
67 #define PIN5 5 |
68 #define PIN4 4 |
69 #define PIN3 3 |
GAS LISTING /tmp/cckBHomO.s page 15 |
|
|
70 #define PIN2 2 |
71 #define PIN1 1 |
72 #define PIN0 0 |
73 |
74 /* Define PORTxn values for all possible port pins. */ |
75 |
76 /* PORT A */ |
77 |
78 #if defined(PA0) |
79 # define PORTA0 PA0 |
80 #endif |
81 #if defined(PA1) |
82 # define PORTA1 PA1 |
83 #endif |
84 #if defined(PA2) |
85 # define PORTA2 PA2 |
86 #endif |
87 #if defined(PA3) |
88 # define PORTA3 PA3 |
89 #endif |
90 #if defined(PA4) |
91 # define PORTA4 PA4 |
92 #endif |
93 #if defined(PA5) |
94 # define PORTA5 PA5 |
95 #endif |
96 #if defined(PA6) |
97 # define PORTA6 PA6 |
98 #endif |
99 #if defined(PA7) |
100 # define PORTA7 PA7 |
101 #endif |
102 |
103 /* PORT B */ |
104 |
105 #if defined(PB0) |
106 # define PORTB0 PB0 |
107 #endif |
108 #if defined(PB1) |
109 # define PORTB1 PB1 |
110 #endif |
111 #if defined(PB2) |
112 # define PORTB2 PB2 |
113 #endif |
114 #if defined(PB3) |
115 # define PORTB3 PB3 |
116 #endif |
117 #if defined(PB4) |
118 # define PORTB4 PB4 |
119 #endif |
120 #if defined(PB5) |
121 # define PORTB5 PB5 |
122 #endif |
123 #if defined(PB6) |
124 # define PORTB6 PB6 |
125 #endif |
126 #if defined(PB7) |
GAS LISTING /tmp/cckBHomO.s page 16 |
|
|
127 # define PORTB7 PB7 |
128 #endif |
129 |
130 /* PORT C */ |
131 |
132 #if defined(PC0) |
133 # define PORTC0 PC0 |
134 #endif |
135 #if defined(PC1) |
136 # define PORTC1 PC1 |
137 #endif |
138 #if defined(PC2) |
139 # define PORTC2 PC2 |
140 #endif |
141 #if defined(PC3) |
142 # define PORTC3 PC3 |
143 #endif |
144 #if defined(PC4) |
145 # define PORTC4 PC4 |
146 #endif |
147 #if defined(PC5) |
148 # define PORTC5 PC5 |
149 #endif |
150 #if defined(PC6) |
151 # define PORTC6 PC6 |
152 #endif |
153 #if defined(PC7) |
154 # define PORTC7 PC7 |
155 #endif |
156 |
157 /* PORT D */ |
158 |
159 #if defined(PD0) |
160 # define PORTD0 PD0 |
161 #endif |
162 #if defined(PD1) |
163 # define PORTD1 PD1 |
164 #endif |
165 #if defined(PD2) |
166 # define PORTD2 PD2 |
167 #endif |
168 #if defined(PD3) |
169 # define PORTD3 PD3 |
170 #endif |
171 #if defined(PD4) |
172 # define PORTD4 PD4 |
173 #endif |
174 #if defined(PD5) |
175 # define PORTD5 PD5 |
176 #endif |
177 #if defined(PD6) |
178 # define PORTD6 PD6 |
179 #endif |
180 #if defined(PD7) |
181 # define PORTD7 PD7 |
182 #endif |
183 |
GAS LISTING /tmp/cckBHomO.s page 17 |
|
|
184 /* PORT E */ |
185 |
186 #if defined(PE0) |
187 # define PORTE0 PE0 |
188 #endif |
189 #if defined(PE1) |
190 # define PORTE1 PE1 |
191 #endif |
192 #if defined(PE2) |
193 # define PORTE2 PE2 |
194 #endif |
195 #if defined(PE3) |
196 # define PORTE3 PE3 |
197 #endif |
198 #if defined(PE4) |
199 # define PORTE4 PE4 |
200 #endif |
201 #if defined(PE5) |
202 # define PORTE5 PE5 |
203 #endif |
204 #if defined(PE6) |
205 # define PORTE6 PE6 |
206 #endif |
207 #if defined(PE7) |
208 # define PORTE7 PE7 |
209 #endif |
210 |
211 /* PORT F */ |
212 |
213 #if defined(PF0) |
214 # define PORTF0 PF0 |
215 #endif |
216 #if defined(PF1) |
217 # define PORTF1 PF1 |
218 #endif |
219 #if defined(PF2) |
220 # define PORTF2 PF2 |
221 #endif |
222 #if defined(PF3) |
223 # define PORTF3 PF3 |
224 #endif |
225 #if defined(PF4) |
226 # define PORTF4 PF4 |
227 #endif |
228 #if defined(PF5) |
229 # define PORTF5 PF5 |
230 #endif |
231 #if defined(PF6) |
232 # define PORTF6 PF6 |
233 #endif |
234 #if defined(PF7) |
235 # define PORTF7 PF7 |
236 #endif |
237 |
238 /* PORT G */ |
239 |
240 #if defined(PG0) |
GAS LISTING /tmp/cckBHomO.s page 18 |
|
|
241 # define PORTG0 PG0 |
242 #endif |
243 #if defined(PG1) |
244 # define PORTG1 PG1 |
245 #endif |
246 #if defined(PG2) |
247 # define PORTG2 PG2 |
248 #endif |
249 #if defined(PG3) |
250 # define PORTG3 PG3 |
251 #endif |
252 #if defined(PG4) |
253 # define PORTG4 PG4 |
254 #endif |
255 #if defined(PG5) |
256 # define PORTG5 PG5 |
257 #endif |
258 #if defined(PG6) |
259 # define PORTG6 PG6 |
260 #endif |
261 #if defined(PG7) |
262 # define PORTG7 PG7 |
263 #endif |
264 |
265 /* PORT H */ |
266 |
267 #if defined(PH0) |
268 # define PORTH0 PH0 |
269 #endif |
270 #if defined(PH1) |
271 # define PORTH1 PH1 |
272 #endif |
273 #if defined(PH2) |
274 # define PORTH2 PH2 |
275 #endif |
276 #if defined(PH3) |
277 # define PORTH3 PH3 |
278 #endif |
279 #if defined(PH4) |
280 # define PORTH4 PH4 |
281 #endif |
282 #if defined(PH5) |
283 # define PORTH5 PH5 |
284 #endif |
285 #if defined(PH6) |
286 # define PORTH6 PH6 |
287 #endif |
288 #if defined(PH7) |
289 # define PORTH7 PH7 |
290 #endif |
291 |
292 /* PORT J */ |
293 |
294 #if defined(PJ0) |
295 # define PORTJ0 PJ0 |
296 #endif |
297 #if defined(PJ1) |
GAS LISTING /tmp/cckBHomO.s page 19 |
|
|
298 # define PORTJ1 PJ1 |
299 #endif |
300 #if defined(PJ2) |
301 # define PORTJ2 PJ2 |
302 #endif |
303 #if defined(PJ3) |
304 # define PORTJ3 PJ3 |
305 #endif |
306 #if defined(PJ4) |
307 # define PORTJ4 PJ4 |
308 #endif |
309 #if defined(PJ5) |
310 # define PORTJ5 PJ5 |
311 #endif |
312 #if defined(PJ6) |
313 # define PORTJ6 PJ6 |
314 #endif |
315 #if defined(PJ7) |
316 # define PORTJ7 PJ7 |
317 #endif |
318 |
319 /* PORT K */ |
320 |
321 #if defined(PK0) |
322 # define PORTK0 PK0 |
323 #endif |
324 #if defined(PK1) |
325 # define PORTK1 PK1 |
326 #endif |
327 #if defined(PK2) |
328 # define PORTK2 PK2 |
329 #endif |
329 |
330 #if __AVR_ARCH__ != 1 |
331 # if XRAMEND < 0x100 && !defined(__COMPILING_AVR_LIBC__) |
332 # undef SP |
333 # define SP _SFR_IO8(0x3D) |
334 # undef SPH |
335 # endif |
336 #endif |
337 |
338 #include <avr/version.h> |
1 /* Copyright (c) 2005, Joerg Wunsch -*- c -*- |
2 All rights reserved. |
3 |
4 Redistribution and use in source and binary forms, with or without |
5 modification, are permitted provided that the following conditions are met: |
6 |
7 * Redistributions of source code must retain the above copyright |
8 notice, this list of conditions and the following disclaimer. |
9 |
10 * Redistributions in binary form must reproduce the above copyright |
11 notice, this list of conditions and the following disclaimer in |
12 the documentation and/or other materials provided with the |
13 distribution. |
14 |
15 * Neither the name of the copyright holders nor the names of |
GAS LISTING /tmp/cckBHomO.s page 20 |
|
|
16 contributors may be used to endorse or promote products derived |
17 from this software without specific prior written permission. |
18 |
19 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
20 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
21 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
22 ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
23 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
24 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
25 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
26 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
27 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
28 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
29 POSSIBILITY OF SUCH DAMAGE. */ |
30 |
31 /* $Id: version.h.in,v 1.1 2005/09/12 20:18:12 joerg_wunsch Exp $ */ |
32 |
33 /** \defgroup avr_version <avr/version.h>: avr-libc version macros |
34 \code #include <avr/version.h> \endcode |
35 |
36 This header file defines macros that contain version numbers and |
37 strings describing the current version of avr-libc. |
38 |
39 The version number itself basically consists of three pieces that |
40 are separated by a dot: the major number, the minor number, and |
41 the revision number. For development versions (which use an odd |
42 minor number), the string representation additionally gets the |
43 date code (YYYYMMDD) appended. |
44 |
45 This file will also be included by \c <avr/io.h>. That way, |
46 portable tests can be implemented using \c <avr/io.h> that can be |
47 used in code that wants to remain backwards-compatible to library |
48 versions prior to the date when the library version API had been |
49 added, as referenced but undefined C preprocessor macros |
50 automatically evaluate to 0. |
51 */ |
52 |
53 #ifndef _AVR_VERSION_H_ |
54 #define _AVR_VERSION_H_ |
55 |
56 /** \ingroup avr_version |
57 String literal representation of the current library version. */ |
58 #define __AVR_LIBC_VERSION_STRING__ "1.4.4" |
59 |
60 /** \ingroup avr_version |
61 Numerical representation of the current library version. |
62 |
63 In the numerical representation, the major number is multiplied by |
64 10000, the minor number by 100, and all three parts are then |
65 added. It is intented to provide a monotonically increasing |
66 numerical value that can easily be used in numerical checks. |
67 */ |
68 #define __AVR_LIBC_VERSION__ 10404UL |
69 |
70 /** \ingroup avr_version |
71 String literal representation of the release date. */ |
72 #define __AVR_LIBC_DATE_STRING__ "20060420" |
GAS LISTING /tmp/cckBHomO.s page 21 |
|
|
73 |
74 /** \ingroup avr_version |
75 Numerical representation of the release date. */ |
76 #define __AVR_LIBC_DATE_ 20060420UL |
77 |
78 /** \ingroup avr_version |
79 Library major version number. */ |
80 #define __AVR_LIBC_MAJOR__ 1 |
81 |
82 /** \ingroup avr_version |
83 Library minor version number. */ |
84 #define __AVR_LIBC_MINOR__ 4 |
85 |
86 /** \ingroup avr_version |
87 Library revision number. */ |
88 #define __AVR_LIBC_REVISION__ 4 |
89 |
90 #endif /* _AVR_VERSION_H_ */ |
91 ... |
339 |
54 #include "Events.h" |
1 #ifndef EVENTS_H |
2 #define EVENTS_H |
538,9 → 1227,6 |
3 |
4 /* |
5 Copyright (C) 2004 John Orlando |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 10 |
|
|
6 |
7 AVRcam: a small real-time image processing engine. |
8 |
572,6 → 1258,9 |
34 Description: This file provides the external interface |
35 to the events that can be published/processed in the |
36 system. It is specifically by itself (and nothing |
GAS LISTING /tmp/cckBHomO.s page 22 |
|
|
37 else should be defined in here) so that both .c and |
38 .S (assembly) files can include this file without |
39 a problem. |
598,9 → 1287,6 |
59 #define HREF_INTERRUPT_ENABLE_MASK 0x80 |
60 #define HREF_INTERRUPT_DISABLE_MASK 0x7F |
61 #define ENABLE_PCLK_TIMER1_OVERFLOW_BITMASK 0x04 |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 11 |
|
|
62 #define DISABLE_PCLK_TIMER1_OVERFLOW_BITMASK 0xFB |
63 #define G_PORT _SFR_IO_ADDR(PINC) |
64 #define RB_PORT _SFR_IO_ADDR(PINB) |
632,6 → 1318,9 |
90 |
91 ; As pixel blocks are sampled, the red, green, and blue values are |
92 ; used to index into their respective color maps. The color maps |
GAS LISTING /tmp/cckBHomO.s page 23 |
|
|
93 ; return values that can be logically ANDed together so that a |
94 ; particular RGB triplet will result in a single bit being set |
95 ; after the AND operation. This single bit indicates which color |
658,9 → 1347,6 |
116 |
117 ; These are the registers that will be used throughout this |
118 ; module for acquiring each line of pixel data |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 12 |
|
|
119 pixelCount = 16 |
120 pixelRunStart = 17 |
121 lastColor = 18 |
692,6 → 1378,9 |
147 ;***************************************************************** |
148 ; Function Name: CamIntAsm_waitForNewTrackingFrame |
149 ; Function Description: This function is responsible for |
GAS LISTING /tmp/cckBHomO.s page 24 |
|
|
150 ; going to sleep until a new frame begins (indicated by |
151 ; VSYNC transitioning from low to high. This will wake |
152 ; the "VSYNC sleep" up and allow it to continue with |
718,9 → 1407,6 |
173 |
174 ;***************************************************************** |
175 ; REMEMBER...everything from here on out is critically timed to be |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 13 |
|
|
176 ; synchronized with the flow of pixel data from the camera... |
177 ;***************************************************************** |
178 |
752,6 → 1438,9 |
204:CamInterfaceAsm.S **** out _SFR_IO_ADDR(TIMSK),tmp1 ; overflow |
205 |
206:CamInterfaceAsm.S **** ldi tmp1,PIXEL_RUN_START_INITIAL ; set up the TCNT1 to overflow (and |
GAS LISTING /tmp/cckBHomO.s page 25 |
|
|
207:CamInterfaceAsm.S **** ldi tmp2,0xFF ; interrupts) after 176 pixels |
208:CamInterfaceAsm.S **** out _SFR_IO_ADDR(TCNT1H),tmp2 |
209:CamInterfaceAsm.S **** out _SFR_IO_ADDR(TCNT1L),tmp1 |
778,9 → 1467,6 |
230 ; Disable the HREF interrupt |
231:CamInterfaceAsm.S **** cbi _SFR_IO_ADDR(PORTD),PD6 |
232:CamInterfaceAsm.S **** in tmp1, _SFR_IO_ADDR(GICR) |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 14 |
|
|
233:CamInterfaceAsm.S **** andi tmp1, HREF_INTERRUPT_DISABLE_MASK |
234:CamInterfaceAsm.S **** out _SFR_IO_ADDR(GICR), tmp1 |
235 |
812,6 → 1498,9 |
261:CamInterfaceAsm.S **** sbi _SFR_IO_ADDR(PORTD),PD6 |
262:CamInterfaceAsm.S **** nop |
263:CamInterfaceAsm.S **** cbi _SFR_IO_ADDR(PORTD),PD6 |
GAS LISTING /tmp/cckBHomO.s page 26 |
|
|
264 |
265:CamInterfaceAsm.S **** mov tmp2,pixelRunStart ; get the count value of the |
266 ; current pixel run |
838,9 → 1527,6 |
287 |
288:CamInterfaceAsm.S **** st X+,color ; record the color run in the current line buffer |
289:CamInterfaceAsm.S **** st X,pixelCount |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 15 |
|
|
290:CamInterfaceAsm.S **** rjmp _cleanUp |
291 |
292 _cleanUpDumpLine: |
872,6 → 1558,9 |
318 |
319 ;***************************************************************** |
320 ; Function Name: CamIntAsm_waitForNewDumpFrame |
GAS LISTING /tmp/cckBHomO.s page 27 |
|
|
321 ; Function Description: This function is responsible for |
322 ; going to sleep until a new frame begins (indicated by |
323 ; VSYNC transitioning from low to high. This will wake |
898,9 → 1587,6 |
344 |
345 CamIntAsm_acquireDumpLine: |
346:CamInterfaceAsm.S **** brts _cleanUp |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 16 |
|
|
347 ;sbi _SFR_IO_ADDR(PORTD),PD6 ; For testing... |
348 ;cbi _SFR_IO_ADDR(PORTD),PD6 |
349 |
932,6 → 1618,9 |
375 |
376 ;******************************************************************************************* |
377 ; Dump Frame handler |
GAS LISTING /tmp/cckBHomO.s page 28 |
|
|
378 ;******************************************************************************************* |
379 |
380 _dumpFrame: |
958,9 → 1647,6 |
401:CamInterfaceAsm.S **** in tmp1,G_PORT ; sample the G value (1) |
402:CamInterfaceAsm.S **** in tmp2,RB_PORT ; sample the R/B value (1) |
403:CamInterfaceAsm.S **** st X+,tmp1 ; store to the currLineBuff and inc ptrs(2) |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 17 |
|
|
404:CamInterfaceAsm.S **** st Y+,tmp2 ; store to the prevLineBuff and inc ptrs(2) |
405:CamInterfaceAsm.S **** brtc _sampleDumpPixel ; loop back unless flag is set (2...if not set) |
406 ; ___________ |
992,6 → 1678,9 |
432 ; whenever the HREF transitions (meaning the pixels |
433 ; are starting after VSYNC transitioned, and we need to |
434 ; start acquiring the pixel blocks |
GAS LISTING /tmp/cckBHomO.s page 29 |
|
|
435 ; Inputs: none |
436 ; Outputs: none |
437 ;*********************************************************** |
1018,9 → 1707,6 |
458 ; set ; set the T bit in SREG |
459 ; lds tmp1,eventBitmask |
460 ; ori tmp1,EV_ACQUIRE_FRAME_COMPLETE |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 18 |
|
|
461 ; sts eventBitmask,tmp1 |
462 ; reti |
463 |
1051,53 → 1737,42 |
488:CamInterfaceAsm.S **** reti |
489 |
490 .end |
GAS LISTING C:\DOCUME~1\John\LOCALS~1\Temp/ccIlaaaa.s page 19 |
|
|
DEFINED SYMBOLS |
*ABS*:00000000 CamInterfaceAsm.S |
*ABS*:00000000 Events.h |
*ABS*:00000000 CamInterfaceAsm.S |
*ABS*:00000000 C:/WinAVR/avr/include/avr/io.h |
*ABS*:00000000 C:/WinAVR/avr/include/avr/iom8.h |
*ABS*:00000000 C:/WinAVR/avr/include/avr/io.h |
*ABS*:00000000 C:/WinAVR/avr/include/avr/sfr_defs.h |
*ABS*:00000000 C:/WinAVR/avr/include/avr/io.h |
*ABS*:00000000 CamInterfaceAsm.S |
*ABS*:00000000 <command line> |
*ABS*:00000000 <built-in> |
*ABS*:00000000 CamInterfaceAsm.S |
*ABS*:00000010 pixelCount |
*ABS*:00000011 pixelRunStart |
*ABS*:00000012 lastColor |
*ABS*:00000013 tmp1 |
*ABS*:00000014 tmp2 |
*ABS*:00000013 color |
*ABS*:00000014 greenData |
*ABS*:00000015 blueData |
*ABS*:00000016 colorMapLow |
*ABS*:00000017 colorMapHigh |
*ABS*:00000016 prevLineBuffLow |
*ABS*:00000017 prevLineBuffHigh |
*ABS*:00000018 currLineBuffLow |
*ABS*:00000019 currLineBuffHigh |
CamInterfaceAsm.S:169 .text:00000000 CamIntAsm_waitForNewTrackingFrame |
CamInterfaceAsm.S:335 .text:0000008e CamIntAsm_waitForNewDumpFrame |
CamInterfaceAsm.S:345 .text:00000094 CamIntAsm_acquireDumpLine |
CamInterfaceAsm.S:179 .text:00000006 CamIntAsm_acquireTrackingLine |
CamInterfaceAsm.S:423 .text:000000d4 __vector_1 |
CamInterfaceAsm.S:438 .text:000000d6 __vector_2 |
CamInterfaceAsm.S:474 .text:000000d8 __vector_8 |
CamInterfaceAsm.S:305 .text:00000080 _cleanUp |
CamInterfaceAsm.S:223 .text:00000034 _trackFrame |
CamInterfaceAsm.S:240 .text:00000044 _acquirePixelBlock |
CamInterfaceAsm.S:281 .text:00000074 _cleanUpTrackingLine |
CamInterfaceAsm.S:292 .text:00000080 _cleanUpDumpLine |
CamInterfaceAsm.S:316 .text:0000008c _exit |
CamInterfaceAsm.S:380 .text:000000ba _dumpFrame |
CamInterfaceAsm.S:400 .text:000000c8 _sampleDumpPixel |
CamInterfaceAsm.S:487 .text:000000e6 __vector_default |
|
UNDEFINED SYMBOLS |
__vector_9 |
fastEventBitmask |
GAS LISTING /tmp/cckBHomO.s page 30 |
|
|
DEFINED SYMBOLS |
*ABS*:00000000 CamInterfaceAsm.S |
CamInterfaceAsm.S:119 *ABS*:00000010 pixelCount |
CamInterfaceAsm.S:120 *ABS*:00000011 pixelRunStart |
CamInterfaceAsm.S:121 *ABS*:00000012 lastColor |
CamInterfaceAsm.S:122 *ABS*:00000013 tmp1 |
CamInterfaceAsm.S:123 *ABS*:00000014 tmp2 |
CamInterfaceAsm.S:124 *ABS*:00000013 color |
CamInterfaceAsm.S:125 *ABS*:00000014 greenData |
CamInterfaceAsm.S:126 *ABS*:00000015 blueData |
CamInterfaceAsm.S:127 *ABS*:00000016 colorMapLow |
CamInterfaceAsm.S:128 *ABS*:00000017 colorMapHigh |
CamInterfaceAsm.S:129 *ABS*:00000016 prevLineBuffLow |
CamInterfaceAsm.S:130 *ABS*:00000017 prevLineBuffHigh |
CamInterfaceAsm.S:131 *ABS*:00000018 currLineBuffLow |
CamInterfaceAsm.S:132 *ABS*:00000019 currLineBuffHigh |
CamInterfaceAsm.S:169 .text:00000000 CamIntAsm_waitForNewTrackingFrame |
CamInterfaceAsm.S:335 .text:0000008e CamIntAsm_waitForNewDumpFrame |
CamInterfaceAsm.S:345 .text:00000094 CamIntAsm_acquireDumpLine |
CamInterfaceAsm.S:179 .text:00000006 CamIntAsm_acquireTrackingLine |
CamInterfaceAsm.S:423 .text:000000d4 __vector_1 |
CamInterfaceAsm.S:438 .text:000000d6 __vector_2 |
CamInterfaceAsm.S:474 .text:000000d8 __vector_8 |
CamInterfaceAsm.S:305 .text:00000080 _cleanUp |
CamInterfaceAsm.S:223 .text:00000034 _trackFrame |
CamInterfaceAsm.S:240 .text:00000044 _acquirePixelBlock |
CamInterfaceAsm.S:281 .text:00000074 _cleanUpTrackingLine |
CamInterfaceAsm.S:292 .text:00000080 _cleanUpDumpLine |
CamInterfaceAsm.S:316 .text:0000008c _exit |
CamInterfaceAsm.S:380 .text:000000ba _dumpFrame |
CamInterfaceAsm.S:400 .text:000000c8 _sampleDumpPixel |
CamInterfaceAsm.S:487 .text:000000e6 __vector_default |
|
UNDEFINED SYMBOLS |
__vector_9 |
fastEventBitmask |