Main Page   Compound List   File List   Compound Members   File Members  

io76c711.h

Go to the documentation of this file.
00001 /*
00002    io76c711.h - internal register definitions for AT76C711
00003 
00004    Contributors:
00005      Created by Marek Michalkiewicz <marekm@linux.org.pl>
00006 
00007    THIS SOFTWARE IS NOT COPYRIGHTED
00008 
00009    This source code is offered for use in the public domain.  You may
00010    use, modify or distribute it freely.
00011 
00012    This code is distributed in the hope that it will be useful, but
00013    WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
00014    DISCLAIMED.  This includes but is not limited to warranties of
00015    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00016 
00017    Based on (advance information?) Atmel datasheet Rev. 1643A-10/00.
00018  */
00019 
00020 #ifndef __IO76C711
00021 #define __IO76C711 1
00022 
00023 #define AVR_MEGA 1
00024 #define AVR_ENHANCED 1
00025 
00026 /* I/O space addresses */
00027 
00028 /* 0x00-0x0C reserved */
00029 
00030 /* SPI */
00031 #define SPCR    0x0D
00032 #define SPSR    0x0E
00033 #define SPDR    0x0F
00034 
00035 /* Port D */
00036 #define PIND    0x10
00037 #define DDRD    0x11
00038 #define PORTD   0x12
00039 
00040 /* Peripheral Enable Register */
00041 #define PERIPHEN 0x13
00042 
00043 /* Clock Control Register */
00044 #define CLK_CNTR 0x14
00045 
00046 /* Data Register, Port C */
00047 #define PORTC   0x15
00048 
00049 /* Port B */
00050 #define PINB    0x16
00051 #define DDRB    0x17
00052 #define PORTB   0x18
00053 
00054 /* Port A */
00055 #define PINA    0x19
00056 #define DDRA    0x1A
00057 #define PORTA   0x1B
00058 
00059 /* 0x1C-0x1F reserved */
00060 
00061 #define IRDAMOD 0x20
00062 
00063 #define WDTCR   0x21
00064 
00065 /* 0x22-0x25 reserved */
00066 /* Timer 1 */
00067 #define ICR1L   0x26
00068 #define ICR1H   0x27
00069 #define OCR1BL  0x28
00070 #define OCR1BH  0x29
00071 #define OCR1AL  0x2A
00072 #define OCR1AH  0x2B
00073 #define TCNT1L  0x2C
00074 #define TCNT1H  0x2D
00075 #define TCCR1B  0x2E
00076 #define TCCR1A  0x2F
00077 
00078 /* 0x30 reserved */
00079 
00080 /* Timer 0 */
00081 #define PRELD   0x31
00082 #define TCNT0   0x32
00083 #define TCCR0   0x33
00084 
00085 #define MCUSR   0x34
00086 #define MCUCR   0x35
00087 
00088 #define TIFR    0x36
00089 #define TIMSK   0x37
00090 
00091 /* 0x38 reserved */
00092 
00093 #define EIMSK   0x39
00094 
00095 /* 0x3A-0x3C reserved */
00096 
00097 #define SPL     0x3D
00098 #define SPH     0x3E
00099 #define SREG    0x3F
00100 
00101 
00102 /* Interrupt vectors (byte addresses) */
00103 /* XXX - the datasheet shows each vector as using one word of program
00104    memory, which only allows RJMP, even though the thing has 16K bytes
00105    of program memory so each vector should be a JMP instruction to reach
00106    the entire program memory address space.
00107    Assuming JMP for now - could be wrong, ask Atmel to be sure...  */
00108 
00109 #define RESET_vect              (0x00)
00110 #define SUSP_RESM_vect          (0x04)
00111 #define INT0_vect               (0x08)
00112 #define TIMER1_CAPT_vect        (0x0C)
00113 #define TIMER1_COMPA_vect       (0x10)
00114 #define TIMER1_COMPB_vect       (0x14)
00115 #define TIMER1_OVF_vect         (0x18)
00116 #define TIMER0_OVF_vect         (0x1C)
00117 #define SPI_STC_vect            (0x20)
00118 #define TDMAC_vect              (0x24)
00119 #define UART0_vect              (0x28)
00120 #define RDMAC_vect              (0x2C)
00121 #define USB_HW_vect             (0x30)
00122 #define UART1_vect              (0x34)
00123 #define INT1_vect               (0x38)
00124 
00125 #define INT_VECT_SIZE (0x3C)
00126 
00127 /* Bit numbers */
00128 
00129 /* EIMSK */
00130 /* bits 7-4 reserved */
00131 #define POL1    3
00132 #define POL0    2
00133 #define INT1    1
00134 #define INT0    0
00135 
00136 /* TIMSK */
00137 #define TOIE1   7
00138 #define OCIE1A  6
00139 #define OCIE1B  5
00140 /* bit 4 reserved */
00141 #define TICIE1  3
00142 /* bit 2 reserved */
00143 #define TOIE0   1
00144 /* bit 0 reserved */
00145 
00146 /* TIFR */
00147 #define TOV1    7
00148 #define OCF1A   6
00149 #define OCF1B   5
00150 /* bit 4 reserved */
00151 #define ICF1    3
00152 /* bit 2 reserved */
00153 #define TOV0    1
00154 /* bit 0 reserved */
00155 
00156 /* MCUCR */
00157 /* bits 7-6 reserved */
00158 #define SE      5
00159 #define SM1     4
00160 #define SM0     3
00161 /* bits 2-0 reserved */
00162 
00163 /* MCUSR */
00164 /* bits 7-2 reserved */
00165 #define EXTRF   1
00166 #define PORF    0
00167 
00168 /* TCCR0 */
00169 /* bits 7-6 reserved */
00170 #define COM01   5
00171 #define COM00   4
00172 #define CTC0    3
00173 #define CS02    2
00174 #define CS01    1
00175 #define CS00    0
00176 
00177 /* TCCR1A */
00178 #define COM1A1  7
00179 #define COM1A0  6
00180 #define COM1B1  5
00181 #define COM1B0  4
00182 /* bits 3-0 reserved */
00183 
00184 /* TCCR1B */
00185 #define ICNC1   7
00186 #define ICES1   6
00187 /* bits 5-4 reserved */
00188 #define CTC1    3
00189 #define CS12    2
00190 #define CS11    1
00191 #define CS10    0
00192 
00193 /* WDTCR */
00194 /* bits 7-5 reserved */
00195 #define WDTOE   4
00196 #define WDE     3
00197 #define WDP2    2
00198 #define WDP1    1
00199 #define WDP0    0
00200 
00201 /* IRDAMOD */
00202 /* bits 7-3 reserved */
00203 #define POL     2
00204 #define MODE    1
00205 #define EN      0
00206 
00207 /* PORTA */
00208 #define PA7     7
00209 #define PA6     6
00210 #define PA5     5
00211 #define PA4     4
00212 #define PA3     3
00213 #define PA2     2
00214 #define PA1     1
00215 #define PA0     0
00216 
00217 /* DDRA */
00218 #define DDA7    7
00219 #define DDA6    6
00220 #define DDA5    5
00221 #define DDA4    4
00222 #define DDA3    3
00223 #define DDA2    2
00224 #define DDA1    1
00225 #define DDA0    0
00226 
00227 /* PINA */
00228 #define PINA7   7
00229 #define PINA6   6
00230 #define PINA5   5
00231 #define PINA4   4
00232 #define PINA3   3
00233 #define PINA2   2
00234 #define PINA1   1
00235 #define PINA0   0
00236 
00237 /*
00238    PB7 = SCK
00239    PB6 = MISO
00240    PB5 = MOSI
00241    PB4 = SS#
00242    PB2 = ICP
00243    PB1 = T1
00244    PB0 = T0
00245  */
00246 
00247 /* PORTB */
00248 #define PB7     7
00249 #define PB6     6
00250 #define PB5     5
00251 #define PB4     4
00252 #define PB3     3
00253 #define PB2     2
00254 #define PB1     1
00255 #define PB0     0
00256 
00257 /* DDRB */
00258 #define DDB7    7
00259 #define DDB6    6
00260 #define DDB5    5
00261 #define DDB4    4
00262 #define DDB3    3
00263 #define DDB2    2
00264 #define DDB1    1
00265 #define DDB0    0
00266 
00267 /* PINB */
00268 #define PINB7   7
00269 #define PINB6   6
00270 #define PINB5   5
00271 #define PINB4   4
00272 #define PINB3   3
00273 #define PINB2   2
00274 #define PINB1   1
00275 #define PINB0   0
00276 
00277 /* PORTC */
00278 /* bits 7-4 reserved */
00279 #define PC3      3
00280 #define PC2      2
00281 #define PC1      1
00282 #define PC0      0
00283 
00284 /*
00285    PD7 = INT1 / OC1B
00286    PD6 = INT0 / OC1A
00287    PD1 = TXD
00288    PD0 = RXD
00289  */
00290 
00291 /* PORTD */
00292 #define PD7      7
00293 #define PD6      6
00294 #define PD5      5
00295 #define PD4      4
00296 #define PD3      3
00297 #define PD2      2
00298 #define PD1      1
00299 #define PD0      0
00300 
00301 /* DDRD */
00302 #define DDD7    7
00303 #define DDD6    6
00304 #define DDD5    5
00305 #define DDD4    4
00306 #define DDD3    3
00307 #define DDD2    2
00308 #define DDD1    1
00309 #define DDD0    0
00310 
00311 /* PIND */
00312 #define PIND7   7
00313 #define PIND6   6
00314 #define PIND5   5
00315 #define PIND4   4
00316 #define PIND3   3
00317 #define PIND2   2
00318 #define PIND1   1
00319 #define PIND0   0
00320 
00321 /* CLK_CNTR */
00322 /* bits 7-5 reserved */
00323 #define UOSC    4
00324 #define UCK     3
00325 #define IRCK    2
00326 /* bits 1-0 reserved */
00327 
00328 /* PERIPHEN */
00329 /* bits 7-3 reserved */
00330 #define IRDA    2
00331 #define UART    1
00332 #define USB     0
00333 
00334 /* SPSR */
00335 #define SPIF    7
00336 #define WCOL    6
00337 /* bits 5-0 reserved */
00338 
00339 /* SPCR */
00340 #define SPIE    7
00341 #define SPE     6
00342 #define DORD    5
00343 #define MSTR    4
00344 #define CPOL    3
00345 #define CPHA    2
00346 #define SPR1    1
00347 #define SPR0    0
00348 
00349 /* Memory mapped registers */
00350 
00351 /* UART */
00352 #define UART0_BASE 0x2020
00353 #define UART1_BASE 0x2030
00354 /* offsets from the base address */
00355 #define US_RHR          0x00
00356 #define US_THR          0x00
00357 #define US_IER          0x01
00358 #define US_FCR          0x02
00359 #define US_PMR          0x03
00360 #define US_MR           0x04
00361 #define US_CSR          0x05
00362 #define US_CR           0x06
00363 #define US_BL           0x07
00364 #define US_BM           0x08
00365 #define US_RTO          0x09
00366 #define US_TTG          0x0A
00367 
00368 /* DMA */
00369 #define DMA_BASE 0x2000
00370 /* offsets from the base address */
00371 #define TXTADL          0x01
00372 #define TXPLL           0x03
00373 #define TXPLM           0x04
00374 #define TXTPLL          0x05
00375 #define TXTPLM          0x06
00376 #define RXTADL          0x07
00377 #define RXTADMEN        0x08
00378 #define RSPLL           0x09
00379 #define RXPLM           0x0A
00380 #define RXTPLL          0x0B
00381 #define RXTPLM          0x0C
00382 #define INTCST          0x0D
00383 /* XXX DPORG register mentioned on page 20, but undocumented */
00384 
00385 /* XXX Program Memory Control Bit mentioned on page 20, but undocumented */
00386 #define PROGRAM_MEMORY_CONTROL_BIT 0x2040
00387 
00388 /* USB */
00389 #define USB_BASE 0x1000
00390 /* offsets from the base address */
00391 #define FRM_NUM_H       0x0FD
00392 #define FRM_NUM_L       0x0FC
00393 #define GLB_STATE       0x0FB
00394 #define SPRSR           0x0FA
00395 #define SPRSIE          0x0F9
00396 #define UISR            0x0F7
00397 #define UIAR            0x0F5
00398 #define FADDR           0x0F2
00399 #define ENDPPGPG        0x0F1
00400 #define ECR0            0x0EF
00401 #define ECR1            0x0EE
00402 #define ECR2            0x0ED
00403 #define ECR3            0x0EC
00404 #define ECR4            0x0EB
00405 #define ECR5            0x0EA
00406 #define ECR6            0x0E9
00407 #define ECR7            0x0E8
00408 #define CSR0            0x0DF
00409 #define CSR1            0x0DE
00410 #define CSR2            0x0DD
00411 #define CSR3            0x0DC
00412 #define CSR4            0x0DB
00413 #define CSR5            0x0DA
00414 #define CSR6            0x0D9
00415 #define CSR7            0x0D8
00416 #define FDR0            0x0CF
00417 #define FDR1            0x0CE
00418 #define FDR2            0x0CD
00419 #define FDR3            0x0CC
00420 #define FDR4            0x0CB
00421 #define FDR5            0x0CA
00422 #define FDR6            0x0C9
00423 #define FDR7            0x0C8
00424 #define FBYTE_CNT0_L    0x0BF
00425 #define FBYTE_CNT1_L    0x0BE
00426 #define FBYTE_CNT2_L    0x0BD
00427 #define FBYTE_CNT3_L    0x0BC
00428 #define FBYTE_CNT4_L    0x0BB
00429 #define FBYTE_CNT5_L    0x0BA
00430 #define FBYTE_CNT6_L    0x0B9
00431 #define FBYTE_CNT7_L    0x0B8
00432 #define FBYTE_CNT0_H    0x0AF
00433 #define FBYTE_CNT1_H    0x0AE
00434 #define FBYTE_CNT2_H    0x0AD
00435 #define FBYTE_CNT3_H    0x0AC
00436 #define FBYTE_CNT4_H    0x0AB
00437 #define FBYTE_CNT5_H    0x0AA
00438 #define FBYTE_CNT6_H    0x0A9
00439 #define FBYTE_CNT7_H    0x0A8
00440 #define SLP_MD_EN       0x100
00441 #define IRQ_EN          0x101
00442 #define IRQ_STAT        0x102
00443 #define SUSP_WUP        0x103
00444 #define PA_EN           0x104
00445 #define USB_DMA_ADL     0x105
00446 #define USB_DMA_ADH     0x106
00447 #define USB_DMA_PLR     0x107
00448 #define USB_DMA_EAD     0x108
00449 #define USB_DMA_PLT     0x109
00450 #define USB_DMA_EN      0x10A
00451 
00452 /* Pointer registers (same for all AVR devices so far) */
00453 #define XL r26
00454 #define XH r27
00455 #define YL r28
00456 #define YH r29
00457 #define ZL r30
00458 #define ZH r31
00459 
00460 /* Last memory addresses */
00461 #define RAMEND          0x07FF
00462 #define XRAMEND         0x07FF
00463 #define E2END           0
00464 #define FLASHEND        0x3FFF
00465 
00466 /*
00467    AT76C711 data space memory map (ranges not listed are reserved):
00468    0x0000 - 0x001F - AVR registers
00469    0x0020 - 0x005F - AVR I/O space
00470    0x0060 - 0x07FF - AVR data SRAM
00471    0x1000 - 0x1FFF - USB (not all locations used)
00472    0x2000 - 0x201F - DMA controller
00473    0x2020 - 0x202F - UART0
00474    0x2030 - 0x203F - UART1 (IRDA)
00475    0x2040          - the mysterious Program Memory Control bit (???)
00476    0x3000 - 0x37FF - DPRAM
00477    0x8000 - 0xBFFF - program SRAM (read/write), would be nice if other
00478                      AVR devices did that as well (no need to use LPM!)
00479  */
00480 #endif  /* __IO76C711 */

Generated at Fri Jul 19 14:55:41 2002 for avrgcc by doxygen1.2.8.1 written by Dimitri van Heesch, © 1997-2001