1		ifndef	__regm406inc
2__regm406inc	equ	1
3                save
4                listing off   ; no listing over this file
5
6;****************************************************************************
7;*                                                                          *
8;*   AS 1.42 - File REGM406.INC                                             *
9;*                                                                          *
10;*   Contains Bit & Register Definitions for ATmega406                      *
11;*                                                                          *
12;****************************************************************************
13
14;----------------------------------------------------------------------------
15; Memory Limits
16
17E2END           equ	511
18RAMSTART	equ	0x100,data
19RAMEND		equ	0x8ff,data
20FLASHEND	label	0x9fff
21
22;----------------------------------------------------------------------------
23; Chip Control
24
25MCUCR		port	0x35		; MCU Control Register
26IVCE		avrbit	MCUCR,0		; Interrupt Vector Change Enable
27IVSEL		avrbit	MCUCR,1		; Interrupt Vector Select
28
29MCUSR		port	0x34		; MCU Status Register
30PORF		avrbit	MCUSR,0		; Power-On Reset Occured
31EXTRF		avrbit	MCUSR,1		; External Reset Occured
32BORF		avrbit	MCUSR,2		; Brown-Out Reset Occured
33WDRF		avrbit	MCUSR,3		; Watchdog Reset Occured
34
35SMCR		port	0x33		; Sleep Mode Control Register
36SE		avrbit	SMCR,0		; Sleep Mode Enable
37SM0		avrbit	SMCR,1		; Sleep Mode Select
38SM1		avrbit	SMCR,2
39SM2		avrbit	SMCR,3
40
41PRR0		sfr	0x64		; Power Reduction Register 0
42PRVADC		avrbit	PRR0,0		; Power Reduction Voltage ADC
43PRTIM0		avrbit	PRR0,1		; Power Reduction Timer/Counter 0
44PRTIM1		avrbit	PRR0,2		; Power Reduction Timer/Counter 1
45PRTWI		avrbit	PRR0,3		; Power Reduction Two Wire Interface
46
47FOSCCAL		sfr	0x66		; Fast Oscillator Calibration
48
49CCSR		sfr	0xc0		; Clock Control and Status Register
50XOE		avrbit	CCSR,1		; 32 kHz Crystal Oscillator Enable
51ACS		avrbit	CCSR,0		; Asynchronous Clock Select
52
53WUTCSR		sfr	0x62		; Wake-up Timer Control and Status Register
54WUTIF		avrbit	WUTCSR,7	; Wake-up Timer Interrupt Flag
55WUTIE		avrbit	WUTCSR,6	; Wake-up Timer Interrupt Enable
56WUTCF		avrbit	WUTCSR,5	; Wake-up Timer Calibration Flag
57WUTR		avrbit	WUTCSR,4	; Wake-up Timer Reset
58WUTE		avrbit	WUTCSR,3	; Wake-up Timer Enable
59WUTP2		avrbit	WUTCSR,2	; Wake-up Timer Prescaler 2, 1, and 0
60WUTP1		avrbit	WUTCSR,1
61WUTP0		avrbit	WUTCSR,0
62
63BGCCR		sfr	0xd0		; Bandgap Calibration C Register
64BGEN		avrbit	BGCCR,7		; reserved
65BGCC5		avrbit	BGCCR,5		; BG Calibration of PTAT Current
66BGCC4		avrbit	BGCCR,4
67BGCC3		avrbit	BGCCR,3
68BGCC2		avrbit	BGCCR,2
69BGCC1		avrbit	BGCCR,1
70BGCC0		avrbit	BGCCR,0
71
72BGCRR		sfr	0xd1		; Bandgap Calibration R Register
73BGCR7		avrbit	BGCRR,7		; BG Calibration of Resistor Ladder
74BGCR6		avrbit	BGCRR,6
75BGCR5		avrbit	BGCRR,5
76BGCR4		avrbit	BGCRR,4
77BGCR3		avrbit	BGCRR,3
78BGCR2		avrbit	BGCRR,2
79BGCR1		avrbit	BGCRR,1
80BGCR0		avrbit	BGCRR,0
81
82;----------------------------------------------------------------------------
83; EEPROM/Program Memory Access
84
85		include	"eem2.inc"
86		include	"spmcsr37.inc"
87
88EEPM0		avrbit	EECR,4		; EEPROM Programming Mode
89EEPM1		avrbit	EECR,5
90
91SIGRD		avrbit	SPMCSR,5	; Signature Row Read
92
93;----------------------------------------------------------------------------
94; JTAG
95
96JTD		avrbit	MCUCR,7		; JTAG Disable
97
98JTRF		avrbit	MCUSR,4		; JTAG Reset Occured
99
100OCDR		port	0x31		; On-Chip Debug Register
101
102;----------------------------------------------------------------------------
103; GPIO
104
105PINA		port	0x00		; Port A @ 0x00 (IO) ff.
106PINB		port	0x03		; Port B @ 0x03 (IO) ff.
107PORTC		port	0x08		; Port C @ 0x08 (Inp only)
108PIND		port	0x09		; Port D @ 0x09 (IO) ff.
109
110PCMSK0		sfr	0x6b		; Pin Change Mask Register 0
111PCMSK1		sfr	0x6c		; Pin Change Mask Register 1
112PCICR		sfr	0x68		; Pin Change Interrupt Control Register
113PCIFR		port	0x1b		; Pin Change Interrupt Flag Register
114
115GPIOR0		port	0x1e		; General Purpose I/O Registers
116GPIOR1		port	0x2a
117GPIOR2		port	0x2b
118
119;----------------------------------------------------------------------------
120; Interrupt Vectors
121
122		enumconf 2,code
123		enum	 BPINT_vect=2		; battery protection Interrupt
124		nextenum INT0_vect		; External Interrupt Request 0
125		nextenum INT1_vect		; External Interrupt Request 1
126		nextenum INT2_vect		; External Interrupt Request 2
127		nextenum INT3_vect		; External Interrupt Request 3
128		nextenum PCINT0_vect		; Pin Change Interrupt Request 0
129		nextenum PCINT1_vect		; Pin Change Interrupt Request 1
130		nextenum WDT_vect		; Watchdog Time-Out Interrupt
131		nextenum WAKE_UP_vect		; Wake-Up Timer Overflow
132		nextenum TIMER1_COMP_vect	; Timer/Counter 1 Compare Match
133		nextenum TIMER1_OVF_vect	; Timer/Counter 1 Overflow
134		nextenum TIMER0_COMPA_vect	; Timer/Counter 0 Compare Match A
135		nextenum TIMER0_COMPB_vect	; Timer/Counter 0 Compare Match B
136		nextenum TIMER0_OVF_vect	; Timer/Counter 0 Overflow
137		nextenum TWI_BUS_CD_vect	; Two-Wire Bus Connect/Disconnect
138		nextenum TWI_vect		; 2-Wire Transfer Complete
139		nextenum VADC_vect		; Voltage ADC Conversion Complete
140		nextenum CCADC_CONV_vect	; CC-ADC Instantaneous Current Conversion Complete
141		nextenum CCADC_REG_CUR_vect	; CC-ADC Regular Current
142		nextenum CCADC_ACC_vect		; CC-ADC Accumulate Current Conversion Complete
143		nextenum EE_READY_vect		; EEPROM Ready
144		nextenum SPM_READY_vect		; Store Program Memory Ready
145
146;----------------------------------------------------------------------------
147; External Interrupts
148
149EICRA		sfr	0x69		; External Interrupt Control Register A
150ISC00		avrbit	EICRA,0		; External Interrupt 0 Sense Control
151ISC01		avrbit	EICRA,1
152ISC10		avrbit	EICRA,2		; External Interrupt 1 Sense Control
153ISC11		avrbit	EICRA,3
154ISC20		avrbit	EICRA,4		; External Interrupt 2 Sense Control
155ISC21		avrbit	EICRA,5
156ISC30		avrbit	EICRA,6		; External Interrupt 3 Sense Control
157ISC31		avrbit	EICRA,7
158
159EIMSK		port	0x1d		; External Interrupt Mask Register
160INT0		avrbit	EIMSK,0		; Enable External Interrupt 0
161INT1		avrbit	EIMSK,1		; Enable External Interrupt 1
162INT2		avrbit	EIMSK,2		; Enable External Interrupt 2
163INT3		avrbit	EIMSK,3		; Enable External Interrupt 3
164
165EIFR		port	0x1c		; External Interrupt Flag Register
166INTF0		avrbit	EIFR,0		; External Interrupt 0 Occured
167INTF1		avrbit	EIFR,1		; External Interrupt 1 Occured
168INTF2		avrbit	EIFR,2		; External Interrupt 2 Occured
169INTF3		avrbit	EIFR,3		; External Interrupt 3 Occured
170
171;----------------------------------------------------------------------------
172; Timers
173
174GTCCR		port	0x23		; General Timer/Counter Control Register
175PSRSYNC		avrbit	GTCCR,0		; Prescaler Reset
176TSM		avrbit	GTCCR,7		; Timer/Counter Synchronization Mode
177
178TCCR0A		port	0x24		; Timer/Counter 0 Control Register A
179WGM00		avrbit	TCCR0A,0	; Timer/Counter 0 Waveform Generation Mode
180WGM01		avrbit	TCCR0A,1
181COM0B0		avrbit	TCCR0A,4	; Timer/Counter 0 Compare B Mode
182COM0B1		avrbit	TCCR0A,5
183COM0A0		avrbit	TCCR0A,6	; Timer/Counter 0 Compare A Mode
184COM0A1		avrbit	TCCR0A,7
185TCCR0B		port	0x25		; Timer/Counter 0 Control Register B
186CS00		avrbit	TCCR0B,0	; Timer/Counter 0 Clock Select
187CS01		avrbit	TCCR0B,1
188CS02		avrbit	TCCR0B,2
189WGM02		avrbit	TCCR0B,3	; Timer/Counter 0 Waveform Generation Mode
190FOC0B		avrbit	TCCR0B,6	; Timer/Counter 0 Force Output Compare B
191FOC0A		avrbit	TCCR0B,7	; Timer/Counter 0 Force Output Compare A
192TCNT0		port	0x26		; Timer/Counter 0
193OCR0A		port	0x27		; Timer/Counter 0 Output Compare Value A
194OCR0B		port	0x28		; Timer/Counter 0 Output Compare Value B
195
196TCCR1B		sfr	0x81		; Timer/Counter 1 Control Register B
197CS10		avrbit	TCCR1B,0	; Timer/Counter 1 Prescaler Setting
198CS11		avrbit	TCCR1B,1
199CS12		avrbit	TCCR1B,2
200CTC1		avrbit	TCCR1B,3	; Timer/Counter 1 Clear on Match
201TCNT1L		sfr	0x84		; Timer/Counter 1 Value LSB
202TCNT1H		sfr	0x85		; Timer/Counter 1 Value MSB
203OCR1AL		sfr	0x88		; Timer/Counter 1 Output Compare Value A LSB
204OCR1AH		sfr	0x89		; Timer/Counter 1 Output Compare Value A MSB
205
206TIMSK0		sfr	0x6e		; Timer/Counter 0 Interrupt Mask Register
207TOIE0		avrbit	TIMSK0,0	; Timer/Counter 0 Overflow Interrupt Enable
208OCIE0A		avrbit	TIMSK0,1	; Timer/Counter 0 Output Compare Interrupt Enable A
209OCIE0B		avrbit	TIMSK0,2	; Timer/Counter 0 Output Compare Interrupt Enable B
210TIMSK1		sfr	0x6f		; Timer/Counter 1 Interrupt Mask Register
211TOIE1		avrbit	TIMSK1,0	; Timer/Counter 1 Overflow Interrupt Enable
212OCIE1A		avrbit	TIMSK1,1	; Timer/Counter 1 Output Compare Interrupt Enable A
213ICIE1		avrbit	TIMSK1,5	; Timer/Counter 1 Input Capture Event
214
215TIFR0		port	0x15		; Timer/Counter 0 Interrupt Status Register
216TIFR1		port	0x16		; Timer/Counter 1 Interrupt Status Register
217
218;----------------------------------------------------------------------------
219; Watchdog Timer
220
221		include	"wdme.inc"
222
223;----------------------------------------------------------------------------
224; TWI
225
226		include	"twimb8.inc"
227
228TWBCSR		sfr	0xbe		; TWI Bus Control and Status Register
229TWBCIF		avrbit	TWBCSR,7	; TWI Bus Connect/Disconnect Interrupt Flag
230TWBCIE		avrbit	TWBCSR,6	; TWI Bus Connect/Disconnect Interrupt Enable
231TWBDT1		avrbit	TWBCSR,2	; TWI Bus Disconnect Time-Out Period
232TWBDT0		avrbit	TWBCSR,1
233TWBCIP		avrbit	TWBCSR,0	; TWI Bus Connect/Disconnect Interrupt Polarity
234
235;----------------------------------------------------------------------------
236; Coulomb Counter
237
238CADCSRA		sfr	0xe4		; CC-ADC Control and Status Register A
239CADSE		avrbit	CADCSRA,0	; CC-ADC Current Sampling Enable
240CADIS0		avrbit	CADCSRA,1	; CC-ADC Current Sampling Interval
241CADIS1		avrbit	CADCSRA,2
242CADAS0		avrbit	CADCSRA,3	; CC-ADC Accumulate Current Select
243CADAS1		avrbit	CADCSRA,4
244CADUB		avrbit	CADCSRA,5	; CADUB: CC-ADC Update Busy
245CADEN		avrbit	CADCSRA,7	; CC-ADC Enable
246
247CADCSRB		sfr	0xe5		; CC-ADC Control and Status Register B
248CADACIE		avrbit	CADCSRB,6	; CC-ADC Accumulate Current Interrupt Enable
249CADRCIE		avrbit	CADCSRB,5	; CC-ADC Regular Current Interrupt Enable
250CADICIE		avrbit	CADCSRB,4	; CC-ADC Instantaneous Current Interrupt Enable
251CADACIF		avrbit	CADCSRB,2	; CC-ADC Accumulate Current Interrupt Flag
252CADRCIF		avrbit	CADCSRB,1	; CC-ADC Regular Current Interrupt Flag
253CADICIF		avrbit	CADCSRB,0	; CC-ADC Instantaneous Current Interrupt Flag
254
255CADICL		sfr	0xe8		; CC-ADC Instantaneous Current
256CADICH		sfr	0xe9
257
258CADAC0		sfr	0xe0		; CC-ADC Accumulate Current
259CADAC1		sfr	0xe1
260CADAC2		sfr	0xe2
261CADAC3		sfr	0xe3
262
263CADRCC		sfr	0xe6		; CC-ADC Regular Charge Current
264
265CADRDC		sfr	0xe7		; CC-ADC Regular Discharge Current
266
267;----------------------------------------------------------------------------
268; Voltage A/D Converter
269
270VADMUX		sfr	0x7c		; Multiplexer Selection Register
271VADMUX0		avrbit	VADMUX,0	; Channel Selection Bits
272VADMUX1		avrbit	VADMUX,1
273VADMUX2		avrbit	VADMUX,2
274VADMUX3		avrbit	VADMUX,3
275
276VADCSR		sfr	0x7a		; Control and Status Register
277VADCCIE		avrbit	VADCSR,0	; V-ADC Conversion Complete Interrupt Enable
278VADCCIF		avrbit	VADCSR,1	; V-ADC Conversion Complete Interrupt Flag
279VADSC		avrbit	VADCSR,2	; Voltage ADC Start Conversion
280VADEN		avrbit	VADCSR,3	; V-ADC Enable
281
282VADCL		sfr	0x78		; V-ADC Data Register
283VADCH		sfr	0x79
284
285DIDR0		sfr	0x7e		; Digital Input Disable Register 0
286VADC0D		avrbit	DIDR0,0		; V-ADC0 Digital Input Disable
287VADC1D		avrbit	DIDR0,1		; V-ADC1 Digital Input Disable
288VADC2D		avrbit	DIDR0,2		; V-ADC2 Digital Input Disable
289VADC3D		avrbit	DIDR0,3		; V-ADC3 Digital Input Disable
290
291;----------------------------------------------------------------------------
292; FET Control
293
294FCSR		sfr	0xf0		; FET Control and Status Register
295PWMOC		avrbit	FCSR,5		; Pulse Width Modulation of OC Output
296PWMOPC		avrbit	FCSR,4		; Pulse Width Modulation of OPC Output
297CPS		avrbit	FCSR,3		; Current Protection Status
298DFE		avrbit	FCSR,2		; Discharge FET Enable
299CFE		avrbit	FCSR,1		; Charge FET Enable
300PFD		avrbit	FCSR,0		; Precharge FET Disable
301
302;----------------------------------------------------------------------------
303; Cell Balancing
304
305CBCR		sfr	0xf1		; Cell Balancing Control Register
306CBE4		avrbit	CBCR,3		; Cell Balancing Enable 4
307CBE3		avrbit	CBCR,2		; Cell Balancing Enable 3
308CBE2		avrbit	CBCR,1		; Cell Balancing Enable 2
309CBE1		avrbit	CBCR,0		; Cell Balancing Enable 1
310
311;----------------------------------------------------------------------------
312; Battery Protection
313
314BPPLR		sfr	0xf8		; Battery Protection Parameter Lock Register
315BPPLE		avrbit	BPPLR,1		; Battery Protection Parameter Lock Enable
316BPPL		avrbit	BPPLR,0		; Battery Protection Parameter Lock
317
318BPCR		sfr	0xf7		; Battery Protection Control Register
319DUVD		avrbit	BPCR,3		; Deep Under-Voltage Protection Disable
320SCD		avrbit	BPCR,2		; Short Circuit Protection Disabled
321DCD		avrbit	BPCR,1		; Discharge Over-Current Protection Disable
322CCD		avrbit	BPCR,0		; Charge Over-Current Protection Disable
323
324CBPTR		sfr	0xf6		; Current Battery Protection Timing Register
325SCPT3		avrbit	CBPTR,7		; Short-Circuit Protection Timing
326SCPT2		avrbit	CBPTR,6
327SCPT1		avrbit	CBPTR,5
328SCPT0		avrbit	CBPTR,4
329OCPT3		avrbit	CBPTR,3		; Over-Current Protection Timing
330OCPT2		avrbit	CBPTR,2
331OCPT1		avrbit	CBPTR,1
332OCPT0		avrbit	CBPTR,0
333
334BPOCD		sfr	0xf5		; Battery Protection Over-Current Detection Level Register
335DCDL3		avrbit	BPOCD,7		; Discharge Over-Current Detection Level
336DCDL2		avrbit	BPOCD,6
337DCDL1		avrbit	BPOCD,5
338DCDL0		avrbit	BPOCD,4
339CCDL3		avrbit	BPOCD,3		; Charge Over-Current Detection Level
340CCDL2		avrbit	BPOCD,2
341CCDL1		avrbit	BPOCD,1
342CCDL0		avrbit	BPOCD,0
343
344BPSCD		sfr	0xf4		; Battery Protection Short-Circuit Detection Level Register
345SCDL3		avrbit	BPSCD,3		; Short-Circuit Detection Level
346SCDL2		avrbit	BPSCD,2
347SCDL1		avrbit	BPSCD,1
348SCDL0		avrbit	BPSCD,0
349
350BPDUV		sfr	0xf3		; Battery Protection Deep Under Voltage Register
351DUVT1		avrbit	BPDUV,5		; Deep Under-Voltage Timing
352DUVT0		avrbit	BPDUV,4
353DUDL3		avrbit	BPDUV,3		; Deep Under-Voltage Detection Level
354DUDL2		avrbit	BPDUV,2
355DUDL1		avrbit	BPDUV,1
356DUDL0		avrbit	BPDUV,0
357
358BPIR		sfr	0xf2		; Battery Protection Interrupt Register
359DUVIF		avrbit	BPIR,7		; Deep Under-Voltage Early Warning Interrupt Flag
360COCIF		avrbit	BPIR,6		; Charge Over-Current Protection Activated Interrupt Flag
361DOCIF		avrbit	BPIR,5		; Discharge Over-Current Protection Activated Interrupt Flag
362SCIF		avrbit	BPIR,4		; Short-Circuit Protection Activated Interrupt Flag
363DUVIE		avrbit	BPIR,3		; Deep Under-Voltage Early Warning Interrupt Enable
364COCIE		avrbit	BPIR,2		; Charge Over-Current Protection Activated Interrupt Enable
365DOCIE		avrbit	BPIR,1		; Discharge Over-Current Protection Activated Interrupt Enable
366SCIE		avrbit	BPIR,0		; Short-Circuit Protection Activated Interrupt Enable
367
368		restore			; re-enable listing
369
370		endif			; __regm406inc
371