uCmaskFile.h
Go to the documentation of this file.
00001  /***********************************************************************/
00027  #ifndef UC_MASK_FILE_H_
00028  #define UC_MASK_FILE_H_
00029  
00030 
00031  /* INCLUDE =========================================== */
00036         //* place for microcontroller header file
00037         
00038         
00039         //* libraries from AVR Lib
00041         #include <avr/io.h>
00042         
00044         #include <avr/interrupt.h>
00045 
00047         #include "config.h"
00048 
00049  /* END OF INCLUDE =========================================== */
00050 
00051 
00054  #define        USE_AT90USB1287         1
00055  #define        MICROCONTROLLER         USE_AT90USB1287
00056  
00057 
00058  
00059  
00060  /* I/O =========================================== */
00067  //* PIN A - port input pin
00068  #define        PORT_INPUT_PIN_A                PINA
00069  #define        A7                                              7
00070  #define        A6                                              6
00071  #define        A5                                              5
00072  #define        A4                                              4
00073  #define        A3                                              3
00074  #define        A2                                              2
00075  #define        A1                                              1
00076  #define        A0                                              0
00077 
00078  //* DDRA - port direction
00079  #define        DATA_DIR_REG_A                  DDRA
00080 
00081  
00082  //* PORTA if OUTPUT PORTreg set value, if INPUT - decide about pull-up resistors
00083  #define        DATA_PORT_A                             PORTA
00084  
00085  
00086  
00087  //* PINB - port input pin
00088  #define        PORT_INPUT_PIN_B                PINB
00089  #define        B7                                              7
00090  #define        B6                                              6
00091  #define        B5                                              5
00092  #define        B4                                              4
00093  #define        B3                                              3
00094  #define        B2                                              2
00095  #define        B1                                              1
00096  #define        B0                                              0
00097 
00098  //* DDRB - port direction
00099  #define        DATA_DIR_REG_B                  DDRB
00100  
00101  //* PORTB
00102  #define        DATA_PORT_B                             PORTB
00103 
00104  
00105  //* PINC - port input pin
00106  #define        PORT_INPUT_PIN_C                PINC
00107  #define        C7                                              7
00108  #define        C6                                              6
00109  #define        C5                                              5
00110  #define        C4                                              4
00111  #define        C3                                              3
00112  #define        C2                                              2
00113  #define        C1                                              1
00114  #define        C0                                              0
00115 
00116  //* DDRC - port direction
00117  #define        DATA_DIR_REG_C                  DDRC
00118  
00119  //* PORTC if OUTPUT PORTreg set value, if INPUT - decide about pull-up resistors
00120  #define        DATA_PORT_C                             PORTC
00121 
00122  
00123  
00124  //* PIND - port input pin
00125  #define        PORT_INPUT_PIN_D                PIND
00126  #define        D7                                              7
00127  #define        D6                                              6
00128  #define        D5                                              5
00129  #define        D4                                              4
00130  #define        D3                                              3
00131  #define        D2                                              2
00132  #define        D1                                              1
00133  #define        D0                                              0
00134 
00135  //* DDRD - port direction
00136  #define        DATA_DIR_REG_D                  DDRD
00137  
00138  //* PORTD if OUTPUT PORTreg set value, if INPUT - decide about pull-up resistors
00139  #define        DATA_PORT_D                             PORTD
00140  
00141  
00142  #if ( MICROCONTROLLER == USE_AT90USB1287 )
00143  
00144  //* PINE - port input pin
00145  #define        PORT_INPUT_PIN_E                PINE
00146  #define        E7                                              7
00147  #define        E6                                              6
00148  #define        E5                                              5
00149  #define        E4                                              4
00150  #define        E3                                              3
00151  #define        E2                                              2
00152  #define        E1                                              1
00153  #define        E0                                              0
00154 
00155  //* DDRE - port direction
00156  #define        DATA_DIR_REG_E                  DDRE
00157  
00158  //* PORTE if OUTPUT PORTreg set value, if INPUT - decide about pull-up resistors
00159  #define        DATA_PORT_E                             PORTE
00160  
00161  
00162  //* PINF - port input pin
00163  #define        PORT_INPUT_PIN_F                PINF
00164  #define        F7                                              7
00165  #define        F6                                              6
00166  #define        F5                                              5
00167  #define        F4                                              4
00168  #define        F3                                              3
00169  #define        F2                                              2
00170  #define        F1                                              1
00171  #define        F0                                              0
00172 
00173  //* DDRF - port direction
00174  #define        DATA_DIR_REG_F                  DDRF
00175  
00176  //* PORTF if OUTPUT PORTreg set value, if INPUT - decide about pull-up resistors
00177  
00178  #endif
00179 
00182  /* ================================= */
00183  
00184  
00185  /* TIMERS =========================================== */
00192  #define        TIMER_GTCCR             GTCCR
00193  #define        TIMER_TSM               TSM
00194  #define        TIMER_PSRASY    TIMER_PSRASY
00195  #define        TIMER_PSRSYNC   PSRSYNC
00196  
00197  
00199  #define        TIMER0_TCNT             TCNT0
00200  #define        TIMER0_TCNTL    TCNT0L
00201  #define        TIMER0_TCNTH    TCNT0H
00202  
00203  #define        TIMER0_TCCR0A   TCCR0A
00204  #define        TIMER0_TCCR0B   TCCR0B
00205  #define        TIMER0_COM0A1   COM0A1
00206  #define        TIMER0_COM0A0   COM0A0
00207  #define        TIMER0_COM0B1   COM0B1
00208  #define        TIMER0_COM0B0   COM0B0
00209  #define        TIMER0_WGM02    WGM02
00210  #define        TIMER0_WGM01    WGM01
00211  #define        TIMER0_WGM00    WGM00
00212  #define        TIMER0_TIFR0    TIFR0
00213  #define        TIMER0_OCF0B    OCF0B
00214  #define        TIMER0_OCF0A    OCF0A
00215  #define        TIMER0_TOV0             TOV0
00216  #define        TIMER0_FOC0A    FOC0A
00217  #define        TIMER0_FOC0B    FOC0B
00218  
00219  #define        TIMER0_CS02             CS02
00220  #define        TIMER0_CS01             CS01
00221  #define        TIMER0_CS00             CS00
00222  
00223  #define        TIMER0_TIMSK0   TIMSK0  
00224  #define        TIMER0_OCIE0B   OCIE0B
00225  #define        TIMER0_OCIE0A   OCIE0A
00226  #define        TIMER0_TOIE0    TOIE0
00227  #define        TIMER0_TOIE0    TOIE0
00228  
00229  #define        TIMER0_OCR0A    OCR0A
00230  #define        TIMER0_OCR0B    OCR0B
00231  
00233  #define        TIMER1_TCNT             TCNT1
00234  #define        TIMER1_TCNTL    TCNT1L
00235  #define        TIMER1_TCNTH    TCNT1H
00236  #define        TIMER1_OCR1A    OCR1A
00237  #define        TIMER1_OCR1AL   OCR1AL
00238  #define        TIMER1_OCR1AH   OCR1AH
00239  #define        TIMER1_OCR1B    OCR1B
00240  #define        TIMER1_OCR1BL   OCR1BL
00241  #define        TIMER1_OCR1BH   OCR1BH 
00242  #define        TIMER1_OCR1C    OCR1C
00243  #define        TIMER1_OCR1CL   OCR1CL
00244  #define        TIMER1_OCR1CH   OCR1CH
00245  
00246  
00247  #define        TIMER1_TIFR1    TIFR1
00248  #define        TIMER1_ICF1             ICF1
00249  #define        TIMER1_OCF1C    OCF1C
00250  #define        TIMER1_OCF1B    OCF1B
00251  #define        TIMER1_OCF1A    OCF1A
00252  #define        TIMER1_TOV1             TOV1
00253  
00254  #define        TIMER1_TCCR1A   TCCR1A
00255  #define        TIMER1_COM1A1   COM1A1
00256  #define        TIMER1_COM1A0   COM1A0
00257  #define        TIMER1_COM1B1   COM1B1
00258  #define        TIMER1_COM1B0   COM1B0
00259  #define        TIMER1_COM1C1   COM1C1
00260  #define        TIMER1_COM1C0   COM1C0
00261  #define        TIMER1_WGM11    WGM11
00262  #define        TIMER1_WGM10    WGM10
00263  
00264  #define        TIMER1_TCCR1B   TCCR1B
00265  #define        TIMER1_ICNC1    ICNC1
00266  #define        TIMER1_ICES1    ICES1
00267  #define        TIMER1_WGM13    WGM13
00268  #define        TIMER1_WGM12    WGM12
00269  #define        TIMER1_CS12             CS12
00270  #define        TIMER1_CS11             CS11
00271  #define        TIMER1_CS10             CS10
00272  
00273  #define        TIMER1_TCCR1C   TCCR1C
00274  #define        TIMER1_FOC1A    FOC1A
00275  #define        TIMER1_FOC1B    FOC1B
00276  #define        TIMER1_FOC1C    FOC1C
00277  
00278  
00280  #if ( MICROCONTROLLER == USE_AT90USB1287 )
00281  
00282  
00284  #define        TIMER2_TCNT             TCNT2
00285  #define        TIMER2_TCNTL    TCNT2L
00286  #define        TIMER2_TCNTH    TCNT2H
00287  #define        TIMER2_OCR2A    OCR2A
00288  #define        TIMER2_OCR2B    OCR2B
00289  
00290  #define        TIMER2_TIFR2    TIFR2
00291  #define        TIMER2_OCF2B    OCF2B
00292  #define        TIMER2_OCF2A    OCF2A
00293  #define        TIMER2_TOV2             TOV2
00294  
00295  #define        TIMER2_COM2A1   COM2A1
00296  #define        TIMER2_COM2A0   COM2A0
00297  #define        TIMER2_COM2B1   COM2B1
00298  #define        TIMER2_COM2B0   COM2B0
00299  #define        TIMER2_WGM21    WGM21
00300  #define        TIMER2_WGM20    WGM20
00301  
00302  #define        TIMER2_FOC2A    FOC2A
00303  #define        TIMER2_FOC2B    FOC2B
00304  #define        TIMER2_WGM22    WGM22
00305  #define        TIMER2_CS22             CS22
00306  #define        TIMER2_CS21             CS21
00307  #define        TIMER2_CS20             CS20
00308  
00309  
00311  #define        TIMER3_TCNT             TCNT3
00312  #define        TIMER3_TCNTL    TCNT3L
00313  #define        TIMER3_TCNTH    TCNT3H
00314  
00315  #define        TIMER3_TIFR3    TIFR3
00316  #define        TIMER3_ICF3             ICF3
00317  #define        TIMER3_OCF3C    OCF3C
00318  #define        TIMER3_OCF3B    OCF3B
00319  #define        TIMER3_OCF3A    OCF3A
00320  #define        TIMER3_TOV3             TOV3
00321  #define        TIMER3_OCR3A    OCF3A
00322  #define        TIMER3_OCR3AL   OCF3AL
00323  #define        TIMER3_OCR3AH   OCF3AH
00324  #define        TIMER3_OCR3B    OCF3B
00325  #define        TIMER3_OCR3BL   OCF3BL
00326  #define        TIMER3_OCR3BH   OCF3BH
00327  #define        TIMER3_OCR3C    OCF3C
00328  #define        TIMER3_OCR3CL   OCF3CL
00329  #define        TIMER3_OCR3CH   OCF3CH
00330  #define        TIMER3_ICR3             ICR3
00331  #define        TIMER3_ICR3L    ICR3L
00332  #define        TIMER3_ICR3H    ICR3H
00333  #define        TIMER3_TCCR3A   TCCR3A
00334  #define        TIMER3_TCCR3B   TCCR3B
00335  #define        TIMER3_TCCR3C   TCCR3C
00336 
00337  #define        TIMER3_COM3A1   COM3A1
00338  #define        TIMER3_COM3A0   COM3A0
00339  #define        TIMER3_COM3B1   COM3B1
00340  #define        TIMER3_COM3B0   COM3B0
00341  #define        TIMER3_COM3C1   COM3C1
00342  #define        TIMER3_COM3C0   COM3C0
00343  #define        TIMER3_WGM31    WGM31
00344  #define        TIMER3_WGM30    WGM30
00345  
00346  #define        TIMER3_ICNC3    ICNC3
00347  #define        TIMER3_ICES3    ICES3
00348  #define        TIMER3_WGM33    WGM33
00349  #define        TIMER3_WGM32    WGM32
00350  #define        TIMER3_CS32             CS32
00351  #define        TIMER3_CS31             CS31
00352  #define        TIMER3_CS30             CS30 
00353  
00354  #define        TIMER3_FOC3A    FOC3
00355  #define        TIMER3_FOC3B    FOC3B
00356  #define        TIMER3_FOC3C    FOC3C
00357  
00358  #endif
00359 
00363  /* ================================= */
00364  
00365  
00366  /* INTERRUPTS =========================================== */
00371  //* Pin Change Interrupt Flag Register
00373  #define        EXT_INT_PCIFR   PCIFR
00374   
00375  //* External Interrupt Flags
00377  #define        EXT_INT_EIFR    EIFR
00378  
00379  #define        EXT_INTF_7              INTF7
00380  #define        EXT_INTF_6              INTF6
00381  #define        EXT_INTF_5              INTF5
00382  #define        EXT_INTF_4              INTF4
00383  #define        EXT_INTF_3              INTF3
00384  #define        EXT_INTF_2              INTF2
00385  #define        EXT_INTF_1              INTF1
00386  #define        EXT_INTF_0              INTF0
00387  
00388  //* External Interrupt Request 
00390  #define        EXT_INT_EIMSK   EIMSK
00391  
00392  #define        EXT_INT_7               INT7
00393  #define        EXT_INT_6               INT6
00394  #define        EXT_INT_5               INT5
00395  #define        EXT_INT_4               INT4
00396  #define        EXT_INT_3               INT3
00397  #define        EXT_INT_2               INT2
00398  #define        EXT_INT_1               INT1
00399  #define        EXT_INT_0               INT0
00400  
00402  #define        INT_PCIFR               PCIFR
00403  #define        INT_PCIF0               PCIF0
00404  
00406  #define        INT_PCICR               PCICR
00407  #define        INT_PCIE0               PCIE0
00408  
00410  #define        INT_PCMSK0              PCMSK0
00411  #define        INT_PCINT_7             PCINT7
00412  #define        INT_PCINT_6             PCINT6
00413  #define        INT_PCINT_5             PCINT5
00414  #define        INT_PCINT_4             PCINT4
00415  #define        INT_PCINT_3             PCINT3
00416  #define        INT_PCINT_2             PCINT2
00417  #define        INT_PCINT_1             PCINT1
00418  #define        INT_PCINT_0             PCINT0
00419  
00421  #define        EXT_EICRA               EICRA
00422  #define        EICRA_ISC31             ISC31
00423  #define        EICRA_ISC30             ISC30
00424  #define        EICRA_ISC21             ISC21
00425  #define        EICRA_ISC20             ISC20
00426  #define        EICRA_ISC11             ISC11
00427  #define        EICRA_ISC10             ISC10
00428  #define        EICRA_ISC01             ISC01
00429  #define        EICRA_ISC00             ISC00
00430  
00432  #define        EXT_EICRB               EICRB
00433  #define        EICRB_ISC71             ISC71
00434  #define        EICRB_ISC70             ISC70
00435  #define        EICRB_ISC61             ISC61
00436  #define        EICRB_ISC60             ISC60
00437  #define        EICRB_ISC51             ISC51
00438  #define        EICRB_ISC50             ISC50
00439  #define        EICRB_ISC41             ISC41
00440  #define        EICRB_ISC40             ISC40
00441  
00442  
00446  /* ================================= */
00447  
00448  
00449  
00450  /* SPI =========================================== */
00456  //* SPI Control Register */
00458  #define        SPI_SPCR        SPCR
00459  #define        SPCR_SPIE       SPIE
00460  #define        SPCR_SPE        SPE
00461  #define        SPCR_DORD       DORD
00462  #define        SPCR_MSTR       MSTR 
00463  #define        SPCR_CPOL       CPOL
00464  #define        SPCR_CPHA       CPHA
00465  #define        SPCR_SPR1       SPR1
00466  #define        SPCR_SPR0       SPR0
00467  
00468  //* SPI Status Register */
00470  #define        SPI_SPSR        SPSR
00471  #define        SPSR_SPIF       SPIF
00472  #define        SPSR_WCOL       WCOL
00473  #define        SPSR_SPI2X      SPI2X
00474  
00475  //* SPI Data Register */
00477  #define        SPI_SPDR        SPDR
00478  #define        SPI_SPI2X       SPI2X
00479  
00483  /* ================================= */
00484  
00485  
00486  /* UART =========================================== */
00492  #define        USART_UCSR1A    UCSR1A
00493  #define        UCSR1A_UDRE1    UDRE1
00494  
00495  #define        USART_UCSR1B    UCSR1B
00496  #define        UCSR1B_RXEN1    RXEN1
00497  #define        UCSR1B_TXEN1    TXEN1
00498  
00499  #define        USART_UCSR1C    UCSR1C
00500  #define        UCSR1C_UCSZ10   UCSZ10
00501  #define        UCSR1C_USBS1    USBS1
00502  
00503  #define        USART_UBRR1H    UBRR1H
00504  #define        USART_UBRR1L    UBRR1L
00505  #define        USART_UDR1              UDR1
00506 
00510  /* ================================= */
00511  
00512  
00513  
00514  /* WATCHDOG =========================================== */
00520  #define        MCU_MCUSR               MCUSR
00521  #define        MCUSR_WDRF              WDRF
00522  
00523  //* WDT watchdog timer */
00525  #define        WDT_WDTCSR              WDTCSR
00526  #define        WDTCSR_WDIF             WDIF
00527  #define        WDTCSR_WDIE             WDIE
00528  #define        WDTCSR_WDP3             WDP3 
00529  #define        WDTCSR_WDCE             WDCE
00530  #define        WDTCSR_WDE              WDE
00531  #define        WDTCSR_WDP2             WDP2
00532  #define        WDTCSR_WDP1             WDP1
00533  #define        WDTCSR_WDP0             WDP0
00534  
00535  #define        WDT_64MS                ( 1 << WDP1 )
00536  #define        WDT_125MS               ( ( 1 << WDP1 ) | ( 1 << WDP0 ) )
00537  #define        WDT_250MS               ( 1 << WDP2 ) 
00538  #define        WDT_500MS               ( ( 1 << WDP2 ) | ( 1 << WDP0 ) )
00539  #define        WDT_1000MS              ( ( 1 << WDP2 ) | ( 1 << WDP1 ) )
00540 
00544  /* ================================= */
00545  
00546  
00547  
00548  
00549  
00550  /* EEPROM MEMORY =========================================== */
00557  //* EEPROM Control Register */
00559  #define        EEPROM_EECR             EECR
00560   
00561  //* EEPROM Programming Mode Bits */
00563  #define        EEPROM_EEPM1    EEPM1
00564  
00565  //* EEPROM Programming Mode Bits */
00567  #define        EEPROM_EEPM0    EEPM0
00568  
00569  //* EEPROM Ready Interrupt Enable */
00571  #define        EEPROM_EERIE    EERIE
00572  
00573  //* EEPROM Master Programming Enable */
00575  #define        EEPROM_EEMPE    EEMPE
00576  
00577  //* EEPROM Programming Enable */
00579  #define        EEPROM_EEPE             EEPE
00580  
00581  //* EEPROM Read Enable */
00583  #define        EEPROM_EERE             EERE
00584  
00585  //* EEPROM Data Register */
00587  #define        EEPROM_EEDR             EEDR
00588  
00589  //* EEPROM Address Register */
00591  #define        EEPROM_EEAR             EEAR
00592  #define        EEPROM_EEARL    EEARL
00593  #define        EEPROM_EEARH    EEARH
00594  
00598  /* ================================= */
00599  
00600  
00601  
00602 /* INTERRUPT VECTORS =========================================== */
00609  #define        EXT_INT_EIFR    EIFR
00610  
00611  #define        INT0_VECTOR             INT0_vect
00612  #define        INT1_VECTOR             INT1_vect
00613  
00614  #define        INT2_VECTOR             INT2_vect
00615  #define        INT3_VECTOR             INT3_vect
00616  #define        INT4_VECTOR             INT4_vect
00617  #define        INT5_VECTOR             INT5_vect
00618  #define        INT6_VECTOR             INT6_vect
00619  #define        INT7_VECTOR             INT7_vect
00620  
00621  #define        PCINT0_VECTOR   PCINT0_vect
00622  #define        USB_GEN_VECTOR  USB_GEN_vect
00623  #define        USB_COM_VECTOR  USB_COM_vect
00624  #define        WDT_VECT                WDT_vect
00625  
00626  #define        TIMER2_COMPA_VECT               TIMER2_COMPA_vect
00627  #define        TIMER2_COMPB_VECT               TIMER2_COMPB_vect
00628  #define        TIMER2_OVF_VECT                 TIMER2_OVF_vect
00629  
00630  #define        TIMER1_CAPT_VECT                TIMER1_CAPT_vect
00631  #define        TIMER1_COMPA_VECT               TIMER1_COMPA_vect
00632  #define        TIMER1_COMPB_VECT               TIMER1_COMPB_vect
00633  #define        TIMER1_OVF_VECT                 TIMER1_OVF_vect
00634  
00635  #define        TIMER0_COMPA_VECT               TIMER0_COMPA_vect
00636  #define        TIMER0_COMPB_VECT               TIMER0_COMPB_vect
00637  
00638  #define        TIMER0_OVF_VECT                 TIMER0_OVF_vect
00639  
00640  #define        SPI_STC_VECT                    SPI_STC_vect
00641  #define        USART1_RX_VECT                  USART1_RX_vect
00642  #define        USART1_UDRE_VECT                USART1_UDRE_vect
00643  #define        USART1_TX_VECT                  USART1_TX_vect
00644  
00645  #define        ANALOG_COMP_VECT                ANALOG_COMP_vect
00646  
00647  #define        ADC_VECT                                ADC_vect
00648  #define        EE_READY_VECT                   EE_READY_vect
00649  
00650  #define        TIMER3_CAPT_VECT                TIMER3_CAPT_vect
00651  #define        TIMER3_COMPA_VECT               TIMER3_COMPA_vect
00652  #define        TIMER3_COMPB_VECT               TIMER3_COMPB_vect 
00653  #define        TIMER3_COMPC_VECT               TIMER3_COMPC_vect
00654  #define        TIMER3_OVF_VECT                 TIMER3_OVF_vect
00655  #define        TWI_VECT                                TWI_vect
00656  
00661  /* ================================= */
00662  
00663 
00664  //* shift these enums into another file with MACROS for AT90usb1287 or whole AVR family
00665  
00666  /* Enum: AT90USB1287 - EXT_SENSE_CONTROL */
00669  typedef enum {
00670         EXT_TRIGGER_LOW_LEVEL = 0,              
00671         EXT_TRIGGER_ANY_EDGE,                   
00672         EXT_TRIGGER_FALLING_EDGE,               
00673         EXT_TRIGGER_RISING_EDGE                 
00674  } EXT_SENSE_CONTROL;
00675  
00676  
00677  #endif
 All Classes Files Functions Enumerations Enumerator Defines