~ubuntu-branches/ubuntu/lucid/avr-libc/lucid

« back to all changes in this revision

Viewing changes to include/io76c711.h

  • Committer: Bazaar Package Importer
  • Author(s): Hakan Ardo
  • Date: 2005-03-19 11:16:14 UTC
  • mfrom: (1.1.1 upstream) (2.1.2 hoary)
  • Revision ID: james.westby@ubuntu.com-20050319111614-4g01s2ftv5x5nxf3
Tags: 1:1.2.3-3
* Added build depends on netpbm
* Added build depends on tetex-extra

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
   io76c711.h - internal register definitions for AT76C711
3
 
 
4
 
   Contributors:
5
 
     Created by Marek Michalkiewicz <marekm@linux.org.pl>
6
 
 
7
 
   THIS SOFTWARE IS NOT COPYRIGHTED
8
 
 
9
 
   This source code is offered for use in the public domain.  You may
10
 
   use, modify or distribute it freely.
11
 
 
12
 
   This code is distributed in the hope that it will be useful, but
13
 
   WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
14
 
   DISCLAIMED.  This includes but is not limited to warranties of
15
 
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16
 
 
17
 
   Based on (advance information?) Atmel datasheet Rev. 1643A-10/00.
18
 
 */
19
 
 
20
 
#ifndef __IO76C711
21
 
#define __IO76C711 1
22
 
 
23
 
#define AVR_MEGA 1
24
 
#define AVR_ENHANCED 1
25
 
 
26
 
/* I/O space addresses */
27
 
 
28
 
/* 0x00-0x0C reserved */
29
 
 
30
 
/* SPI */
31
 
#define SPCR    0x0D
32
 
#define SPSR    0x0E
33
 
#define SPDR    0x0F
34
 
 
35
 
/* Port D */
36
 
#define PIND    0x10
37
 
#define DDRD    0x11
38
 
#define PORTD   0x12
39
 
 
40
 
/* Peripheral Enable Register */
41
 
#define PERIPHEN 0x13
42
 
 
43
 
/* Clock Control Register */
44
 
#define CLK_CNTR 0x14
45
 
 
46
 
/* Data Register, Port C */
47
 
#define PORTC   0x15
48
 
 
49
 
/* Port B */
50
 
#define PINB    0x16
51
 
#define DDRB    0x17
52
 
#define PORTB   0x18
53
 
 
54
 
/* Port A */
55
 
#define PINA    0x19
56
 
#define DDRA    0x1A
57
 
#define PORTA   0x1B
58
 
 
59
 
/* 0x1C-0x1F reserved */
60
 
 
61
 
#define IRDAMOD 0x20
62
 
 
63
 
#define WDTCR   0x21
64
 
 
65
 
/* 0x22-0x25 reserved */
66
 
/* Timer 1 */
67
 
#define ICR1L   0x26
68
 
#define ICR1H   0x27
69
 
#define OCR1BL  0x28
70
 
#define OCR1BH  0x29
71
 
#define OCR1AL  0x2A
72
 
#define OCR1AH  0x2B
73
 
#define TCNT1L  0x2C
74
 
#define TCNT1H  0x2D
75
 
#define TCCR1B  0x2E
76
 
#define TCCR1A  0x2F
77
 
 
78
 
/* 0x30 reserved */
79
 
 
80
 
/* Timer 0 */
81
 
#define PRELD   0x31
82
 
#define TCNT0   0x32
83
 
#define TCCR0   0x33
84
 
 
85
 
#define MCUSR   0x34
86
 
#define MCUCR   0x35
87
 
 
88
 
#define TIFR    0x36
89
 
#define TIMSK   0x37
90
 
 
91
 
/* 0x38 reserved */
92
 
 
93
 
#define EIMSK   0x39
94
 
 
95
 
/* 0x3A-0x3C reserved */
96
 
 
97
 
#define SPL     0x3D
98
 
#define SPH     0x3E
99
 
#define SREG    0x3F
100
 
 
101
 
 
102
 
/* Interrupt vectors (byte addresses) */
103
 
/* XXX - the datasheet shows each vector as using one word of program
104
 
   memory, which only allows RJMP, even though the thing has 16K bytes
105
 
   of program memory so each vector should be a JMP instruction to reach
106
 
   the entire program memory address space.
107
 
   Assuming JMP for now - could be wrong, ask Atmel to be sure...  */
108
 
 
109
 
#define SIG_SUSPEND_RESUME      _vector_1
110
 
#define SIG_INTERRUPT0          _vector_2
111
 
#define SIG_INPUT_CAPTURE1      _vector_3
112
 
#define SIG_OUTPUT_COMPARE1A    _vector_4
113
 
#define SIG_OUTPUT_COMPARE1B    _vector_5
114
 
#define SIG_OVERFLOW1           _vector_6
115
 
#define SIG_OVERFLOW0           _vector_7
116
 
#define SIG_SPI                 _vector_8
117
 
#define SIG_TDMAC               _vector_9
118
 
#define SIG_UART0               _vector_10
119
 
#define SIG_RDMAC               _vector_11
120
 
#define SIG_UART1               _vector_12
121
 
#define SIG_INTERRUPT0          _vector_13
122
 
 
123
 
#define END_VECTOR              (13)
124
 
#define INT_VECT_SIZE (0x3c)
125
 
 
126
 
/* Bit numbers */
127
 
 
128
 
/* EIMSK */
129
 
/* bits 7-4 reserved */
130
 
#define POL1    3
131
 
#define POL0    2
132
 
#define INT1    1
133
 
#define INT0    0
134
 
 
135
 
/* TIMSK */
136
 
#define TOIE1   7
137
 
#define OCIE1A  6
138
 
#define OCIE1B  5
139
 
/* bit 4 reserved */
140
 
#define TICIE1  3
141
 
/* bit 2 reserved */
142
 
#define TOIE0   1
143
 
/* bit 0 reserved */
144
 
 
145
 
/* TIFR */
146
 
#define TOV1    7
147
 
#define OCF1A   6
148
 
#define OCF1B   5
149
 
/* bit 4 reserved */
150
 
#define ICF1    3
151
 
/* bit 2 reserved */
152
 
#define TOV0    1
153
 
/* bit 0 reserved */
154
 
 
155
 
/* MCUCR */
156
 
/* bits 7-6 reserved */
157
 
#define SE      5
158
 
#define SM1     4
159
 
#define SM0     3
160
 
/* bits 2-0 reserved */
161
 
 
162
 
/* MCUSR */
163
 
/* bits 7-2 reserved */
164
 
#define EXTRF   1
165
 
#define PORF    0
166
 
 
167
 
/* TCCR0 */
168
 
/* bits 7-6 reserved */
169
 
#define COM01   5
170
 
#define COM00   4
171
 
#define CTC0    3
172
 
#define CS02    2
173
 
#define CS01    1
174
 
#define CS00    0
175
 
 
176
 
/* TCCR1A */
177
 
#define COM1A1  7
178
 
#define COM1A0  6
179
 
#define COM1B1  5
180
 
#define COM1B0  4
181
 
/* bits 3-0 reserved */
182
 
 
183
 
/* TCCR1B */
184
 
#define ICNC1   7
185
 
#define ICES1   6
186
 
/* bits 5-4 reserved */
187
 
#define CTC1    3
188
 
#define CS12    2
189
 
#define CS11    1
190
 
#define CS10    0
191
 
 
192
 
/* WDTCR */
193
 
/* bits 7-5 reserved */
194
 
#define WDTOE   4
195
 
#define WDE     3
196
 
#define WDP2    2
197
 
#define WDP1    1
198
 
#define WDP0    0
199
 
 
200
 
/* IRDAMOD */
201
 
/* bits 7-3 reserved */
202
 
#define POL     2
203
 
#define MODE    1
204
 
#define EN      0
205
 
 
206
 
/* PORTA */
207
 
#define PA7     7
208
 
#define PA6     6
209
 
#define PA5     5
210
 
#define PA4     4
211
 
#define PA3     3
212
 
#define PA2     2
213
 
#define PA1     1
214
 
#define PA0     0
215
 
 
216
 
/* DDRA */
217
 
#define DDA7    7
218
 
#define DDA6    6
219
 
#define DDA5    5
220
 
#define DDA4    4
221
 
#define DDA3    3
222
 
#define DDA2    2
223
 
#define DDA1    1
224
 
#define DDA0    0
225
 
 
226
 
/* PINA */
227
 
#define PINA7   7
228
 
#define PINA6   6
229
 
#define PINA5   5
230
 
#define PINA4   4
231
 
#define PINA3   3
232
 
#define PINA2   2
233
 
#define PINA1   1
234
 
#define PINA0   0
235
 
 
236
 
/*
237
 
   PB7 = SCK
238
 
   PB6 = MISO
239
 
   PB5 = MOSI
240
 
   PB4 = SS#
241
 
   PB2 = ICP
242
 
   PB1 = T1
243
 
   PB0 = T0
244
 
 */
245
 
 
246
 
/* PORTB */
247
 
#define PB7     7
248
 
#define PB6     6
249
 
#define PB5     5
250
 
#define PB4     4
251
 
#define PB3     3
252
 
#define PB2     2
253
 
#define PB1     1
254
 
#define PB0     0
255
 
 
256
 
/* DDRB */
257
 
#define DDB7    7
258
 
#define DDB6    6
259
 
#define DDB5    5
260
 
#define DDB4    4
261
 
#define DDB3    3
262
 
#define DDB2    2
263
 
#define DDB1    1
264
 
#define DDB0    0
265
 
 
266
 
/* PINB */
267
 
#define PINB7   7
268
 
#define PINB6   6
269
 
#define PINB5   5
270
 
#define PINB4   4
271
 
#define PINB3   3
272
 
#define PINB2   2
273
 
#define PINB1   1
274
 
#define PINB0   0
275
 
 
276
 
/* PORTC */
277
 
/* bits 7-4 reserved */
278
 
#define PC3      3
279
 
#define PC2      2
280
 
#define PC1      1
281
 
#define PC0      0
282
 
 
283
 
/*
284
 
   PD7 = INT1 / OC1B
285
 
   PD6 = INT0 / OC1A
286
 
   PD1 = TXD
287
 
   PD0 = RXD
288
 
 */
289
 
 
290
 
/* PORTD */
291
 
#define PD7      7
292
 
#define PD6      6
293
 
#define PD5      5
294
 
#define PD4      4
295
 
#define PD3      3
296
 
#define PD2      2
297
 
#define PD1      1
298
 
#define PD0      0
299
 
 
300
 
/* DDRD */
301
 
#define DDD7    7
302
 
#define DDD6    6
303
 
#define DDD5    5
304
 
#define DDD4    4
305
 
#define DDD3    3
306
 
#define DDD2    2
307
 
#define DDD1    1
308
 
#define DDD0    0
309
 
 
310
 
/* PIND */
311
 
#define PIND7   7
312
 
#define PIND6   6
313
 
#define PIND5   5
314
 
#define PIND4   4
315
 
#define PIND3   3
316
 
#define PIND2   2
317
 
#define PIND1   1
318
 
#define PIND0   0
319
 
 
320
 
/* CLK_CNTR */
321
 
/* bits 7-5 reserved */
322
 
#define UOSC    4
323
 
#define UCK     3
324
 
#define IRCK    2
325
 
/* bits 1-0 reserved */
326
 
 
327
 
/* PERIPHEN */
328
 
/* bits 7-3 reserved */
329
 
#define IRDA    2
330
 
#define UART    1
331
 
#define USB     0
332
 
 
333
 
/* SPSR */
334
 
#define SPIF    7
335
 
#define WCOL    6
336
 
/* bits 5-0 reserved */
337
 
 
338
 
/* SPCR */
339
 
#define SPIE    7
340
 
#define SPE     6
341
 
#define DORD    5
342
 
#define MSTR    4
343
 
#define CPOL    3
344
 
#define CPHA    2
345
 
#define SPR1    1
346
 
#define SPR0    0
347
 
 
348
 
/* Memory mapped registers */
349
 
 
350
 
/* UART */
351
 
#define UART0_BASE 0x2020
352
 
#define UART1_BASE 0x2030
353
 
/* offsets from the base address */
354
 
#define US_RHR          0x00
355
 
#define US_THR          0x00
356
 
#define US_IER          0x01
357
 
#define US_FCR          0x02
358
 
#define US_PMR          0x03
359
 
#define US_MR           0x04
360
 
#define US_CSR          0x05
361
 
#define US_CR           0x06
362
 
#define US_BL           0x07
363
 
#define US_BM           0x08
364
 
#define US_RTO          0x09
365
 
#define US_TTG          0x0A
366
 
 
367
 
/* DMA */
368
 
#define DMA_BASE 0x2000
369
 
/* offsets from the base address */
370
 
#define TXTADL          0x01
371
 
#define TXPLL           0x03
372
 
#define TXPLM           0x04
373
 
#define TXTPLL          0x05
374
 
#define TXTPLM          0x06
375
 
#define RXTADL          0x07
376
 
#define RXTADMEN        0x08
377
 
#define RSPLL           0x09
378
 
#define RXPLM           0x0A
379
 
#define RXTPLL          0x0B
380
 
#define RXTPLM          0x0C
381
 
#define INTCST          0x0D
382
 
/* XXX DPORG register mentioned on page 20, but undocumented */
383
 
 
384
 
/* XXX Program Memory Control Bit mentioned on page 20, but undocumented */
385
 
#define PROGRAM_MEMORY_CONTROL_BIT 0x2040
386
 
 
387
 
/* USB */
388
 
#define USB_BASE 0x1000
389
 
/* offsets from the base address */
390
 
#define FRM_NUM_H       0x0FD
391
 
#define FRM_NUM_L       0x0FC
392
 
#define GLB_STATE       0x0FB
393
 
#define SPRSR           0x0FA
394
 
#define SPRSIE          0x0F9
395
 
#define UISR            0x0F7
396
 
#define UIAR            0x0F5
397
 
#define FADDR           0x0F2
398
 
#define ENDPPGPG        0x0F1
399
 
#define ECR0            0x0EF
400
 
#define ECR1            0x0EE
401
 
#define ECR2            0x0ED
402
 
#define ECR3            0x0EC
403
 
#define ECR4            0x0EB
404
 
#define ECR5            0x0EA
405
 
#define ECR6            0x0E9
406
 
#define ECR7            0x0E8
407
 
#define CSR0            0x0DF
408
 
#define CSR1            0x0DE
409
 
#define CSR2            0x0DD
410
 
#define CSR3            0x0DC
411
 
#define CSR4            0x0DB
412
 
#define CSR5            0x0DA
413
 
#define CSR6            0x0D9
414
 
#define CSR7            0x0D8
415
 
#define FDR0            0x0CF
416
 
#define FDR1            0x0CE
417
 
#define FDR2            0x0CD
418
 
#define FDR3            0x0CC
419
 
#define FDR4            0x0CB
420
 
#define FDR5            0x0CA
421
 
#define FDR6            0x0C9
422
 
#define FDR7            0x0C8
423
 
#define FBYTE_CNT0_L    0x0BF
424
 
#define FBYTE_CNT1_L    0x0BE
425
 
#define FBYTE_CNT2_L    0x0BD
426
 
#define FBYTE_CNT3_L    0x0BC
427
 
#define FBYTE_CNT4_L    0x0BB
428
 
#define FBYTE_CNT5_L    0x0BA
429
 
#define FBYTE_CNT6_L    0x0B9
430
 
#define FBYTE_CNT7_L    0x0B8
431
 
#define FBYTE_CNT0_H    0x0AF
432
 
#define FBYTE_CNT1_H    0x0AE
433
 
#define FBYTE_CNT2_H    0x0AD
434
 
#define FBYTE_CNT3_H    0x0AC
435
 
#define FBYTE_CNT4_H    0x0AB
436
 
#define FBYTE_CNT5_H    0x0AA
437
 
#define FBYTE_CNT6_H    0x0A9
438
 
#define FBYTE_CNT7_H    0x0A8
439
 
#define SLP_MD_EN       0x100
440
 
#define IRQ_EN          0x101
441
 
#define IRQ_STAT        0x102
442
 
#define SUSP_WUP        0x103
443
 
#define PA_EN           0x104
444
 
#define USB_DMA_ADL     0x105
445
 
#define USB_DMA_ADH     0x106
446
 
#define USB_DMA_PLR     0x107
447
 
#define USB_DMA_EAD     0x108
448
 
#define USB_DMA_PLT     0x109
449
 
#define USB_DMA_EN      0x10A
450
 
 
451
 
/* Pointer registers (same for all AVR devices so far) */
452
 
#define XL r26
453
 
#define XH r27
454
 
#define YL r28
455
 
#define YH r29
456
 
#define ZL r30
457
 
#define ZH r31
458
 
 
459
 
/* Last memory addresses */
460
 
#define RAMEND          0x07FF
461
 
#define XRAMEND         0x07FF
462
 
#define E2END           0
463
 
#define FLASHEND        0x3FFF
464
 
 
465
 
/*
466
 
   AT76C711 data space memory map (ranges not listed are reserved):
467
 
   0x0000 - 0x001F - AVR registers
468
 
   0x0020 - 0x005F - AVR I/O space
469
 
   0x0060 - 0x07FF - AVR data SRAM
470
 
   0x1000 - 0x1FFF - USB (not all locations used)
471
 
   0x2000 - 0x201F - DMA controller
472
 
   0x2020 - 0x202F - UART0
473
 
   0x2030 - 0x203F - UART1 (IRDA)
474
 
   0x2040          - the mysterious Program Memory Control bit (???)
475
 
   0x3000 - 0x37FF - DPRAM
476
 
   0x8000 - 0xBFFF - program SRAM (read/write), would be nice if other
477
 
                     AVR devices did that as well (no need to use LPM!)
478
 
 */
479
 
#endif  /* __IO76C711 */