;-  ----------------------------------------------------------------------------
;-          
ATMEL Microcontroller Software Support  -  ROUSSET  -
;-  ----------------------------------------------------------------------------
;-  
DISCLAIMER:  THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
;-  
IMPLIED WARRANTIESINCLUDINGBUT NOT LIMITED TOTHE IMPLIED WARRANTIES OF
;-  MERCHANTABILITYFITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
;-  DISCLAIMEDIN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECTINDIRECT,
;-  
INCIDENTALSPECIALEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDINGBUT NOT
;-  LIMITED TOPROCUREMENT OF SUBSTITUTE GOODS OR SERVICESLOSS OF USE, DATA,
;-  OR 
PROFITS; OR BUSINESS INTERRUPTIONHOWEVER CAUSED AND ON ANY THEORY OF
;-  LIABILITYWHETHER IN CONTRACTSTRICT LIABILITY, OR TORT (INCLUDING
;-  NEGLIGENCE OR OTHERWISEARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
;-  
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;-  ----------------------------------------------------------------------------
;- 
File Name           AT91SAM7S64.h
;- Object              AT91SAM7S64 definitions
;- Generated           AT91 SW Application Group  02/23/2005 (17:06:08)
;- 
;- 
CVS Reference       : /AT91SAM7S64.pl/1.18/Wed Feb  9 15:26:02 2005
;- CVS Reference       : /SYS_SAM7S.pl/1.2/Tue Feb  1 17:01:52 2005//
;- CVS Reference       : /MC_SAM7S.pl/1.2/Tue Feb  1 17:01:00 2005//
;- CVS Reference       : /PMC_SAM7S_USB.pl/1.4/Tue Feb  8 13:58:22 2005//
;- CVS Reference       : /RSTC_SAM7S.pl/1.1/Tue Feb  1 16:16:35 2005//
;- CVS Reference       : /RTTC_6081A.pl/1.2/Tue Nov  9 14:43:58 2004//
;- CVS Reference       : /PITC_6079A.pl/1.2/Tue Nov  9 14:43:56 2004//
;- CVS Reference       : /WDTC_6080A.pl/1.3/Tue Nov  9 14:44:00 2004//
;- CVS Reference       : /VREG_6085B.pl/1.1/Tue Feb  1 16:05:48 2005//
;- CVS Reference       : /UDP_6083C.pl/1.1/Mon Jan 31 13:01:46 2005//
;- CVS Reference       : /AIC_6075A.pl/1.1/Fri Jun 28 10:36:48 2002//
;- CVS Reference       : /PIO_6057A.pl/1.2/Thu Feb  3 10:18:28 2005//
;- CVS Reference       : /DBGU_6059D.pl/1.1/Mon Jan 31 13:15:32 2005//
;- CVS Reference       : /US_6089C.pl/1.1/Mon Jul 12 18:23:26 2004//
;- CVS Reference       : /SPI_6088D.pl/1.2/Mon Feb 14 07:24:18 2005//
;- CVS Reference       : /SSC_6078A.pl/1.1/Tue Jul 13 07:45:40 2004//
;- CVS Reference       : /TC_6082A.pl/1.6/Fri Feb 18 13:53:30 2005//
;- CVS Reference       : /TWI_6061A.pl/1.1/Tue Jul 13 07:38:06 2004//
;- CVS Reference       : /PDC_6074C.pl/1.2/Thu Feb  3 08:48:54 2005//
;- CVS Reference       : /ADC_6051C.pl/1.1/Fri Oct 17 09:12:38 2003//
;- CVS Reference       : /PWM_6044D.pl/1.1/Tue Apr 27 14:53:52 2004//
;-  ----------------------------------------------------------------------------

;- 
Hardware register definition

;- *****************************************************************************
;-              
SOFTWARE API DEFINITION  FOR System Peripherals
;- *****************************************************************************

;- *****************************************************************************
;-              
SOFTWARE API DEFINITION  FOR Advanced Interrupt Controller
;- *****************************************************************************
                ^ 
;- AT91S_AIC
AIC_SMR         
# 128 ;- Source Mode Register
AIC_SVR         # 128 ;- Source Vector Register
AIC_IVR         #  4 ;- IRQ Vector Register
AIC_FVR         #  4 ;- FIQ Vector Register
AIC_ISR         #  4 ;- Interrupt Status Register
AIC_IPR         #  4 ;- Interrupt Pending Register
AIC_IMR         #  4 ;- Interrupt Mask Register
AIC_CISR        #  4 ;- Core Interrupt Status Register
                #  8 ;- Reserved
AIC_IECR        #  4 ;- Interrupt Enable Command Register
AIC_IDCR        #  4 ;- Interrupt Disable Command Register
AIC_ICCR        #  4 ;- Interrupt Clear Command Register
AIC_ISCR        #  4 ;- Interrupt Set Command Register
AIC_EOICR       #  4 ;- End of Interrupt Command Register
AIC_SPU         #  4 ;- Spurious Vector Register
AIC_DCR         #  4 ;- Debug Control Register (Protect)
                #  4 ;- Reserved
AIC_FFER        #  4 ;- Fast Forcing Enable Register
AIC_FFDR        #  4 ;- Fast Forcing Disable Register
AIC_FFSR        #  4 ;- Fast Forcing Status Register
;- -------- AIC_SMR : (AIC Offset0x0Control Register -------- 
AT91C_AIC_PRIOR           EQU (0x7:SHL:0) ;- (AICPriority Level
AT91C_AIC_PRIOR_LOWEST    EQU 
(0x0) ;- (AICLowest priority level
AT91C_AIC_PRIOR_HIGHEST   EQU 
(0x7) ;- (AICHighest priority level
AT91C_AIC_SRCTYPE         EQU 
(0x3:SHL:5) ;- (AICInterrupt Source Type
AT91C_AIC_SRCTYPE_INT_LEVEL_SENSITIVE EQU 
(0x0:SHL:5) ;- (AICInternal Sources Code Label Level Sensitive
AT91C_AIC_SRCTYPE_INT_EDGE_TRIGGERED EQU 
(0x1:SHL:5) ;- (AICInternal Sources Code Label Edge triggered
AT91C_AIC_SRCTYPE_EXT_HIGH_LEVEL EQU 
(0x2:SHL:5) ;- (AICExternal Sources Code Label High-level Sensitive
AT91C_AIC_SRCTYPE_EXT_POSITIVE_EDGE EQU 
(0x3:SHL:5) ;- (AICExternal Sources Code Label Positive Edge triggered
;- -------- AIC_CISR : (AIC Offset0x114AIC Core Interrupt Status Register -------- 
AT91C_AIC_NFIQ            EQU (0x1:SHL:0) ;- (AICNFIQ Status
AT91C_AIC_NIRQ            EQU 
(0x1:SHL:1) ;- (AICNIRQ Status
;- -------- AIC_DCR : (AIC Offset0x138AIC Debug Control Register (Protect) -------- 
AT91C_AIC_DCR_PROT        EQU (0x1:SHL:0) ;- (AICProtection Mode
AT91C_AIC_DCR_GMSK        EQU 
(0x1:SHL:1) ;- (AICGeneral Mask

;- *****************************************************************************
;-              
SOFTWARE API DEFINITION  FOR Peripheral DMA Controller
;- *****************************************************************************
                ^ 
;- AT91S_PDC
PDC_RPR         
#  4 ;- Receive Pointer Register
PDC_RCR         #  4 ;- Receive Counter Register
PDC_TPR         #  4 ;- Transmit Pointer Register
PDC_TCR         #  4 ;- Transmit Counter Register
PDC_RNPR        #  4 ;- Receive Next Pointer Register
PDC_RNCR        #  4 ;- Receive Next Counter Register
PDC_TNPR        #  4 ;- Transmit Next Pointer Register
PDC_TNCR        #  4 ;- Transmit Next Counter Register
PDC_PTCR        #  4 ;- PDC Transfer Control Register
PDC_PTSR        #  4 ;- PDC Transfer Status Register
;- -------- PDC_PTCR : (PDC Offset0x20PDC Transfer Control Register -------- 
AT91C_PDC_RXTEN           EQU (0x1:SHL:0) ;- (PDCReceiver Transfer Enable
AT91C_PDC_RXTDIS          EQU 
(0x1:SHL:1) ;- (PDCReceiver Transfer Disable
AT91C_PDC_TXTEN           EQU 
(0x1:SHL:8) ;- (PDCTransmitter Transfer Enable
AT91C_PDC_TXTDIS          EQU 
(0x1:SHL:9) ;- (PDCTransmitter Transfer Disable
;- -------- PDC_PTSR : (PDC Offset0x24PDC Transfer Status Register -------- 

;- *****************************************************************************
;-              
SOFTWARE API DEFINITION  FOR Debug Unit
;- *****************************************************************************
                ^ 
;- AT91S_DBGU
DBGU_CR         
#  4 ;- Control Register
DBGU_MR         #  4 ;- Mode Register
DBGU_IER        #  4 ;- Interrupt Enable Register
DBGU_IDR        #  4 ;- Interrupt Disable Register
DBGU_IMR        #  4 ;- Interrupt Mask Register
DBGU_CSR        #  4 ;- Channel Status Register
DBGU_RHR        #  4 ;- Receiver Holding Register
DBGU_THR        #  4 ;- Transmitter Holding Register
DBGU_BRGR       #  4 ;- Baud Rate Generator Register
                # 28 ;- Reserved
DBGU_CIDR       #  4 ;- Chip ID Register
DBGU_EXID       #  4 ;- Chip ID Extension Register
DBGU_FNTR       #  4 ;- Force NTRST Register
                # 180 ;- Reserved
DBGU_RPR        #  4 ;- Receive Pointer Register
DBGU_RCR        #  4 ;- Receive Counter Register
DBGU_TPR        #  4 ;- Transmit Pointer Register
DBGU_TCR        #  4 ;- Transmit Counter Register
DBGU_RNPR       #  4 ;- Receive Next Pointer Register
DBGU_RNCR       #  4 ;- Receive Next Counter Register
DBGU_TNPR       #  4 ;- Transmit Next Pointer Register
DBGU_TNCR       #  4 ;- Transmit Next Counter Register
DBGU_PTCR       #  4 ;- PDC Transfer Control Register
DBGU_PTSR       #  4 ;- PDC Transfer Status Register
;- -------- DBGU_CR : (DBGU Offset0x0Debug Unit Control Register -------- 
AT91C_US_RSTRX            EQU (0x1:SHL:2) ;- (DBGUReset Receiver
AT91C_US_RSTTX            EQU 
(0x1:SHL:3) ;- (DBGUReset Transmitter
AT91C_US_RXEN             EQU 
(0x1:SHL:4) ;- (DBGUReceiver Enable
AT91C_US_RXDIS            EQU 
(0x1:SHL:5) ;- (DBGUReceiver Disable
AT91C_US_TXEN             EQU 
(0x1:SHL:6) ;- (DBGUTransmitter Enable
AT91C_US_TXDIS            EQU 
(0x1:SHL:7) ;- (DBGUTransmitter Disable
AT91C_US_RSTSTA           EQU 
(0x1:SHL:8) ;- (DBGUReset Status Bits
;- -------- DBGU_MR : (DBGU Offset0x4Debug Unit Mode Register -------- 
AT91C_US_PAR              EQU (0x7:SHL:9) ;- (DBGUParity type
AT91C_US_PAR_EVEN         EQU 
(0x0:SHL:9) ;- (DBGUEven Parity
AT91C_US_PAR_ODD          EQU 
(0x1:SHL:9) ;- (DBGUOdd Parity
AT91C_US_PAR_SPACE        EQU 
(0x2:SHL:9) ;- (DBGUParity forced to 0 (Space)
AT91C_US_PAR_MARK         EQU (0x3:SHL:9) ;- (DBGUParity forced to 1 (Mark)
AT91C_US_PAR_NONE         EQU (0x4:SHL:9) ;- (DBGUNo Parity
AT91C_US_PAR_MULTI_DROP   EQU 
(0x6:SHL:9) ;- (DBGUMulti-drop mode
AT91C_US_CHMODE           EQU 
(0x3:SHL:14) ;- (DBGUChannel Mode
AT91C_US_CHMODE_NORMAL    EQU 
(0x0:SHL:14) ;- (DBGUNormal ModeThe USART channel operates as an RX/TX USART.
AT91C_US_CHMODE_AUTO      EQU (0x1:SHL:14) ;- (DBGUAutomatic Echo: Receiver Data Input is connected to the TXD pin.
AT91C_US_CHMODE_LOCAL     EQU (0x2:SHL:14) ;- (DBGULocal LoopbackTransmitter Output Signal is connected to Receiver Input Signal.
AT91C_US_CHMODE_REMOTE    EQU (0x3:SHL:14) ;- (DBGURemote LoopbackRXD pin is internally connected to TXD pin.
;- -------- 
DBGU_IER : (DBGU Offset0x8Debug Unit Interrupt Enable Register -------- 
AT91C_US_RXRDY            EQU (0x1:SHL:0) ;- (DBGURXRDY Interrupt
AT91C_US_TXRDY            EQU 
(0x1:SHL:1) ;- (DBGUTXRDY Interrupt
AT91C_US_ENDRX            EQU 
(0x1:SHL:3) ;- (DBGUEnd of Receive Transfer Interrupt
AT91C_US_ENDTX            EQU 
(0x1:SHL:4) ;- (DBGUEnd of Transmit Interrupt
AT91C_US_OVRE             EQU 
(0x1:SHL:5) ;- (DBGUOverrun Interrupt
AT91C_US_FRAME            EQU 
(0x1:SHL:6) ;- (DBGUFraming Error Interrupt
AT91C_US_PARE             EQU 
(0x1:SHL:7) ;- (DBGUParity Error Interrupt
AT91C_US_TXEMPTY          EQU 
(0x1:SHL:9) ;- (DBGUTXEMPTY Interrupt
AT91C_US_TXBUFE           EQU 
(0x1:SHL:11) ;- (DBGUTXBUFE Interrupt
AT91C_US_RXBUFF           EQU 
(0x1:SHL:12) ;- (DBGURXBUFF Interrupt
AT91C_US_COMM_TX          EQU 
(0x1:SHL:30) ;- (DBGUCOMM_TX Interrupt
AT91C_US_COMM_RX          EQU 
(0x1:SHL:31) ;- (DBGUCOMM_RX Interrupt
;- -------- DBGU_IDR : (DBGU Offset0xcDebug Unit Interrupt Disable Register -------- 
;- -------- 
DBGU_IMR : (DBGU Offset0x10Debug Unit Interrupt Mask Register -------- 
;- -------- 
DBGU_CSR : (DBGU Offset0x14Debug Unit Channel Status Register -------- 
;- -------- 
DBGU_FNTR : (DBGU Offset0x48Debug Unit FORCE_NTRST Register -------- 
AT91C_US_FORCE_NTRST      EQU (0x1:SHL:0) ;- (DBGUForce NTRST in JTAG

;- *****************************************************************************
;-              
SOFTWARE API DEFINITION  FOR Parallel Input Output Controler
;- *****************************************************************************
                ^ 
;- AT91S_PIO
PIO_PER         
#  4 ;- PIO Enable Register
PIO_PDR         #  4 ;- PIO Disable Register
PIO_PSR         #  4 ;- PIO Status Register
                #  4 ;- Reserved
PIO_OER         #  4 ;- Output Enable Register
PIO_ODR         #  4 ;- Output Disable Registerr
PIO_OSR         #  4 ;- Output Status Register
                #  4 ;- Reserved
PIO_IFER        #  4 ;- Input Filter Enable Register
PIO_IFDR        #  4 ;- Input Filter Disable Register
PIO_IFSR        #  4 ;- Input Filter Status Register
                #  4 ;- Reserved
PIO_SODR        #  4 ;- Set Output Data Register
PIO_CODR        #  4 ;- Clear Output Data Register
PIO_ODSR        #  4 ;- Output Data Status Register
PIO_PDSR        #  4 ;- Pin Data Status Register
PIO_IER         #  4 ;- Interrupt Enable Register
PIO_IDR         #  4 ;- Interrupt Disable Register
PIO_IMR         #  4 ;- Interrupt Mask Register
PIO_ISR         #  4 ;- Interrupt Status Register
PIO_MDER        #  4 ;- Multi-driver Enable Register
PIO_MDDR        #  4 ;- Multi-driver Disable Register
PIO_MDSR        #  4 ;- Multi-driver Status Register
                #  4 ;- Reserved
PIO_PPUDR       #  4 ;- Pull-up Disable Register
PIO_PPUER       #  4 ;- Pull-up Enable Register
PIO_PPUSR       #  4 ;- Pull-up Status Register
                #  4 ;- Reserved
PIO_ASR         #  4 ;- Select A Register
PIO_BSR         #  4 ;- Select B Register
PIO_ABSR        #  4 ;- AB Select Status Register
                # 36 ;- Reserved
PIO_OWER        #  4 ;- Output Write Enable Register
PIO_OWDR        #  4 ;- Output Write Disable Register
PIO_OWSR        #  4 ;- Output Write Status Register

;- *****************************************************************************
;-              
SOFTWARE API DEFINITION  FOR Clock Generator Controler
;- *****************************************************************************
                ^ 
;- AT91S_CKGR
CKGR_MOR        
#  4 ;- Main Oscillator Register
CKGR_MCFR       #  4 ;- Main Clock  Frequency Register
                #  4 ;- Reserved
CKGR_PLLR       #  4 ;- PLL Register
;- -------- CKGR_MOR : (CKGR Offset0x0Main Oscillator Register -------- 
AT91C_CKGR_MOSCEN         EQU (0x1:SHL:0) ;- (CKGRMain Oscillator Enable
AT91C_CKGR_OSCBYPASS      EQU 
(0x1:SHL:1) ;- (CKGRMain Oscillator Bypass
AT91C_CKGR_OSCOUNT        EQU 
(0xFF:SHL:8) ;- (CKGRMain Oscillator Start-up Time
;- -------- CKGR_MCFR : (CKGR Offset0x4Main Clock Frequency Register -------- 
AT91C_CKGR_MAINF          EQU (0xFFFF:SHL:0) ;- (CKGRMain Clock Frequency
AT91C_CKGR_MAINRDY        EQU 
(0x1:SHL:16) ;- (CKGRMain Clock Ready
;- -------- CKGR_PLLR : (CKGR Offset0xcPLL B Register -------- 
AT91C_CKGR_DIV            EQU (0xFF:SHL:0) ;- (CKGRDivider Selected
AT91C_CKGR_DIV_0          EQU 
(0x0) ;- (CKGRDivider output is 0
AT91C_CKGR_DIV_BYPASS     EQU 
(0x1) ;- (CKGRDivider is bypassed
AT91C_CKGR_PLLCOUNT       EQU 
(0x3F:SHL:8) ;- (CKGRPLL Counter
AT91C_CKGR_OUT            EQU 
(0x3:SHL:14) ;- (CKGRPLL Output Frequency Range
AT91C_CKGR_OUT_0          EQU 
(0x0:SHL:14) ;- (CKGRPlease refer to the PLL datasheet
AT91C_CKGR_OUT_1          EQU 
(0x1:SHL:14) ;- (CKGRPlease refer to the PLL datasheet
AT91C_CKGR_OUT_2          EQU 
(0x2:SHL:14) ;- (CKGRPlease refer to the PLL datasheet
AT91C_CKGR_OUT_3          EQU 
(0x3:SHL:14) ;- (CKGRPlease refer to the PLL datasheet
AT91C_CKGR_MUL            EQU 
(0x7FF:SHL:16) ;- (CKGRPLL Multiplier
AT91C_CKGR_USBDIV         EQU 
(0x3:SHL:28) ;- (CKGRDivider for USB Clocks
AT91C_CKGR_USBDIV_0       EQU 
(0x0:SHL:28) ;- (CKGRDivider output is PLL clock output
AT91C_CKGR_USBDIV_1       EQU 
(0x1:SHL:28) ;- (CKGRDivider output is PLL clock output divided by 2
AT91C_CKGR_USBDIV_2       EQU 
(0x2:SHL:28) ;- (CKGRDivider output is PLL clock output divided by 4

;- *****************************************************************************
;-              
SOFTWARE API DEFINITION  FOR Power Management Controler
;- *****************************************************************************
                ^ 
;- AT91S_PMC
PMC_SCER        
#  4 ;- System Clock Enable Register
PMC_SCDR        #  4 ;- System Clock Disable Register
PMC_SCSR        #  4 ;- System Clock Status Register
                #  4 ;- Reserved
PMC_PCER        #  4 ;- Peripheral Clock Enable Register
PMC_PCDR        #  4 ;- Peripheral Clock Disable Register
PMC_PCSR        #  4 ;- Peripheral Clock Status Register
                #  4 ;- Reserved
PMC_MOR         #  4 ;- Main Oscillator Register
PMC_MCFR        #  4 ;- Main Clock  Frequency Register
                #  4 ;- Reserved
PMC_PLLR        #  4 ;- PLL Register
PMC_MCKR        #  4 ;- Master Clock Register
                # 12 ;- Reserved
PMC_PCKR        # 12 ;- Programmable Clock Register
                # 20 ;- Reserved
PMC_IER         #  4 ;- Interrupt Enable Register
PMC_IDR         #  4 ;- Interrupt Disable Register
PMC_SR          #  4 ;- Status Register
PMC_IMR         #  4 ;- Interrupt Mask Register
;- -------- PMC_SCER : (PMC Offset0x0System Clock Enable Register -------- 
AT91C_PMC_PCK             EQU (0x1:SHL:0) ;- (PMCProcessor Clock
AT91C_PMC_UDP             EQU 
(0x1:SHL:7) ;- (PMCUSB Device Port Clock
AT91C_PMC_PCK0            EQU 
(0x1:SHL:8) ;- (PMCProgrammable Clock Output
AT91C_PMC_PCK1            EQU 
(0x1:SHL:9) ;- (PMCProgrammable Clock Output
AT91C_PMC_PCK2            EQU 
(0x1:SHL:10) ;- (PMCProgrammable Clock Output
;- -------- PMC_SCDR : (PMC Offset0x4System Clock Disable Register -------- 
;- -------- 
PMC_SCSR : (PMC Offset0x8System Clock Status Register -------- 
;- -------- 
CKGR_MOR : (PMC Offset0x20Main Oscillator Register -------- 
;- -------- 
CKGR_MCFR : (PMC Offset0x24Main Clock Frequency Register -------- 
;- -------- 
CKGR_PLLR : (PMC Offset0x2cPLL B Register -------- 
;- -------- 
PMC_MCKR : (PMC Offset0x30Master Clock Register -------- 
AT91C_PMC_CSS             EQU (0x3:SHL:0) ;- (PMCProgrammable Clock Selection
AT91C_PMC_CSS_SLOW_CLK    EQU 
(0x0) ;- (PMCSlow Clock is selected
AT91C_PMC_CSS_MAIN_CLK    EQU 
(0x1) ;- (PMCMain Clock is selected
AT91C_PMC_CSS_PLL_CLK     EQU 
(0x3) ;- (PMCClock from PLL is selected
AT91C_PMC_PRES            EQU 
(0x7:SHL:2) ;- (PMCProgrammable Clock Prescaler
AT91C_PMC_PRES_CLK        EQU 
(0x0:SHL:2) ;- (PMCSelected clock
AT91C_PMC_PRES_CLK_2      EQU 
(0x1:SHL:2) ;- (PMCSelected clock divided by 2
AT91C_PMC_PRES_CLK_4      EQU 
(0x2:SHL:2) ;- (PMCSelected clock divided by 4
AT91C_PMC_PRES_CLK_8      EQU 
(0x3:SHL:2) ;- (PMCSelected clock divided by 8
AT91C_PMC_PRES_CLK_16     EQU 
(0x4:SHL:2) ;- (PMCSelected clock divided by 16
AT91C_PMC_PRES_CLK_32     EQU 
(0x5:SHL:2) ;- (PMCSelected clock divided by 32
AT91C_PMC_PRES_CLK_64     EQU 
(0x6:SHL:2) ;- (PMCSelected clock divided by 64
;- -------- PMC_PCKR : (PMC Offset0x40Programmable Clock Register -------- 
;- -------- 
PMC_IER : (PMC Offset0x60PMC Interrupt Enable Register -------- 
AT91C_PMC_MOSCS           EQU (0x1:SHL:0) ;- (PMCMOSC Status/Enable/Disable/Mask
AT91C_PMC_LOCK            EQU 
(0x1:SHL:2) ;- (PMCPLL Status/Enable/Disable/Mask
AT91C_PMC_MCKRDY          EQU 
(0x1:SHL:3) ;- (PMCMCK_RDY Status/Enable/Disable/Mask
AT91C_PMC_PCK0RDY         EQU 
(0x1:SHL:8) ;- (PMCPCK0_RDY Status/Enable/Disable/Mask
AT91C_PMC_PCK1RDY         EQU 
(0x1:SHL:9) ;- (PMCPCK1_RDY Status/Enable/Disable/Mask
AT91C_PMC_PCK2RDY         EQU 
(0x1:SHL:10) ;- (PMCPCK2_RDY Status/Enable/Disable/Mask
;- -------- PMC_IDR : (PMC Offset0x64PMC Interrupt Disable Register -------- 
;- -------- 
PMC_SR : (PMC Offset0x68PMC Status Register -------- 
;- -------- 
PMC_IMR : (PMC Offset0x6cPMC Interrupt Mask Register -------- 

;- *****************************************************************************
;-              
SOFTWARE API DEFINITION  FOR Reset Controller Interface
;- *****************************************************************************
                ^ 
;- AT91S_RSTC
RSTC_RCR        
#  4 ;- Reset Control Register
RSTC_RSR        #  4 ;- Reset Status Register
RSTC_RMR        #  4 ;- Reset Mode Register
;- -------- RSTC_RCR : (RSTC Offset0x0Reset Control Register -------- 
AT91C_RSTC_PROCRST        EQU (0x1:SHL:0) ;- (RSTCProcessor Reset
AT91C_RSTC_PERRST         EQU 
(0x1:SHL:2) ;- (RSTCPeripheral Reset
AT91C_RSTC_EXTRST         EQU 
(0x1:SHL:3) ;- (RSTCExternal Reset
AT91C_RSTC_KEY            EQU 
(0xFF:SHL:24) ;- (RSTCPassword
;- -------- RSTC_RSR : (RSTC Offset0x4Reset Status Register -------- 
AT91C_RSTC_URSTS          EQU (0x1:SHL:0) ;- (RSTCUser Reset Status
AT91C_RSTC_BODSTS         EQU 
(0x1:SHL:1) ;- (RSTCBrownout Detection Status
AT91C_RSTC_RSTTYP         EQU 
(0x7:SHL:8) ;- (RSTCReset Type
AT91C_RSTC_RSTTYP_POWERUP EQU 
(0x0:SHL:8) ;- (RSTCPower-up ResetVDDCORE rising.
AT91C_RSTC_RSTTYP_WAKEUP  EQU (0x1:SHL:8) ;- (RSTCWakeUp ResetVDDCORE rising.
AT91C_RSTC_RSTTYP_WATCHDOG EQU (0x2:SHL:8) ;- (RSTCWatchdog ResetWatchdog overflow occured.
AT91C_RSTC_RSTTYP_SOFTWARE EQU (0x3:SHL:8) ;- (RSTCSoftware ResetProcessor reset required by the software.
AT91C_RSTC_RSTTYP_USER    EQU (0x4:SHL:8) ;- (RSTCUser ResetNRST pin detected low.
AT91C_RSTC_RSTTYP_BROWNOUT EQU (0x5:SHL:8) ;- (RSTCBrownout Reset occured.
AT91C_RSTC_NRSTL          EQU (0x1:SHL:16) ;- (RSTCNRST pin level
AT91C_RSTC_SRCMP          EQU 
(0x1:SHL:17) ;- (RSTCSoftware Reset Command in Progress.
;- -------- 
RSTC_RMR : (RSTC Offset0x8Reset Mode Register -------- 
AT91C_RSTC_URSTEN         EQU (0x1:SHL:0) ;- (RSTCUser Reset Enable
AT91C_RSTC_URSTIEN        EQU 
(0x1:SHL:4) ;- (RSTCUser Reset Interrupt Enable
AT91C_RSTC_ERSTL          EQU 
(0xF:SHL:8) ;- (RSTCUser Reset Enable
AT91C_RSTC_BODIEN         EQU 
(0x1:SHL:16) ;- (RSTCBrownout Detection Interrupt Enable

;- *****************************************************************************
;-              
SOFTWARE API DEFINITION  FOR Real Time Timer Controller Interface
;- *****************************************************************************
                ^ 
;- AT91S_RTTC
RTTC_RTMR       
#  4 ;- Real-time Mode Register
RTTC_RTAR       #  4 ;- Real-time Alarm Register
RTTC_RTVR       #  4 ;- Real-time Value Register
RTTC_RTSR       #  4 ;- Real-time Status Register
;- -------- RTTC_RTMR : (RTTC Offset0x0Real-time Mode Register -------- 
AT91C_RTTC_RTPRES         EQU (0xFFFF:SHL:0) ;- (RTTCReal-time Timer Prescaler Value
AT91C_RTTC_ALMIEN         EQU 
(0x1:SHL:16) ;- (RTTCAlarm Interrupt Enable
AT91C_RTTC_RTTINCIEN      EQU 
(0x1:SHL:17) ;- (RTTCReal Time Timer Increment Interrupt Enable
AT91C_RTTC_RTTRST         EQU 
(0x1:SHL:18) ;- (RTTCReal Time Timer Restart
;- -------- RTTC_RTAR : (RTTC Offset0x4Real-time Alarm Register -------- 
AT91C_RTTC_ALMV           EQU (0x0:SHL:0) ;- (RTTCAlarm Value
;- -------- RTTC_RTVR : (RTTC Offset0x8Current Real-time Value Register -------- 
AT91C_RTTC_CRTV           EQU (0x0:SHL:0) ;- (RTTCCurrent Real-time Value
;- -------- RTTC_RTSR : (RTTC Offset0xcReal-time Status Register -------- 
AT91C_RTTC_ALMS           EQU (0x1:SHL:0) ;- (RTTCReal-time Alarm Status
AT91C_RTTC_RTTINC         EQU 
(0x1:SHL:1) ;- (RTTCReal-time Timer Increment

;- *****************************************************************************
;-              
SOFTWARE API DEFINITION  FOR Periodic Interval Timer Controller Interface
;- *****************************************************************************
                ^ 
;- AT91S_PITC
PITC_PIMR       
#  4 ;- Period Interval Mode Register
PITC_PISR       #  4 ;- Period Interval Status Register
PITC_PIVR       #  4 ;- Period Interval Value Register
PITC_PIIR       #  4 ;- Period Interval Image Register
;- -------- PITC_PIMR : (PITC Offset0x0Periodic Interval Mode Register -------- 
AT91C_PITC_PIV            EQU (0xFFFFF:SHL:0) ;- (PITCPeriodic Interval Value
AT91C_PITC_PITEN          EQU 
(0x1:SHL:24) ;- (PITCPeriodic Interval Timer Enabled
AT91C_PITC_PITIEN         EQU 
(0x1:SHL:25) ;- (PITCPeriodic Interval Timer Interrupt Enable
;- -------- PITC_PISR : (PITC Offset0x4Periodic Interval Status Register -------- 
AT91C_PITC_PITS           EQU (0x1:SHL:0) ;- (PITCPeriodic Interval Timer Status
;- -------- PITC_PIVR : (PITC Offset0x8Periodic Interval Value Register -------- 
AT91C_PITC_CPIV           EQU (0xFFFFF:SHL:0) ;- (PITCCurrent Periodic Interval Value
AT91C_PITC_PICNT          EQU 
(0xFFF:SHL:20) ;- (PITCPeriodic Interval Counter
;- -------- PITC_PIIR : (PITC Offset0xcPeriodic Interval Image Register -------- 

;- *****************************************************************************
;-              
SOFTWARE API DEFINITION  FOR Watchdog Timer Controller Interface
;- *****************************************************************************
                ^ 
;- AT91S_WDTC
WDTC_WDCR       
#  4 ;- Watchdog Control Register
WDTC_WDMR       #  4 ;- Watchdog Mode Register
WDTC_WDSR       #  4 ;- Watchdog Status Register
;- -------- WDTC_WDCR : (WDTC Offset0x0Periodic Interval Image Register -------- 
AT91C_WDTC_WDRSTT         EQU (0x1:SHL:0) ;- (WDTCWatchdog Restart
AT91C_WDTC_KEY            EQU 
(0xFF:SHL:24) ;- (WDTCWatchdog KEY Password
;- -------- WDTC_WDMR : (WDTC Offset0x4Watchdog Mode Register -------- 
AT91C_WDTC_WDV            EQU (0xFFF:SHL:0) ;- (WDTCWatchdog Timer Restart
AT91C_WDTC_WDFIEN         EQU 
(0x1:SHL:12) ;- (WDTCWatchdog Fault Interrupt Enable
AT91C_WDTC_WDRSTEN        EQU 
(0x1:SHL:13) ;- (WDTCWatchdog Reset Enable
AT91C_WDTC_WDRPROC        EQU 
(0x1:SHL:14) ;- (WDTCWatchdog Timer Restart
AT91C_WDTC_WDDIS          EQU 
(0x1:SHL:15) ;- (WDTCWatchdog Disable
AT91C_WDTC_WDD            EQU 
(0xFFF:SHL:16) ;- (WDTCWatchdog Delta Value
AT91C_WDTC_WDDBGHLT       EQU 
(0x1:SHL:28) ;- (WDTCWatchdog Debug Halt
AT91C_WDTC_WDIDLEHLT      EQU 
(0x1:SHL:29) ;- (WDTCWatchdog Idle Halt
;- -------- WDTC_WDSR : (WDTC Offset0x8Watchdog Status Register -------- 
AT91C_WDTC_WDUNF          EQU (0x1:SHL:0) ;- (WDTCWatchdog Underflow
AT91C_WDTC_WDERR          EQU 
(0x1:SHL:1) ;- (WDTCWatchdog Error

;- *****************************************************************************
;-              
SOFTWARE API DEFINITION  FOR Voltage Regulator Mode Controller Interface
;- *****************************************************************************
                ^ 
;- AT91S_VREG
VREG_MR         
#  4 ;- Voltage Regulator Mode Register
;- -------- VREG_MR : (VREG Offset0x0Voltage Regulator Mode Register -------- 
AT91C_VREG_PSTDBY         EQU (0x1:SHL:0) ;- (VREGVoltage Regulator Power Standby Mode

;- *****************************************************************************
;-              
SOFTWARE API DEFINITION  FOR Memory Controller Interface
;- *****************************************************************************
                ^ 
;- AT91S_MC
MC_RCR          
#  4 ;- MC Remap Control Register
MC_ASR          #  4 ;- MC Abort Status Register
MC_AASR         #  4 ;- MC Abort Address Status Register
                # 84 ;- Reserved
MC_FMR          #  4 ;- MC Flash Mode Register
MC_FCR          #  4 ;- MC Flash Command Register
MC_FSR          #  4 ;- MC Flash Status Register
;- -------- MC_RCR : (MC Offset0x0MC Remap Control Register -------- 
AT91C_MC_RCB              EQU (0x1:SHL:0) ;- (MCRemap Command Bit
;- -------- MC_ASR : (MC Offset0x4MC Abort Status Register -------- 
AT91C_MC_UNDADD           EQU (0x1:SHL:0) ;- (MCUndefined Addess Abort Status
AT91C_MC_MISADD           EQU 
(0x1:SHL:1) ;- (MCMisaligned Addess Abort Status
AT91C_MC_ABTSZ            EQU 
(0x3:SHL:8) ;- (MCAbort Size Status
AT91C_MC_ABTSZ_BYTE       EQU 
(0x0:SHL:8) ;- (MCByte
AT91C_MC_ABTSZ_HWORD      EQU 
(0x1:SHL:8) ;- (MCHalf-word
AT91C_MC_ABTSZ_WORD       EQU 
(0x2:SHL:8) ;- (MCWord
AT91C_MC_ABTTYP           EQU 
(0x3:SHL:10) ;- (MCAbort Type Status
AT91C_MC_ABTTYP_DATAR     EQU 
(0x0:SHL:10) ;- (MCData Read
AT91C_MC_ABTTYP_DATAW     EQU 
(0x1:SHL:10) ;- (MCData Write
AT91C_MC_ABTTYP_FETCH     EQU 
(0x2:SHL:10) ;- (MCCode Fetch
AT91C_MC_MST0             EQU 
(0x1:SHL:16) ;- (MCMaster 0 Abort Source
AT91C_MC_MST1             EQU 
(0x1:SHL:17) ;- (MCMaster 1 Abort Source
AT91C_MC_SVMST0           EQU 
(0x1:SHL:24) ;- (MCSaved Master 0 Abort Source
AT91C_MC_SVMST1           EQU 
(0x1:SHL:25) ;- (MCSaved Master 1 Abort Source
;- -------- MC_FMR : (MC Offset0x60MC Flash Mode Register -------- 
AT91C_MC_FRDY             EQU (0x1:SHL:0) ;- (MCFlash Ready
AT91C_MC_LOCKE            EQU 
(0x1:SHL:2) ;- (MCLock Error
AT91C_MC_PROGE            EQU 
(0x1:SHL:3) ;- (MCProgramming Error
AT91C_MC_NEBP             EQU 
(0x1:SHL:7) ;- (MCNo Erase Before Programming
AT91C_MC_FWS              EQU 
(0x3:SHL:8) ;- (MCFlash Wait State
AT91C_MC_FWS_0FWS         EQU 
(0x0:SHL:8) ;- (MC1 cycle for Readfor Write operations
AT91C_MC_FWS_1FWS         EQU 
(0x1:SHL:8) ;- (MC2 cycles for Readfor Write operations
AT91C_MC_FWS_2FWS         EQU 
(0x2:SHL:8) ;- (MC3 cycles for Readfor Write operations
AT91C_MC_FWS_3FWS         EQU 
(0x3:SHL:8) ;- (MC4 cycles for Readfor Write operations
AT91C_MC_FMCN             EQU 
(0xFF:SHL:16) ;- (MCFlash Microsecond Cycle Number
;- -------- MC_FCR : (MC Offset0x64MC Flash Command Register -------- 
AT91C_MC_FCMD             EQU (0xF:SHL:0) ;- (MCFlash Command
AT91C_MC_FCMD_START_PROG  EQU 
(0x1) ;- (MCStarts the programming of th epage specified by PAGEN.
AT91C_MC_FCMD_LOCK        EQU (0x2) ;- (MCStarts a lock sequence of the sector defined by the bits 4 to 7 of the field PAGEN.
AT91C_MC_FCMD_PROG_AND_LOCK EQU (0x3) ;- (MCThe lock sequence automatically happens after the programming sequence is completed.
AT91C_MC_FCMD_UNLOCK      EQU (0x4) ;- (MCStarts an unlock sequence of the sector defined by the bits 4 to 7 of the field PAGEN.
AT91C_MC_FCMD_ERASE_ALL   EQU (0x8) ;- (MCStarts the erase of the entire flash.If at least a page is lockedthe command is cancelled.
AT91C_MC_FCMD_SET_GP_NVM  EQU (0xB) ;- (MCSet General Purpose NVM bits.
AT91C_MC_FCMD_CLR_GP_NVM  EQU (0xD) ;- (MCClear General Purpose NVM bits.
AT91C_MC_FCMD_SET_SECURITY EQU (0xF) ;- (MCSet Security Bit.
AT91C_MC_PAGEN            EQU (0x3FF:SHL:8) ;- (MCPage Number
AT91C_MC_KEY              EQU 
(0xFF:SHL:24) ;- (MCWriting Protect Key
;- -------- MC_FSR : (MC Offset0x68MC Flash Command Register -------- 
AT91C_MC_SECURITY         EQU (0x1:SHL:4) ;- (MCSecurity Bit Status
AT91C_MC_GPNVM0           EQU 
(0x1:SHL:8) ;- (MCSector 0 Lock Status
AT91C_MC_GPNVM1           EQU 
(0x1:SHL:9) ;- (MCSector 1 Lock Status
AT91C_MC_GPNVM2           EQU 
(0x1:SHL:10) ;- (MCSector 2 Lock Status
AT91C_MC_GPNVM3           EQU 
(0x1:SHL:11) ;- (MCSector 3 Lock Status
AT91C_MC_GPNVM4           EQU 
(0x1:SHL:12) ;- (MCSector 4 Lock Status
AT91C_MC_GPNVM5           EQU 
(0x1:SHL:13) ;- (MCSector 5 Lock Status
AT91C_MC_GPNVM6           EQU 
(0x1:SHL:14) ;- (MCSector 6 Lock Status
AT91C_MC_GPNVM7           EQU 
(0x1:SHL:15) ;- (MCSector 7 Lock Status
AT91C_MC_LOCKS0           EQU 
(0x1:SHL:16) ;- (MCSector 0 Lock Status
AT91C_MC_LOCKS1           EQU 
(0x1:SHL:17) ;- (MCSector 1 Lock Status
AT91C_MC_LOCKS2           EQU 
(0x1:SHL:18) ;- (MCSector 2 Lock Status
AT91C_MC_LOCKS3           EQU 
(0x1:SHL:19) ;- (MCSector 3 Lock Status
AT91C_MC_LOCKS4           EQU 
(0x1:SHL:20) ;- (MCSector 4 Lock Status
AT91C_MC_LOCKS5           EQU 
(0x1:SHL:21) ;- (MCSector 5 Lock Status
AT91C_MC_LOCKS6           EQU 
(0x1:SHL:22) ;- (MCSector 6 Lock Status
AT91C_MC_LOCKS7           EQU 
(0x1:SHL:23) ;- (MCSector 7 Lock Status
AT91C_MC_LOCKS8           EQU 
(0x1:SHL:24) ;- (MCSector 8 Lock Status
AT91C_MC_LOCKS9           EQU 
(0x1:SHL:25) ;- (MCSector 9 Lock Status
AT91C_MC_LOCKS10          EQU 
(0x1:SHL:26) ;- (MCSector 10 Lock Status
AT91C_MC_LOCKS11          EQU 
(0x1:SHL:27) ;- (MCSector 11 Lock Status
AT91C_MC_LOCKS12          EQU 
(0x1:SHL:28) ;- (MCSector 12 Lock Status
AT91C_MC_LOCKS13          EQU 
(0x1:SHL:29) ;- (MCSector 13 Lock Status
AT91C_MC_LOCKS14          EQU 
(0x1:SHL:30) ;- (MCSector 14 Lock Status
AT91C_MC_LOCKS15          EQU 
(0x1:SHL:31) ;- (MCSector 15 Lock Status

;- *****************************************************************************
;-              
SOFTWARE API DEFINITION  FOR Serial Parallel Interface
;- *****************************************************************************
                ^ 
;- AT91S_SPI
SPI_CR          
#  4 ;- Control Register
SPI_MR          #  4 ;- Mode Register
SPI_RDR         #  4 ;- Receive Data Register
SPI_TDR         #  4 ;- Transmit Data Register
SPI_SR          #  4 ;- Status Register
SPI_IER         #  4 ;- Interrupt Enable Register
SPI_IDR         #  4 ;- Interrupt Disable Register
SPI_IMR         #  4 ;- Interrupt Mask Register
                # 16 ;- Reserved
SPI_CSR         # 16 ;- Chip Select Register
                # 192 ;- Reserved
SPI_RPR         #  4 ;- Receive Pointer Register
SPI_RCR         #  4 ;- Receive Counter Register
SPI_TPR         #  4 ;- Transmit Pointer Register
SPI_TCR         #  4 ;- Transmit Counter Register
SPI_RNPR        #  4 ;- Receive Next Pointer Register
SPI_RNCR        #  4 ;- Receive Next Counter Register
SPI_TNPR        #  4 ;- Transmit Next Pointer Register
SPI_TNCR        #  4 ;- Transmit Next Counter Register
SPI_PTCR        #  4 ;- PDC Transfer Control Register
SPI_PTSR        #  4 ;- PDC Transfer Status Register
;- -------- SPI_CR : (SPI Offset0x0SPI Control Register -------- 
AT91C_SPI_SPIEN           EQU (0x1:SHL:0) ;- (SPISPI Enable
AT91C_SPI_SPIDIS          EQU 
(0x1:SHL:1) ;- (SPISPI Disable
AT91C_SPI_SWRST           EQU 
(0x1:SHL:7) ;- (SPISPI Software reset
AT91C_SPI_LASTXFER        EQU 
(0x1:SHL:24) ;- (SPISPI Last Transfer
;- -------- SPI_MR : (SPI Offset0x4SPI Mode Register -------- 
AT91C_SPI_MSTR            EQU (0x1:SHL:0) ;- (SPIMaster/Slave Mode
AT91C_SPI_PS              EQU 
(0x1:SHL:1) ;- (SPIPeripheral Select
AT91C_SPI_PS_FIXED        EQU 
(0x0:SHL:1) ;- (SPIFixed Peripheral Select
AT91C_SPI_PS_VARIABLE     EQU 
(0x1:SHL:1) ;- (SPIVariable Peripheral Select
AT91C_SPI_PCSDEC          EQU 
(0x1:SHL:2) ;- (SPIChip Select Decode
AT91C_SPI_FDIV            EQU 
(0x1:SHL:3) ;- (SPIClock Selection
AT91C_SPI_MODFDIS         EQU 
(0x1:SHL:4) ;- (SPIMode Fault Detection
AT91C_SPI_LLB             EQU 
(0x1:SHL:7) ;- (SPIClock Selection
AT91C_SPI_PCS             EQU 
(0xF:SHL:16) ;- (SPIPeripheral Chip Select
AT91C_SPI_DLYBCS          EQU 
(0xFF:SHL:24) ;- (SPIDelay Between Chip Selects
;- -------- SPI_RDR : (SPI Offset0x8Receive Data Register -------- 
AT91C_SPI_RD              EQU (0xFFFF:SHL:0) ;- (SPIReceive Data
AT91C_SPI_RPCS            EQU 
(0xF:SHL:16) ;- (SPIPeripheral Chip Select Status
;- -------- SPI_TDR : (SPI Offset0xcTransmit Data Register -------- 
AT91C_SPI_TD              EQU (0xFFFF:SHL:0) ;- (SPITransmit Data
AT91C_SPI_TPCS            EQU 
(0xF:SHL:16) ;- (SPIPeripheral Chip Select Status
;- -------- SPI_SR : (SPI Offset0x10Status Register -------- 
AT91C_SPI_RDRF            EQU (0x1:SHL:0) ;- (SPIReceive Data Register Full
AT91C_SPI_TDRE            EQU 
(0x1:SHL:1) ;- (SPITransmit Data Register Empty
AT91C_SPI_MODF            EQU (0x1:SHL:2) ;- (SPIMode Fault Error
AT91C_SPI_OVRES           EQU 
(0x1:SHL:3) ;- (SPIOverrun Error Status
AT91C_SPI_ENDRX           EQU 
(0x1:SHL:4) ;- (SPIEnd of Receiver Transfer
AT91C_SPI_ENDTX           EQU 
(0x1:SHL:5) ;- (SPIEnd of Receiver Transfer
AT91C_SPI_RXBUFF          EQU 
(0x1:SHL:6) ;- (SPIRXBUFF Interrupt
AT91C_SPI_TXBUFE          EQU 
(0x1:SHL:7) ;- (SPITXBUFE Interrupt
AT91C_SPI_NSSR            EQU 
(0x1:SHL:8) ;- (SPINSSR Interrupt
AT91C_SPI_TXEMPTY         EQU 
(0x1:SHL:9) ;- (SPITXEMPTY Interrupt
AT91C_SPI_SPIENS          EQU 
(0x1:SHL:16) ;- (SPIEnable Status
;- -------- SPI_IER : (SPI Offset0x14Interrupt Enable Register -------- 
;- -------- 
SPI_IDR : (SPI Offset0x18Interrupt Disable Register -------- 
;- -------- 
SPI_IMR : (SPI Offset0x1cInterrupt Mask Register -------- 
;- -------- 
SPI_CSR : (SPI Offset0x30Chip Select Register -------- 
AT91C_SPI_CPOL            EQU (0x1:SHL:0) ;- (SPIClock Polarity
AT91C_SPI_NCPHA           EQU 
(0x1:SHL:1) ;- (SPIClock Phase
AT91C_SPI_CSAAT           EQU 
(0x1:SHL:3) ;- (SPIChip Select Active After Transfer
AT91C_SPI_BITS            EQU 
(0xF:SHL:4) ;- (SPIBits Per Transfer
AT91C_SPI_BITS_8          EQU 
(0x0:SHL:4) ;- (SPI8 Bits Per transfer
AT91C_SPI_BITS_9          EQU 
(0x1:SHL:4) ;- (SPI9 Bits Per transfer
AT91C_SPI_BITS_10         EQU 
(0x2:SHL:4) ;- (SPI10 Bits Per transfer
AT91C_SPI_BITS_11         EQU 
(0x3:SHL:4) ;- (SPI11 Bits Per transfer
AT91C_SPI_BITS_12         EQU 
(0x4:SHL:4) ;- (SPI12 Bits Per transfer
AT91C_SPI_BITS_13         EQU 
(0x5:SHL:4) ;- (SPI13 Bits Per transfer
AT91C_SPI_BITS_14         EQU 
(0x6:SHL:4) ;- (SPI14 Bits Per transfer
AT91C_SPI_BITS_15         EQU 
(0x7:SHL:4) ;- (SPI15 Bits Per transfer
AT91C_SPI_BITS_16         EQU 
(0x8:SHL:4) ;- (SPI16 Bits Per transfer
AT91C_SPI_SCBR            EQU 
(0xFF:SHL:8) ;- (SPISerial Clock Baud Rate
AT91C_SPI_DLYBS           EQU 
(0xFF:SHL:16) ;- (SPISerial Clock Baud Rate
AT91C_SPI_DLYBCT          EQU 
(0xFF:SHL:24) ;- (SPIDelay Between Consecutive Transfers

;- *****************************************************************************
;-              
SOFTWARE API DEFINITION  FOR Analog to Digital Convertor
;- *****************************************************************************
                ^ 
;- AT91S_ADC
ADC_CR          
#  4 ;- ADC Control Register
ADC_MR          #  4 ;- ADC Mode Register
                #  8 ;- Reserved
ADC_CHER        #  4 ;- ADC Channel Enable Register
ADC_CHDR        #  4 ;- ADC Channel Disable Register
ADC_CHSR        #  4 ;- ADC Channel Status Register
ADC_SR          #  4 ;- ADC Status Register
ADC_LCDR        #  4 ;- ADC Last Converted Data Register
ADC_IER         #  4 ;- ADC Interrupt Enable Register
ADC_IDR         #  4 ;- ADC Interrupt Disable Register
ADC_IMR         #  4 ;- ADC Interrupt Mask Register
ADC_CDR0        #  4 ;- ADC Channel Data Register 0
ADC_CDR1        #  4 ;- ADC Channel Data Register 1
ADC_CDR2        #  4 ;- ADC Channel Data Register 2
ADC_CDR3        #  4 ;- ADC Channel Data Register 3
ADC_CDR4        #  4 ;- ADC Channel Data Register 4
ADC_CDR5        #  4 ;- ADC Channel Data Register 5
ADC_CDR6        #  4 ;- ADC Channel Data Register 6
ADC_CDR7        #  4 ;- ADC Channel Data Register 7
                # 176 ;- Reserved
ADC_RPR         #  4 ;- Receive Pointer Register
ADC_RCR         #  4 ;- Receive Counter Register
ADC_TPR         #  4 ;- Transmit Pointer Register
ADC_TCR         #  4 ;- Transmit Counter Register
ADC_RNPR        #  4 ;- Receive Next Pointer Register
ADC_RNCR        #  4 ;- Receive Next Counter Register
ADC_TNPR        #  4 ;- Transmit Next Pointer Register
ADC_TNCR        #  4 ;- Transmit Next Counter Register
ADC_PTCR        #  4 ;- PDC Transfer Control Register
ADC_PTSR        #  4 ;- PDC Transfer Status Register
;- -------- ADC_CR : (ADC Offset0x0ADC Control Register -------- 
AT91C_ADC_SWRST           EQU (0x1:SHL:0) ;- (ADCSoftware Reset
AT91C_ADC_START           EQU 
(0x1:SHL:1) ;- (ADCStart Conversion
;- -------- ADC_MR : (ADC Offset0x4ADC Mode Register -------- 
AT91C_ADC_TRGEN           EQU (0x1:SHL:0) ;- (ADCTrigger Enable
AT91C_ADC_TRGEN_DIS       EQU 
(0x0) ;- (ADCHradware triggers are disabledStarting a conversion is only possible by software
AT91C_ADC_TRGEN_EN        EQU 
(0x1) ;- (ADCHardware trigger selected by TRGSEL field is enabled.
AT91C_ADC_TRGSEL          EQU (0x7:SHL:1) ;- (ADCTrigger Selection
AT91C_ADC_TRGSEL_TIOA0    EQU 
(0x0:SHL:1) ;- (ADCSelected TRGSEL TIAO0
AT91C_ADC_TRGSEL_TIOA1    EQU 
(0x1:SHL:1) ;- (ADCSelected TRGSEL TIAO1
AT91C_ADC_TRGSEL_TIOA2    EQU 
(0x2:SHL:1) ;- (ADCSelected TRGSEL TIAO2
AT91C_ADC_TRGSEL_TIOA3    EQU 
(0x3:SHL:1) ;- (ADCSelected TRGSEL TIAO3
AT91C_ADC_TRGSEL_TIOA4    EQU 
(0x4:SHL:1) ;- (ADCSelected TRGSEL TIAO4
AT91C_ADC_TRGSEL_TIOA5    EQU 
(0x5:SHL:1) ;- (ADCSelected TRGSEL TIAO5
AT91C_ADC_TRGSEL_EXT      EQU 
(0x6:SHL:1) ;- (ADCSelected TRGSEL External Trigger
AT91C_ADC_LOWRES          EQU 
(0x1:SHL:4) ;- (ADCResolution.
AT91C_ADC_LOWRES_10_BIT   EQU (0x0:SHL:4) ;- (ADC10-bit resolution
AT91C_ADC_LOWRES_8_BIT    EQU 
(0x1:SHL:4) ;- (ADC8-bit resolution
AT91C_ADC_SLEEP           EQU 
(0x1:SHL:5) ;- (ADCSleep Mode
AT91C_ADC_SLEEP_NORMAL_MODE EQU 
(0x0:SHL:5) ;- (ADCNormal Mode
AT91C_ADC_SLEEP_MODE      EQU 
(0x1:SHL:5) ;- (ADCSleep Mode
AT91C_ADC_PRESCAL         EQU 
(0x3F:SHL:8) ;- (ADCPrescaler rate selection
AT91C_ADC_STARTUP         EQU 
(0x1F:SHL:16) ;- (ADCStartup Time
AT91C_ADC_SHTIM           EQU 
(0xF:SHL:24) ;- (ADCSample Hold Time
;- --------     ADC_CHER : (ADC Offset0x10ADC Channel Enable Register -------- 
AT91C_ADC_CH0             EQU (0x1:SHL:0) ;- (ADCChannel 0
AT91C_ADC_CH1             EQU 
(0x1:SHL:1) ;- (ADCChannel 1
AT91C_ADC_CH2             EQU 
(0x1:SHL:2) ;- (ADCChannel 2
AT91C_ADC_CH3             EQU 
(0x1:SHL:3) ;- (ADCChannel 3
AT91C_ADC_CH4             EQU 
(0x1:SHL:4) ;- (ADCChannel 4
AT91C_ADC_CH5             EQU 
(0x1:SHL:5) ;- (ADCChannel 5
AT91C_ADC_CH6             EQU 
(0x1:SHL:6) ;- (ADCChannel 6
AT91C_ADC_CH7             EQU 
(0x1:SHL:7) ;- (ADCChannel 7
;- --------     ADC_CHDR : (ADC Offset0x14ADC Channel Disable Register -------- 
;- --------     
ADC_CHSR : (ADC Offset0x18ADC Channel Status Register -------- 
;- -------- 
ADC_SR : (ADC Offset0x1cADC Status Register -------- 
AT91C_ADC_EOC0            EQU (0x1:SHL:0) ;- (ADCEnd of Conversion
AT91C_ADC_EOC1            EQU 
(0x1:SHL:1) ;- (ADCEnd of Conversion
AT91C_ADC_EOC2            EQU 
(0x1:SHL:2) ;- (ADCEnd of Conversion
AT91C_ADC_EOC3            EQU 
(0x1:SHL:3) ;- (ADCEnd of Conversion
AT91C_ADC_EOC4            EQU 
(0x1:SHL:4) ;- (ADCEnd of Conversion
AT91C_ADC_EOC5            EQU 
(0x1:SHL:5) ;- (ADCEnd of Conversion
AT91C_ADC_EOC6            EQU 
(0x1:SHL:6) ;- (ADCEnd of Conversion
AT91C_ADC_EOC7            EQU 
(0x1:SHL:7) ;- (ADCEnd of Conversion
AT91C_ADC_OVRE0           EQU 
(0x1:SHL:8) ;- (ADCOverrun Error
AT91C_ADC_OVRE1           EQU 
(0x1:SHL:9) ;- (ADCOverrun Error
AT91C_ADC_OVRE2           EQU 
(0x1:SHL:10) ;- (ADCOverrun Error
AT91C_ADC_OVRE3           EQU 
(0x1:SHL:11) ;- (ADCOverrun Error
AT91C_ADC_OVRE4           EQU 
(0x1:SHL:12) ;- (ADCOverrun Error
AT91C_ADC_OVRE5           EQU 
(0x1:SHL:13) ;- (ADCOverrun Error
AT91C_ADC_OVRE6           EQU 
(0x1:SHL:14) ;- (ADCOverrun Error
AT91C_ADC_OVRE7           EQU 
(0x1:SHL:15) ;- (ADCOverrun Error
AT91C_ADC_DRDY            EQU 
(0x1:SHL:16) ;- (ADCData Ready
AT91C_ADC_GOVRE           EQU 
(0x1:SHL:17) ;- (ADCGeneral Overrun
AT91C_ADC_ENDRX           EQU 
(0x1:SHL:18) ;- (ADCEnd of Receiver Transfer
AT91C_ADC_RXBUFF          EQU 
(0x1:SHL:19) ;- (ADCRXBUFF Interrupt
;- -------- ADC_LCDR : (ADC Offset0x20ADC Last Converted Data Register -------- 
AT91C_ADC_LDATA           EQU (0x3FF:SHL:0) ;- (ADCLast Data Converted
;- -------- ADC_IER : (ADC Offset0x24ADC Interrupt Enable Register -------- 
;- -------- 
ADC_IDR : (ADC Offset0x28ADC Interrupt Disable Register -------- 
;- -------- 
ADC_IMR : (ADC Offset0x2cADC Interrupt Mask Register -------- 
;- -------- 
ADC_CDR0 : (ADC Offset0x30ADC Channel Data Register 0 -------- 
AT91C_ADC_DATA            EQU (0x3FF:SHL:0) ;- (ADCConverted Data
;- -------- ADC_CDR1 : (ADC Offset0x34ADC Channel Data Register 1 -------- 
;- -------- 
ADC_CDR2 : (ADC Offset0x38ADC Channel Data Register 2 -------- 
;- -------- 
ADC_CDR3 : (ADC Offset0x3cADC Channel Data Register 3 -------- 
;- -------- 
ADC_CDR4 : (ADC Offset0x40ADC Channel Data Register 4 -------- 
;- -------- 
ADC_CDR5 : (ADC Offset0x44ADC Channel Data Register 5 -------- 
;- -------- 
ADC_CDR6 : (ADC Offset0x48ADC Channel Data Register 6 -------- 
;- -------- 
ADC_CDR7 : (ADC Offset0x4cADC Channel Data Register 7 -------- 

;- *****************************************************************************
;-              
SOFTWARE API DEFINITION  FOR Synchronous Serial Controller Interface
;- *****************************************************************************
                ^ 
;- AT91S_SSC
SSC_CR          
#  4 ;- Control Register
SSC_CMR         #  4 ;- Clock Mode Register
                #  8 ;- Reserved
SSC_RCMR        #  4 ;- Receive Clock ModeRegister
SSC_RFMR        #  4 ;- Receive Frame Mode Register
SSC_TCMR        #  4 ;- Transmit Clock Mode Register
SSC_TFMR        #  4 ;- Transmit Frame Mode Register
SSC_RHR         #  4 ;- Receive Holding Register
SSC_THR         #  4 ;- Transmit Holding Register
                #  8 ;- Reserved
SSC_RSHR        #  4 ;- Receive Sync Holding Register
SSC_TSHR        #  4 ;- Transmit Sync Holding Register
                #  8 ;- Reserved
SSC_SR          #  4 ;- Status Register
SSC_IER         #  4 ;- Interrupt Enable Register
SSC_IDR         #  4 ;- Interrupt Disable Register
SSC_IMR         #  4 ;- Interrupt Mask Register
                # 176 ;- Reserved
SSC_RPR         #  4 ;- Receive Pointer Register
SSC_RCR         #  4 ;- Receive Counter Register
SSC_TPR         #  4 ;- Transmit Pointer Register
SSC_TCR         #  4 ;- Transmit Counter Register
SSC_RNPR        #  4 ;- Receive Next Pointer Register
SSC_RNCR        #  4 ;- Receive Next Counter Register
SSC_TNPR        #  4 ;- Transmit Next Pointer Register
SSC_TNCR        #  4 ;- Transmit Next Counter Register
SSC_PTCR        #  4 ;- PDC Transfer Control Register
SSC_PTSR        #  4 ;- PDC Transfer Status Register
;- -------- SSC_CR : (SSC Offset0x0SSC Control Register -------- 
AT91C_SSC_RXEN            EQU (0x1:SHL:0) ;- (SSCReceive Enable
AT91C_SSC_RXDIS           EQU 
(0x1:SHL:1) ;- (SSCReceive Disable
AT91C_SSC_TXEN            EQU 
(0x1:SHL:8) ;- (SSCTransmit Enable
AT91C_SSC_TXDIS           EQU 
(0x1:SHL:9) ;- (SSCTransmit Disable
AT91C_SSC_SWRST           EQU 
(0x1:SHL:15) ;- (SSCSoftware Reset
;- -------- SSC_RCMR : (SSC Offset0x10SSC Receive Clock Mode Register -------- 
AT91C_SSC_CKS             EQU (0x3:SHL:0) ;- (SSCReceive/Transmit Clock Selection
AT91C_SSC_CKS_DIV         EQU 
(0x0) ;- (SSCDivided Clock
AT91C_SSC_CKS_TK          EQU 
(0x1) ;- (SSCTK Clock signal
AT91C_SSC_CKS_RK          EQU 
(0x2) ;- (SSCRK pin
AT91C_SSC_CKO             EQU 
(0x7:SHL:2) ;- (SSCReceive/Transmit Clock Output Mode Selection
AT91C_SSC_CKO_NONE        EQU 
(0x0:SHL:2) ;- (SSCReceive/Transmit Clock Output ModeNone RK pinInput-only
AT91C_SSC_CKO_CONTINOUS   EQU 
(0x1:SHL:2) ;- (SSCContinuous Receive/Transmit Clock RK pinOutput
AT91C_SSC_CKO_DATA_TX     EQU 
(0x2:SHL:2) ;- (SSCReceive/Transmit Clock only during data transfers RK pinOutput
AT91C_SSC_CKI             EQU 
(0x1:SHL:5) ;- (SSCReceive/Transmit Clock Inversion
AT91C_SSC_START           EQU 
(0xF:SHL:8) ;- (SSCReceive/Transmit Start Selection
AT91C_SSC_START_CONTINOUS EQU 
(0x0:SHL:8) ;- (SSCContinuous, as soon as the receiver is enabled, and immediately after the end of transfer of the previous data.
AT91C_SSC_START_TX        EQU (0x1:SHL:8) ;- (SSCTransmit/Receive start
AT91C_SSC_START_LOW_RF    EQU 
(0x2:SHL:8) ;- (SSCDetection of a low level on RF input
AT91C_SSC_START_HIGH_RF   EQU 
(0x3:SHL:8) ;- (SSCDetection of a high level on RF input
AT91C_SSC_START_FALL_RF   EQU 
(0x4:SHL:8) ;- (SSCDetection of a falling edge on RF input
AT91C_SSC_START_RISE_RF   EQU 
(0x5:SHL:8) ;- (SSCDetection of a rising edge on RF input
AT91C_SSC_START_LEVEL_RF  EQU 
(0x6:SHL:8) ;- (SSCDetection of any level change on RF input
AT91C_SSC_START_EDGE_RF   EQU 
(0x7:SHL:8) ;- (SSCDetection of any edge on RF input
AT91C_SSC_START_0         EQU 
(0x8:SHL:8) ;- (SSCCompare 0
AT91C_SSC_STTDLY          EQU 
(0xFF:SHL:16) ;- (SSCReceive/Transmit Start Delay
AT91C_SSC_PERIOD          EQU 
(0xFF:SHL:24) ;- (SSCReceive/Transmit Period Divider Selection
;- -------- SSC_RFMR : (SSC Offset0x14SSC Receive Frame Mode Register -------- 
AT91C_SSC_DATLEN          EQU (0x1F:SHL:0) ;- (SSCData Length
AT91C_SSC_LOOP            EQU 
(0x1:SHL:5) ;- (SSCLoop Mode
AT91C_SSC_MSBF            EQU 
(0x1:SHL:7) ;- (SSCMost Significant Bit First
AT91C_SSC_DATNB           EQU 
(0xF:SHL:8) ;- (SSCData Number per Frame
AT91C_SSC_FSLEN           EQU 
(0xF:SHL:16) ;- (SSCReceive/Transmit Frame Sync length
AT91C_SSC_FSOS            EQU 
(0x7:SHL:20) ;- (SSCReceive/Transmit Frame Sync Output Selection
AT91C_SSC_FSOS_NONE       EQU 
(0x0:SHL:20) ;- (SSCSelected Receive/Transmit Frame Sync SignalNone RK pin Input-only
AT91C_SSC_FSOS_NEGATIVE   EQU 
(0x1:SHL:20) ;- (SSCSelected Receive/Transmit Frame Sync SignalNegative Pulse
AT91C_SSC_FSOS_POSITIVE   EQU 
(0x2:SHL:20) ;- (SSCSelected Receive/Transmit Frame Sync SignalPositive Pulse
AT91C_SSC_FSOS_LOW        EQU 
(0x3:SHL:20) ;- (SSCSelected Receive/Transmit Frame Sync SignalDriver Low during data transfer
AT91C_SSC_FSOS_HIGH       EQU 
(0x4:SHL:20) ;- (SSCSelected Receive/Transmit Frame Sync SignalDriver High during data transfer
AT91C_SSC_FSOS_TOGGLE     EQU 
(0x5:SHL:20) ;- (SSCSelected Receive/Transmit Frame Sync SignalToggling at each start of data transfer
AT91C_SSC_FSEDGE          EQU 
(0x1:SHL:24) ;- (SSCFrame Sync Edge Detection
;- -------- SSC_TCMR : (SSC Offset0x18SSC Transmit Clock Mode Register -------- 
;- -------- 
SSC_TFMR : (SSC Offset0x1cSSC Transmit Frame Mode Register -------- 
AT91C_SSC_DATDEF          EQU (0x1:SHL:5) ;- (SSCData Default Value
AT91C_SSC_FSDEN           EQU 
(0x1:SHL:23) ;- (SSCFrame Sync Data Enable
;- -------- SSC_SR : (SSC Offset0x40SSC Status Register -------- 
AT91C_SSC_TXRDY           EQU (0x1:SHL:0) ;- (SSCTransmit Ready
AT91C_SSC_TXEMPTY         EQU 
(0x1:SHL:1) ;- (SSCTransmit Empty
AT91C_SSC_ENDTX           EQU (0x1:SHL:2) ;- (SSCEnd Of Transmission
AT91C_SSC_TXBUFE          EQU 
(0x1:SHL:3) ;- (SSCTransmit Buffer Empty
AT91C_SSC_RXRDY           EQU (0x1:SHL:4) ;- (SSCReceive Ready
AT91C_SSC_OVRUN           EQU 
(0x1:SHL:5) ;- (SSCReceive Overrun
AT91C_SSC_ENDRX           EQU 
(0x1:SHL:6) ;- (SSCEnd of Reception
AT91C_SSC_RXBUFF          EQU 
(0x1:SHL:7) ;- (SSCReceive Buffer Full
AT91C_SSC_TXSYN           EQU 
(0x1:SHL:10) ;- (SSCTransmit Sync
AT91C_SSC_RXSYN           EQU 
(0x1:SHL:11) ;- (SSCReceive Sync
AT91C_SSC_TXENA           EQU 
(0x1:SHL:16) ;- (SSCTransmit Enable
AT91C_SSC_RXENA           EQU 
(0x1:SHL:17) ;- (SSCReceive Enable
;- -------- SSC_IER : (SSC Offset0x44SSC Interrupt Enable Register -------- 
;- -------- 
SSC_IDR : (SSC Offset0x48SSC Interrupt Disable Register -------- 
;- -------- 
SSC_IMR : (SSC Offset0x4cSSC Interrupt Mask Register -------- 

;- *****************************************************************************
;-              
SOFTWARE API DEFINITION  FOR Usart
;- *****************************************************************************
                ^ 
;- AT91S_USART
US_CR           
#  4 ;- Control Register
US_MR           #  4 ;- Mode Register
US_IER          #  4 ;- Interrupt Enable Register
US_IDR          #  4 ;- Interrupt Disable Register
US_IMR          #  4 ;- Interrupt Mask Register
US_CSR          #  4 ;- Channel Status Register
US_RHR          #  4 ;- Receiver Holding Register
US_THR          #  4 ;- Transmitter Holding Register
US_BRGR         #  4 ;- Baud Rate Generator Register
US_RTOR         #  4 ;- Receiver Time-out Register
US_TTGR         #  4 ;- Transmitter Time-guard Register
                # 20 ;- Reserved
US_FIDI         #  4 ;- FI_DI_Ratio Register
US_NER          #  4 ;- Nb Errors Register
                #  4 ;- Reserved
US_IF           #  4 ;- IRDA_FILTER Register
                # 176 ;- Reserved
US_RPR          #  4 ;- Receive Pointer Register
US_RCR          #  4 ;- Receive Counter Register
US_TPR          #  4 ;- Transmit Pointer Register
US_TCR          #  4 ;- Transmit Counter Register
US_RNPR         #  4 ;- Receive Next Pointer Register
US_RNCR         #  4 ;- Receive Next Counter Register
US_TNPR         #  4 ;- Transmit Next Pointer Register
US_TNCR         #  4 ;- Transmit Next Counter Register
US_PTCR         #  4 ;- PDC Transfer Control Register
US_PTSR         #  4 ;- PDC Transfer Status Register
;- -------- US_CR : (USART Offset0x0Debug Unit Control Register -------- 
AT91C_US_STTBRK           EQU (0x1:SHL:9) ;- (USARTStart Break
AT91C_US_STPBRK           EQU (0x1:SHL:10) ;- (USARTStop Break
AT91C_US_STTTO            EQU (0x1:SHL:11) ;- (USARTStart Time-out
AT91C_US_SENDA            EQU 
(0x1:SHL:12) ;- (USARTSend Address
AT91C_US_RSTIT            EQU 
(0x1:SHL:13) ;- (USARTReset Iterations
AT91C_US_RSTNACK          EQU 
(0x1:SHL:14) ;- (USARTReset Non Acknowledge
AT91C_US_RETTO            EQU 
(0x1:SHL:15) ;- (USARTRearm Time-out
AT91C_US_DTREN            EQU 
(0x1:SHL:16) ;- (USARTData Terminal ready Enable
AT91C_US_DTRDIS           EQU 
(0x1:SHL:17) ;- (USARTData Terminal ready Disable
AT91C_US_RTSEN            EQU 
(0x1:SHL:18) ;- (USARTRequest to Send enable
AT91C_US_RTSDIS           EQU 
(0x1:SHL:19) ;- (USARTRequest to Send Disable
;- -------- US_MR : (USART Offset0x4Debug Unit Mode Register -------- 
AT91C_US_USMODE           EQU (0xF:SHL:0) ;- (USARTUsart mode
AT91C_US_USMODE_NORMAL    EQU 
(0x0) ;- (USARTNormal
AT91C_US_USMODE_RS485     EQU 
(0x1) ;- (USARTRS485
AT91C_US_USMODE_HWHSH     EQU 
(0x2) ;- (USARTHardware Handshaking
AT91C_US_USMODE_MODEM     EQU 
(0x3) ;- (USARTModem
AT91C_US_USMODE_ISO7816_0 EQU 
(0x4) ;- (USARTISO7816 protocol0
AT91C_US_USMODE_ISO7816_1 EQU 
(0x6) ;- (USARTISO7816 protocol1
AT91C_US_USMODE_IRDA      EQU 
(0x8) ;- (USARTIrDA
AT91C_US_USMODE_SWHSH     EQU 
(0xC) ;- (USARTSoftware Handshaking
AT91C_US_CLKS             EQU 
(0x3:SHL:4) ;- (USARTClock Selection (Baud Rate generator Input Clock
AT91C_US_CLKS_CLOCK       EQU 
(0x0:SHL:4) ;- (USARTClock
AT91C_US_CLKS_FDIV1       EQU 
(0x1:SHL:4) ;- (USARTfdiv1
AT91C_US_CLKS_SLOW        EQU 
(0x2:SHL:4) ;- (USARTslow_clock (ARM)
AT91C_US_CLKS_EXT         EQU (0x3:SHL:4) ;- (USARTExternal (SCK)
AT91C_US_CHRL             EQU (0x3:SHL:6) ;- (USARTClock Selection (Baud Rate generator Input Clock
AT91C_US_CHRL_5_BITS      EQU 
(0x0:SHL:6) ;- (USARTCharacter Length5 bits
AT91C_US_CHRL_6_BITS      EQU 
(0x1:SHL:6) ;- (USARTCharacter Length6 bits
AT91C_US_CHRL_7_BITS      EQU 
(0x2:SHL:6) ;- (USARTCharacter Length7 bits
AT91C_US_CHRL_8_BITS      EQU 
(0x3:SHL:6) ;- (USARTCharacter Length8 bits
AT91C_US_SYNC             EQU 
(0x1:SHL:8) ;- (USARTSynchronous Mode Select
AT91C_US_NBSTOP           EQU 
(0x3:SHL:12) ;- (USARTNumber of Stop bits
AT91C_US_NBSTOP_1_BIT     EQU 
(0x0:SHL:12) ;- (USART1 stop bit
AT91C_US_NBSTOP_15_BIT    EQU 
(0x1:SHL:12) ;- (USARTAsynchronous (SYNC=02 stop bits Synchronous (SYNC=12 stop bits
AT91C_US_NBSTOP_2_BIT     EQU 
(0x2:SHL:12) ;- (USART2 stop bits
AT91C_US_MSBF             EQU 
(0x1:SHL:16) ;- (USARTBit Order
AT91C_US_MODE9            EQU 
(0x1:SHL:17) ;- (USART9-bit Character length
AT91C_US_CKLO             EQU 
(0x1:SHL:18) ;- (USARTClock Output Select
AT91C_US_OVER             EQU 
(0x1:SHL:19) ;- (USARTOver Sampling Mode
AT91C_US_INACK            EQU 
(0x1:SHL:20) ;- (USARTInhibit Non Acknowledge
AT91C_US_DSNACK           EQU 
(0x1:SHL:21) ;- (USARTDisable Successive NACK
AT91C_US_MAX_ITER         EQU 
(0x1:SHL:24) ;- (USARTNumber of Repetitions
AT91C_US_FILTER           EQU 
(0x1:SHL:28) ;- (USARTReceive Line Filter
;- -------- US_IER : (USART Offset0x8Debug Unit Interrupt Enable Register -------- 
AT91C_US_RXBRK            EQU (0x1:SHL:2) ;- (USART) Break Received/End of Break
AT91C_US_TIMEOUT          EQU (0x1:SHL:8) ;- (USARTReceiver Time-out
AT91C_US_ITERATION        EQU 
(0x1:SHL:10) ;- (USARTMax number of Repetitions Reached
AT91C_US_NACK             EQU 
(0x1:SHL:13) ;- (USARTNon Acknowledge
AT91C_US_RIIC             EQU 
(0x1:SHL:16) ;- (USARTRing INdicator Input Change Flag
AT91C_US_DSRIC            EQU 
(0x1:SHL:17) ;- (USARTData Set Ready Input Change Flag
AT91C_US_DCDIC            EQU 
(0x1:SHL:18) ;- (USARTData Carrier Flag
AT91C_US_CTSIC            EQU 
(0x1:SHL:19) ;- (USARTClear To Send Input Change Flag
;- -------- US_IDR : (USART Offset0xcDebug Unit Interrupt Disable Register -------- 
;- -------- 
US_IMR : (USART Offset0x10Debug Unit Interrupt Mask Register -------- 
;- -------- 
US_CSR : (USART Offset0x14Debug Unit Channel Status Register -------- 
AT91C_US_RI               EQU (0x1:SHL:20) ;- (USARTImage of RI Input
AT91C_US_DSR              EQU 
(0x1:SHL:21) ;- (USARTImage of DSR Input
AT91C_US_DCD              EQU 
(0x1:SHL:22) ;- (USARTImage of DCD Input
AT91C_US_CTS              EQU 
(0x1:SHL:23) ;- (USARTImage of CTS Input

;- *****************************************************************************
;-              
SOFTWARE API DEFINITION  FOR Two-wire Interface
;- *****************************************************************************
                ^ 
;- AT91S_TWI
TWI_CR          
#  4 ;- Control Register
TWI_MMR         #  4 ;- Master Mode Register
                #  4 ;- Reserved
TWI_IADR        #  4 ;- Internal Address Register
TWI_CWGR        #  4 ;- Clock Waveform Generator Register
                # 12 ;- Reserved
TWI_SR          #  4 ;- Status Register
TWI_IER         #  4 ;- Interrupt Enable Register
TWI_IDR         #  4 ;- Interrupt Disable Register
TWI_IMR         #  4 ;- Interrupt Mask Register
TWI_RHR         #  4 ;- Receive Holding Register
TWI_THR         #  4 ;- Transmit Holding Register
;- -------- TWI_CR : (TWI Offset0x0TWI Control Register -------- 
AT91C_TWI_START           EQU (0x1:SHL:0) ;- (TWISend a START Condition
AT91C_TWI_STOP            EQU 
(0x1:SHL:1) ;- (TWISend a STOP Condition
AT91C_TWI_MSEN            EQU 
(0x1:SHL:2) ;- (TWITWI Master Transfer Enabled
AT91C_TWI_MSDIS           EQU 
(0x1:SHL:3) ;- (TWITWI Master Transfer Disabled
AT91C_TWI_SWRST           EQU 
(0x1:SHL:7) ;- (TWISoftware Reset
;- -------- TWI_MMR : (TWI Offset0x4TWI Master Mode Register -------- 
AT91C_TWI_IADRSZ          EQU (0x3:SHL:8) ;- (TWIInternal Device Address Size
AT91C_TWI_IADRSZ_NO       EQU 
(0x0:SHL:8) ;- (TWINo internal device address
AT91C_TWI_IADRSZ_1_BYTE   EQU 
(0x1:SHL:8) ;- (TWIOne-byte internal device address
AT91C_TWI_IADRSZ_2_BYTE   EQU 
(0x2:SHL:8) ;- (TWITwo-byte internal device address
AT91C_TWI_IADRSZ_3_BYTE   EQU 
(0x3:SHL:8) ;- (TWIThree-byte internal device address
AT91C_TWI_MREAD           EQU 
(0x1:SHL:12) ;- (TWIMaster Read Direction
AT91C_TWI_DADR            EQU 
(0x7F:SHL:16) ;- (TWIDevice Address
;- -------- TWI_CWGR : (TWI Offset0x10TWI Clock Waveform Generator Register -------- 
AT91C_TWI_CLDIV           EQU (0xFF:SHL:0) ;- (TWIClock Low Divider
AT91C_TWI_CHDIV           EQU 
(0xFF:SHL:8) ;- (TWIClock High Divider
AT91C_TWI_CKDIV           EQU 
(0x7:SHL:16) ;- (TWIClock Divider
;- -------- TWI_SR : (TWI Offset0x20TWI Status Register -------- 
AT91C_TWI_TXCOMP          EQU (0x1:SHL:0) ;- (TWITransmission Completed
AT91C_TWI_RXRDY           EQU 
(0x1:SHL:1) ;- (TWIReceive holding register ReaDY
AT91C_TWI_TXRDY           EQU 
(0x1:SHL:2) ;- (TWITransmit holding register ReaDY
AT91C_TWI_OVRE            EQU 
(0x1:SHL:6) ;- (TWIOverrun Error
AT91C_TWI_UNRE            EQU 
(0x1:SHL:7) ;- (TWIUnderrun Error
AT91C_TWI_NACK            EQU 
(0x1:SHL:8) ;- (TWINot Acknowledged
;- -------- TWI_IER : (TWI Offset0x24TWI Interrupt Enable Register -------- 
;- -------- 
TWI_IDR : (TWI Offset0x28TWI Interrupt Disable Register -------- 
;- -------- 
TWI_IMR : (TWI Offset0x2cTWI Interrupt Mask Register -------- 

;- *****************************************************************************
;-              
SOFTWARE API DEFINITION  FOR Timer Counter Channel Interface
;- *****************************************************************************
                ^ 
;- AT91S_TC
TC_CCR          
#  4 ;- Channel Control Register
TC_CMR          #  4 ;- Channel Mode Register (Capture Mode / Waveform Mode)
                #  8 ;- Reserved
TC_CV           #  4 ;- Counter Value
TC_RA           #  4 ;- Register A
TC_RB           #  4 ;- Register B
TC_RC           #  4 ;- Register C
TC_SR           #  4 ;- Status Register
TC_IER          #  4 ;- Interrupt Enable Register
TC_IDR          #  4 ;- Interrupt Disable Register
TC_IMR          #  4 ;- Interrupt Mask Register
;- -------- TC_CCR : (TC Offset0x0TC Channel Control Register -------- 
AT91C_TC_CLKEN            EQU (0x1:SHL:0) ;- (TCCounter Clock Enable Command
AT91C_TC_CLKDIS           EQU 
(0x1:SHL:1) ;- (TCCounter Clock Disable Command
AT91C_TC_SWTRG            EQU 
(0x1:SHL:2) ;- (TCSoftware Trigger Command
;- -------- TC_CMR : (TC Offset0x4TC Channel Mode RegisterCapture Mode Waveform Mode -------- 
AT91C_TC_CLKS             EQU (0x7:SHL:0) ;- (TCClock Selection
AT91C_TC_CLKS_TIMER_DIV1_CLOCK EQU 
(0x0) ;- (TCClock selectedTIMER_DIV1_CLOCK
AT91C_TC_CLKS_TIMER_DIV2_CLOCK EQU 
(0x1) ;- (TCClock selectedTIMER_DIV2_CLOCK
AT91C_TC_CLKS_TIMER_DIV3_CLOCK EQU 
(0x2) ;- (TCClock selectedTIMER_DIV3_CLOCK
AT91C_TC_CLKS_TIMER_DIV4_CLOCK EQU 
(0x3) ;- (TCClock selectedTIMER_DIV4_CLOCK
AT91C_TC_CLKS_TIMER_DIV5_CLOCK EQU 
(0x4) ;- (TCClock selectedTIMER_DIV5_CLOCK
AT91C_TC_CLKS_XC0         EQU 
(0x5) ;- (TCClock selectedXC0
AT91C_TC_CLKS_XC1         EQU 
(0x6) ;- (TCClock selectedXC1
AT91C_TC_CLKS_XC2         EQU 
(0x7) ;- (TCClock selectedXC2
AT91C_TC_CLKI             EQU 
(0x1:SHL:3) ;- (TCClock Invert
AT91C_TC_BURST            EQU 
(0x3:SHL:4) ;- (TCBurst Signal Selection
AT91C_TC_BURST_NONE       EQU 
(0x0:SHL:4) ;- (TCThe clock is not gated by an external signal
AT91C_TC_BURST_XC0        EQU 
(0x1:SHL:4) ;- (TCXC0 is ANDed with the selected clock
AT91C_TC_BURST_XC1        EQU 
(0x2:SHL:4) ;- (TCXC1 is ANDed with the selected clock
AT91C_TC_BURST_XC2        EQU 
(0x3:SHL:4) ;- (TCXC2 is ANDed with the selected clock
AT91C_TC_CPCSTOP          EQU 
(0x1:SHL:6) ;- (TCCounter Clock Stopped with RC Compare
AT91C_TC_LDBSTOP          EQU 
(0x1:SHL:6) ;- (TCCounter Clock Stopped with RB Loading
AT91C_TC_CPCDIS           EQU 
(0x1:SHL:7) ;- (TCCounter Clock Disable with RC Compare
AT91C_TC_LDBDIS           EQU 
(0x1:SHL:7) ;- (TCCounter Clock Disabled with RB Loading
AT91C_TC_ETRGEDG          EQU 
(0x3:SHL:8) ;- (TCExternal Trigger Edge Selection
AT91C_TC_ETRGEDG_NONE     EQU 
(0x0:SHL:8) ;- (TCEdgeNone
AT91C_TC_ETRGEDG_RISING   EQU 
(0x1:SHL:8) ;- (TCEdgerising edge
AT91C_TC_ETRGEDG_FALLING  EQU 
(0x2:SHL:8) ;- (TCEdgefalling edge
AT91C_TC_ETRGEDG_BOTH     EQU 
(0x3:SHL:8) ;- (TCEdgeeach edge
AT91C_TC_EEVTEDG          EQU 
(0x3:SHL:8) ;- (TCExternal Event Edge Selection
AT91C_TC_EEVTEDG_NONE     EQU 
(0x0:SHL:8) ;- (TCEdgeNone
AT91C_TC_EEVTEDG_RISING   EQU 
(0x1:SHL:8) ;- (TCEdgerising edge
AT91C_TC_EEVTEDG_FALLING  EQU 
(0x2:SHL:8) ;- (TCEdgefalling edge
AT91C_TC_EEVTEDG_BOTH     EQU 
(0x3:SHL:8) ;- (TCEdgeeach edge
AT91C_TC_EEVT             EQU 
(0x3:SHL:10) ;- (TCExternal Event  Selection
AT91C_TC_EEVT_TIOB        EQU 
(0x0:SHL:10) ;- (TCSignal selected as external eventTIOB TIOB directioninput
AT91C_TC_EEVT_XC0         EQU 
(0x1:SHL:10) ;- (TCSignal selected as external eventXC0 TIOB directionoutput
AT91C_TC_EEVT_XC1         EQU 
(0x2:SHL:10) ;- (TCSignal selected as external eventXC1 TIOB directionoutput
AT91C_TC_EEVT_XC2         EQU 
(0x3:SHL:10) ;- (TCSignal selected as external eventXC2 TIOB directionoutput
AT91C_TC_ABETRG           EQU 
(0x1:SHL:10) ;- (TCTIOA or TIOB External Trigger Selection
AT91C_TC_ENETRG           EQU 
(0x1:SHL:12) ;- (TCExternal Event Trigger enable
AT91C_TC_WAVESEL          EQU 
(0x3:SHL:13) ;- (TCWaveform  Selection
AT91C_TC_WAVESEL_UP       EQU 
(0x0:SHL:13) ;- (TCUP mode without atomatic trigger on RC Compare
AT91C_TC_WAVESEL_UPDOWN   EQU 
(0x1:SHL:13) ;- (TCUPDOWN mode without automatic trigger on RC Compare
AT91C_TC_WAVESEL_UP_AUTO  EQU 
(0x2:SHL:13) ;- (TCUP mode with automatic trigger on RC Compare
AT91C_TC_WAVESEL_UPDOWN_AUTO EQU 
(0x3:SHL:13) ;- (TCUPDOWN mode with automatic trigger on RC Compare
AT91C_TC_CPCTRG           EQU 
(0x1:SHL:14) ;- (TCRC Compare Trigger Enable
AT91C_TC_WAVE             EQU 
(0x1:SHL:15) ;- (TC
AT91C_TC_ACPA             EQU (0x3:SHL:16) ;- (TCRA Compare Effect on TIOA
AT91C_TC_ACPA_NONE        EQU 
(0x0:SHL:16) ;- (TCEffectnone
AT91C_TC_ACPA_SET         EQU 
(0x1:SHL:16) ;- (TCEffectset
AT91C_TC_ACPA_CLEAR       EQU 
(0x2:SHL:16) ;- (TCEffectclear
AT91C_TC_ACPA_TOGGLE      EQU 
(0x3:SHL:16) ;- (TCEffecttoggle
AT91C_TC_LDRA             EQU 
(0x3:SHL:16) ;- (TCRA Loading Selection
AT91C_TC_LDRA_NONE        EQU 
(0x0:SHL:16) ;- (TCEdgeNone
AT91C_TC_LDRA_RISING      EQU 
(0x1:SHL:16) ;- (TCEdgerising edge of TIOA
AT91C_TC_LDRA_FALLING     EQU 
(0x2:SHL:16) ;- (TCEdgefalling edge of TIOA
AT91C_TC_LDRA_BOTH        EQU 
(0x3:SHL:16) ;- (TCEdgeeach edge of TIOA
AT91C_TC_ACPC             EQU 
(0x3:SHL:18) ;- (TCRC Compare Effect on TIOA
AT91C_TC_ACPC_NONE        EQU 
(0x0:SHL:18) ;- (TCEffectnone
AT91C_TC_ACPC_SET         EQU 
(0x1:SHL:18) ;- (TCEffectset
AT91C_TC_ACPC_CLEAR       EQU 
(0x2:SHL:18) ;- (TCEffectclear
AT91C_TC_ACPC_TOGGLE      EQU 
(0x3:SHL:18) ;- (TCEffecttoggle
AT91C_TC_LDRB             EQU 
(0x3:SHL:18) ;- (TCRB Loading Selection
AT91C_TC_LDRB_NONE        EQU 
(0x0:SHL:18) ;- (TCEdgeNone
AT91C_TC_LDRB_RISING      EQU 
(0x1:SHL:18) ;- (TCEdgerising edge of TIOA
AT91C_TC_LDRB_FALLING     EQU 
(0x2:SHL:18) ;- (TCEdgefalling edge of TIOA
AT91C_TC_LDRB_BOTH        EQU 
(0x3:SHL:18) ;- (TCEdgeeach edge of TIOA
AT91C_TC_AEEVT            EQU 
(0x3:SHL:20) ;- (TCExternal Event Effect on TIOA
AT91C_TC_AEEVT_NONE       EQU 
(0x0:SHL:20) ;- (TCEffectnone
AT91C_TC_AEEVT_SET        EQU 
(0x1:SHL:20) ;- (TCEffectset
AT91C_TC_AEEVT_CLEAR      EQU 
(0x2:SHL:20) ;- (TCEffectclear
AT91C_TC_AEEVT_TOGGLE     EQU 
(0x3:SHL:20) ;- (TCEffecttoggle
AT91C_TC_ASWTRG           EQU 
(0x3:SHL:22) ;- (TCSoftware Trigger Effect on TIOA
AT91C_TC_ASWTRG_NONE      EQU 
(0x0:SHL:22) ;- (TCEffectnone
AT91C_TC_ASWTRG_SET       EQU 
(0x1:SHL:22) ;- (TCEffectset
AT91C_TC_ASWTRG_CLEAR     EQU 
(0x2:SHL:22) ;- (TCEffectclear
AT91C_TC_ASWTRG_TOGGLE    EQU 
(0x3:SHL:22) ;- (TCEffecttoggle
AT91C_TC_BCPB             EQU 
(0x3:SHL:24) ;- (TCRB Compare Effect on TIOB
AT91C_TC_BCPB_NONE        EQU 
(0x0:SHL:24) ;- (TCEffectnone
AT91C_TC_BCPB_SET         EQU 
(0x1:SHL:24) ;- (TCEffectset
AT91C_TC_BCPB_CLEAR       EQU 
(0x2:SHL:24) ;- (TCEffectclear
AT91C_TC_BCPB_TOGGLE      EQU 
(0x3:SHL:24) ;- (TCEffecttoggle
AT91C_TC_BCPC             EQU 
(0x3:SHL:26) ;- (TCRC Compare Effect on TIOB
AT91C_TC_BCPC_NONE        EQU 
(0x0:SHL:26) ;- (TCEffectnone
AT91C_TC_BCPC_SET         EQU 
(0x1:SHL:26) ;- (TCEffectset
AT91C_TC_BCPC_CLEAR       EQU 
(0x2:SHL:26) ;- (TCEffectclear
AT91C_TC_BCPC_TOGGLE      EQU 
(0x3:SHL:26) ;- (TCEffecttoggle
AT91C_TC_BEEVT            EQU 
(0x3:SHL:28) ;- (TCExternal Event Effect on TIOB
AT91C_TC_BEEVT_NONE       EQU 
(0x0:SHL:28) ;- (TCEffectnone
AT91C_TC_BEEVT_SET        EQU 
(0x1:SHL:28) ;- (TCEffectset
AT91C_TC_BEEVT_CLEAR      EQU 
(0x2:SHL:28) ;- (TCEffectclear
AT91C_TC_BEEVT_TOGGLE     EQU 
(0x3:SHL:28) ;- (TCEffecttoggle
AT91C_TC_BSWTRG           EQU 
(0x3:SHL:30) ;- (TCSoftware Trigger Effect on TIOB
AT91C_TC_BSWTRG_NONE      EQU 
(0x0:SHL:30) ;- (TCEffectnone
AT91C_TC_BSWTRG_SET       EQU 
(0x1:SHL:30) ;- (TCEffectset
AT91C_TC_BSWTRG_CLEAR     EQU 
(0x2:SHL:30) ;- (TCEffectclear
AT91C_TC_BSWTRG_TOGGLE    EQU 
(0x3:SHL:30) ;- (TCEffecttoggle
;- -------- TC_SR : (TC Offset0x20TC Channel Status Register -------- 
AT91C_TC_COVFS            EQU (0x1:SHL:0) ;- (TCCounter Overflow
AT91C_TC_LOVRS            EQU 
(0x1:SHL:1) ;- (TCLoad Overrun
AT91C_TC_CPAS             EQU 
(0x1:SHL:2) ;- (TCRA Compare
AT91C_TC_CPBS             EQU 
(0x1:SHL:3) ;- (TCRB Compare
AT91C_TC_CPCS             EQU 
(0x1:SHL:4) ;- (TCRC Compare
AT91C_TC_LDRAS            EQU 
(0x1:SHL:5) ;- (TCRA Loading
AT91C_TC_LDRBS            EQU 
(0x1:SHL:6) ;- (TCRB Loading
AT91C_TC_ETRGS            EQU 
(0x1:SHL:7) ;- (TCExternal Trigger
AT91C_TC_CLKSTA           EQU 
(0x1:SHL:16) ;- (TCClock Enabling
AT91C_TC_MTIOA            EQU 
(0x1:SHL:17) ;- (TCTIOA Mirror
AT91C_TC_MTIOB            EQU 
(0x1:SHL:18) ;- (TCTIOA Mirror
;- -------- TC_IER : (TC Offset0x24TC Channel Interrupt Enable Register -------- 
;- -------- 
TC_IDR : (TC Offset0x28TC Channel Interrupt Disable Register -------- 
;- -------- 
TC_IMR : (TC Offset0x2cTC Channel Interrupt Mask Register -------- 

;- *****************************************************************************
;-              
SOFTWARE API DEFINITION  FOR Timer Counter Interface
;- *****************************************************************************
                ^ 
;- AT91S_TCB
TCB_TC0         
# 48 ;- TC Channel 0
                # 16 ;- Reserved
TCB_TC1         # 48 ;- TC Channel 1
                # 16 ;- Reserved
TCB_TC2         # 48 ;- TC Channel 2
                # 16 ;- Reserved
TCB_BCR         #  4 ;- TC Block Control Register
TCB_BMR         #  4 ;- TC Block Mode Register
;- -------- TCB_BCR : (TCB Offset0xc0TC Block Control Register -------- 
AT91C_TCB_SYNC            EQU (0x1:SHL:0) ;- (TCBSynchro Command
;- -------- TCB_BMR : (TCB Offset0xc4TC Block Mode Register -------- 
AT91C_TCB_TC0XC0S         EQU (0x3:SHL:0) ;- (TCBExternal Clock Signal 0 Selection
AT91C_TCB_TC0XC0S_TCLK0   EQU 
(0x0) ;- (TCBTCLK0 connected to XC0
AT91C_TCB_TC0XC0S_NONE    EQU 
(0x1) ;- (TCBNone signal connected to XC0
AT91C_TCB_TC0XC0S_TIOA1   EQU 
(0x2) ;- (TCBTIOA1 connected to XC0
AT91C_TCB_TC0XC0S_TIOA2   EQU 
(0x3) ;- (TCBTIOA2 connected to XC0
AT91C_TCB_TC1XC1S         EQU 
(0x3:SHL:2) ;- (TCBExternal Clock Signal 1 Selection
AT91C_TCB_TC1XC1S_TCLK1   EQU 
(0x0:SHL:2) ;- (TCBTCLK1 connected to XC1
AT91C_TCB_TC1XC1S_NONE    EQU 
(0x1:SHL:2) ;- (TCBNone signal connected to XC1
AT91C_TCB_TC1XC1S_TIOA0   EQU 
(0x2:SHL:2) ;- (TCBTIOA0 connected to XC1
AT91C_TCB_TC1XC1S_TIOA2   EQU 
(0x3:SHL:2) ;- (TCBTIOA2 connected to XC1
AT91C_TCB_TC2XC2S         EQU 
(0x3:SHL:4) ;- (TCBExternal Clock Signal 2 Selection
AT91C_TCB_TC2XC2S_TCLK2   EQU 
(0x0:SHL:4) ;- (TCBTCLK2 connected to XC2
AT91C_TCB_TC2XC2S_NONE    EQU 
(0x1:SHL:4) ;- (TCBNone signal connected to XC2
AT91C_TCB_TC2XC2S_TIOA0   EQU 
(0x2:SHL:4) ;- (TCBTIOA0 connected to XC2
AT91C_TCB_TC2XC2S_TIOA1   EQU 
(0x3:SHL:4) ;- (TCBTIOA2 connected to XC2

;- *****************************************************************************
;-              
SOFTWARE API DEFINITION  FOR PWMC Channel Interface
;- *****************************************************************************
                ^ 
;- AT91S_PWMC_CH
PWMC_CMR        
#  4 ;- Channel Mode Register
PWMC_CDTYR      #  4 ;- Channel Duty Cycle Register
PWMC_CPRDR      #  4 ;- Channel Period Register
PWMC_CCNTR      #  4 ;- Channel Counter Register
PWMC_CUPDR      #  4 ;- Channel Update Register
PWMC_Reserved   # 12 ;- Reserved
;- -------- PWMC_CMR : (PWMC_CH Offset0x0PWMC Channel Mode Register -------- 
AT91C_PWMC_CPRE           EQU (0xF:SHL:0) ;- (PWMC_CHChannel Pre-scaler PWMC_CLKx
AT91C_PWMC_CPRE_MCK       EQU 
(0x0) ;- (PWMC_CH
AT91C_PWMC_CPRE_MCKA      EQU (0xB) ;- (PWMC_CH
AT91C_PWMC_CPRE_MCKB      EQU (0xC) ;- (PWMC_CH
AT91C_PWMC_CALG           EQU (0x1:SHL:8) ;- (PWMC_CHChannel Alignment
AT91C_PWMC_CPOL           EQU 
(0x1:SHL:9) ;- (PWMC_CHChannel Polarity
AT91C_PWMC_CPD            EQU 
(0x1:SHL:10) ;- (PWMC_CHChannel Update Period
;- -------- PWMC_CDTYR : (PWMC_CH Offset0x4PWMC Channel Duty Cycle Register -------- 
AT91C_PWMC_CDTY           EQU (0x0:SHL:0) ;- (PWMC_CHChannel Duty Cycle
;- -------- PWMC_CPRDR : (PWMC_CH Offset0x8PWMC Channel Period Register -------- 
AT91C_PWMC_CPRD           EQU (0x0:SHL:0) ;- (PWMC_CHChannel Period
;- -------- PWMC_CCNTR : (PWMC_CH Offset0xcPWMC Channel Counter Register -------- 
AT91C_PWMC_CCNT           EQU (0x0:SHL:0) ;- (PWMC_CHChannel Counter
;- -------- PWMC_CUPDR : (PWMC_CH Offset0x10PWMC Channel Update Register -------- 
AT91C_PWMC_CUPD           EQU (0x0:SHL:0) ;- (PWMC_CHChannel Update

;- *****************************************************************************
;-              
SOFTWARE API DEFINITION  FOR Pulse Width Modulation Controller Interface
;- *****************************************************************************
                ^ 
;- AT91S_PWMC
PWMC_MR         
#  4 ;- PWMC Mode Register
PWMC_ENA        #  4 ;- PWMC Enable Register
PWMC_DIS        #  4 ;- PWMC Disable Register
PWMC_SR         #  4 ;- PWMC Status Register
PWMC_IER        #  4 ;- PWMC Interrupt Enable Register
PWMC_IDR        #  4 ;- PWMC Interrupt Disable Register
PWMC_IMR        #  4 ;- PWMC Interrupt Mask Register
PWMC_ISR        #  4 ;- PWMC Interrupt Status Register
                # 220 ;- Reserved
PWMC_VR         #  4 ;- PWMC Version Register
                # 256 ;- Reserved
PWMC_CH         # 768 ;- PWMC Channel 0
;- -------- PWMC_MR : (PWMC Offset0x0PWMC Mode Register -------- 
AT91C_PWMC_DIVA           EQU (0xFF:SHL:0) ;- (PWMCCLKA divide factor.
AT91C_PWMC_PREA           EQU (0xF:SHL:8) ;- (PWMCDivider Input Clock Prescaler A
AT91C_PWMC_PREA_MCK       EQU 
(0x0:SHL:8) ;- (PWMC
AT91C_PWMC_DIVB           EQU (0xFF:SHL:16) ;- (PWMCCLKB divide factor.
AT91C_PWMC_PREB           EQU (0xF:SHL:24) ;- (PWMCDivider Input Clock Prescaler B
AT91C_PWMC_PREB_MCK       EQU 
(0x0:SHL:24) ;- (PWMC
;- -------- 
PWMC_ENA : (PWMC Offset0x4PWMC Enable Register -------- 
AT91C_PWMC_CHID0          EQU (0x1:SHL:0) ;- (PWMCChannel ID 0
AT91C_PWMC_CHID1          EQU 
(0x1:SHL:1) ;- (PWMCChannel ID 1
AT91C_PWMC_CHID2          EQU 
(0x1:SHL:2) ;- (PWMCChannel ID 2
AT91C_PWMC_CHID3          EQU 
(0x1:SHL:3) ;- (PWMCChannel ID 3
AT91C_PWMC_CHID4          EQU 
(0x1:SHL:4) ;- (PWMCChannel ID 4
AT91C_PWMC_CHID5          EQU 
(0x1:SHL:5) ;- (PWMCChannel ID 5
AT91C_PWMC_CHID6          EQU 
(0x1:SHL:6) ;- (PWMCChannel ID 6
AT91C_PWMC_CHID7          EQU 
(0x1:SHL:7) ;- (PWMCChannel ID 7
;- -------- PWMC_DIS : (PWMC Offset0x8PWMC Disable Register -------- 
;- -------- 
PWMC_SR : (PWMC Offset0xcPWMC Status Register -------- 
;- -------- 
PWMC_IER : (PWMC Offset0x10PWMC Interrupt Enable Register -------- 
;- -------- 
PWMC_IDR : (PWMC Offset0x14PWMC Interrupt Disable Register -------- 
;- -------- 
PWMC_IMR : (PWMC Offset0x18PWMC Interrupt Mask Register -------- 
;- -------- 
PWMC_ISR : (PWMC Offset0x1cPWMC Interrupt Status Register -------- 

;- *****************************************************************************
;-              
SOFTWARE API DEFINITION  FOR USB Device Interface
;- *****************************************************************************
                ^ 
;- AT91S_UDP
UDP_NUM         
#  4 ;- Frame Number Register
UDP_GLBSTATE    #  4 ;- Global State Register
UDP_FADDR       #  4 ;- Function Address Register
                #  4 ;- Reserved
UDP_IER         #  4 ;- Interrupt Enable Register
UDP_IDR         #  4 ;- Interrupt Disable Register
UDP_IMR         #  4 ;- Interrupt Mask Register
UDP_ISR         #  4 ;- Interrupt Status Register
UDP_ICR         #  4 ;- Interrupt Clear Register
                #  4 ;- Reserved
UDP_RSTEP       #  4 ;- Reset Endpoint Register
                #  4 ;- Reserved
UDP_CSR         # 32 ;- Endpoint Control and Status Register
UDP_FDR         # 32 ;- Endpoint FIFO Data Register
                #  4 ;- Reserved
UDP_TXVC        #  4 ;- Transceiver Control Register
;- -------- UDP_FRM_NUM : (UDP Offset0x0USB Frame Number Register -------- 
AT91C_UDP_FRM_NUM         EQU (0x7FF:SHL:0) ;- (UDPFrame Number as Defined in the Packet Field Formats
AT91C_UDP_FRM_ERR         EQU 
(0x1:SHL:16) ;- (UDPFrame Error
AT91C_UDP_FRM_OK          EQU 
(0x1:SHL:17) ;- (UDPFrame OK
;- -------- UDP_GLB_STATE : (UDP Offset0x4USB Global State Register -------- 
AT91C_UDP_FADDEN          EQU (0x1:SHL:0) ;- (UDP) Function Address Enable
AT91C_UDP_CONFG           EQU 
(0x1:SHL:1) ;- (UDPConfigured
AT91C_UDP_ESR             EQU 
(0x1:SHL:2) ;- (UDPEnable Send Resume
AT91C_UDP_RSMINPR         EQU 
(0x1:SHL:3) ;- (UDPA Resume Has Been Sent to the Host
AT91C_UDP_RMWUPE          EQU 
(0x1:SHL:4) ;- (UDPRemote Wake Up Enable
;- -------- UDP_FADDR : (UDP Offset0x8USB Function Address Register -------- 
AT91C_UDP_FADD            EQU (0xFF:SHL:0) ;- (UDP) Function Address Value
AT91C_UDP_FEN             EQU 
(0x1:SHL:8) ;- (UDP) Function Enable
;- -------- UDP_IER : (UDP Offset0x10USB Interrupt Enable Register -------- 
AT91C_UDP_EPINT0          EQU (0x1:SHL:0) ;- (UDPEndpoint 0 Interrupt
AT91C_UDP_EPINT1          EQU 
(0x1:SHL:1) ;- (UDPEndpoint 0 Interrupt
AT91C_UDP_EPINT2          EQU 
(0x1:SHL:2) ;- (UDPEndpoint 2 Interrupt
AT91C_UDP_EPINT3          EQU 
(0x1:SHL:3) ;- (UDPEndpoint 3 Interrupt
AT91C_UDP_EPINT4          EQU 
(0x1:SHL:4) ;- (UDPEndpoint 4 Interrupt
AT91C_UDP_EPINT5          EQU 
(0x1:SHL:5) ;- (UDPEndpoint 5 Interrupt
AT91C_UDP_EPINT6          EQU 
(0x1:SHL:6) ;- (UDPEndpoint 6 Interrupt
AT91C_UDP_EPINT7          EQU 
(0x1:SHL:7) ;- (UDPEndpoint 7 Interrupt
AT91C_UDP_RXSUSP          EQU 
(0x1:SHL:8) ;- (UDPUSB Suspend Interrupt
AT91C_UDP_RXRSM           EQU 
(0x1:SHL:9) ;- (UDPUSB Resume Interrupt
AT91C_UDP_EXTRSM          EQU 
(0x1:SHL:10) ;- (UDPUSB External Resume Interrupt
AT91C_UDP_SOFINT          EQU 
(0x1:SHL:11) ;- (UDPUSB Start Of frame Interrupt
AT91C_UDP_WAKEUP          EQU 
(0x1:SHL:13) ;- (UDPUSB Resume Interrupt
;- -------- UDP_IDR : (UDP Offset0x14USB Interrupt Disable Register -------- 
;- -------- 
UDP_IMR : (UDP Offset0x18USB Interrupt Mask Register -------- 
;- -------- 
UDP_ISR : (UDP Offset0x1cUSB Interrupt Status Register -------- 
AT91C_UDP_ENDBUSRES       EQU (0x1:SHL:12) ;- (UDPUSB End Of Bus Reset Interrupt
;- -------- UDP_ICR : (UDP Offset0x20USB Interrupt Clear Register -------- 
;- -------- 
UDP_RST_EP : (UDP Offset0x28USB Reset Endpoint Register -------- 
AT91C_UDP_EP0             EQU (0x1:SHL:0) ;- (UDPReset Endpoint 0
AT91C_UDP_EP1             EQU 
(0x1:SHL:1) ;- (UDPReset Endpoint 1
AT91C_UDP_EP2             EQU 
(0x1:SHL:2) ;- (UDPReset Endpoint 2
AT91C_UDP_EP3             EQU 
(0x1:SHL:3) ;- (UDPReset Endpoint 3
AT91C_UDP_EP4             EQU 
(0x1:SHL:4) ;- (UDPReset Endpoint 4
AT91C_UDP_EP5             EQU 
(0x1:SHL:5) ;- (UDPReset Endpoint 5
AT91C_UDP_EP6             EQU 
(0x1:SHL:6) ;- (UDPReset Endpoint 6
AT91C_UDP_EP7             EQU 
(0x1:SHL:7) ;- (UDPReset Endpoint 7
;- -------- UDP_CSR : (UDP Offset0x30USB Endpoint Control and Status Register -------- 
AT91C_UDP_TXCOMP          EQU (0x1:SHL:0) ;- (UDPGenerates an IN packet with data previously written in the DPR
AT91C_UDP_RX_DATA_BK0     EQU 
(0x1:SHL:1) ;- (UDPReceive Data Bank 0
AT91C_UDP_RXSETUP         EQU 
(0x1:SHL:2) ;- (UDPSends STALL to the Host (Control endpoints)
AT91C_UDP_ISOERROR        EQU (0x1:SHL:3) ;- (UDPIsochronous error (Isochronous endpoints)
AT91C_UDP_TXPKTRDY        EQU (0x1:SHL:4) ;- (UDPTransmit Packet Ready
AT91C_UDP_FORCESTALL      EQU 
(0x1:SHL:5) ;- (UDPForce Stall (used by ControlBulk and Isochronous endpoints).
AT91C_UDP_RX_DATA_BK1     EQU (0x1:SHL:6) ;- (UDPReceive Data Bank 1 (only used by endpoints with ping-pong attributes).
AT91C_UDP_DIR             EQU (0x1:SHL:7) ;- (UDPTransfer Direction
AT91C_UDP_EPTYPE          EQU 
(0x7:SHL:8) ;- (UDPEndpoint type
AT91C_UDP_EPTYPE_CTRL     EQU 
(0x0:SHL:8) ;- (UDPControl
AT91C_UDP_EPTYPE_ISO_OUT  EQU 
(0x1:SHL:8) ;- (UDPIsochronous OUT
AT91C_UDP_EPTYPE_BULK_OUT EQU 
(0x2:SHL:8) ;- (UDPBulk OUT
AT91C_UDP_EPTYPE_INT_OUT  EQU 
(0x3:SHL:8) ;- (UDPInterrupt OUT
AT91C_UDP_EPTYPE_ISO_IN   EQU 
(0x5:SHL:8) ;- (UDPIsochronous IN
AT91C_UDP_EPTYPE_BULK_IN  EQU 
(0x6:SHL:8) ;- (UDPBulk IN
AT91C_UDP_EPTYPE_INT_IN   EQU 
(0x7:SHL:8) ;- (UDPInterrupt IN
AT91C_UDP_DTGLE           EQU 
(0x1:SHL:11) ;- (UDPData Toggle
AT91C_UDP_EPEDS           EQU 
(0x1:SHL:15) ;- (UDPEndpoint Enable Disable
AT91C_UDP_RXBYTECNT       EQU 
(0x7FF:SHL:16) ;- (UDPNumber Of Bytes Available in the FIFO
;- -------- UDP_TXVC : (UDP Offset0x74Transceiver Control Register -------- 
AT91C_UDP_TXVDIS          EQU (0x1:SHL:8) ;- (UDP
AT91C_UDP_PUON            EQU (0x1:SHL:9) ;- (UDPPull-up ON

;- *****************************************************************************
;-               
REGISTER ADDRESS DEFINITION FOR AT91SAM7S64
;- *****************************************************************************
;- ========== 
Register definition for SYS peripheral ========== 
;- ========== 
Register definition for AIC peripheral ========== 
AT91C_AIC_IVR             EQU (0xFFFFF100) ;- (AICIRQ Vector Register
AT91C_AIC_SMR             EQU 
(0xFFFFF000) ;- (AICSource Mode Register
AT91C_AIC_FVR             EQU 
(0xFFFFF104) ;- (AICFIQ Vector Register
AT91C_AIC_DCR             EQU 
(0xFFFFF138) ;- (AICDebug Control Register (Protect)
AT91C_AIC_EOICR           EQU (0xFFFFF130) ;- (AICEnd of Interrupt Command Register
AT91C_AIC_SVR             EQU 
(0xFFFFF080) ;- (AICSource Vector Register
AT91C_AIC_FFSR            EQU 
(0xFFFFF148) ;- (AICFast Forcing Status Register
AT91C_AIC_ICCR            EQU 
(0xFFFFF128) ;- (AICInterrupt Clear Command Register
AT91C_AIC_ISR             EQU 
(0xFFFFF108) ;- (AICInterrupt Status Register
AT91C_AIC_IMR             EQU 
(0xFFFFF110) ;- (AICInterrupt Mask Register
AT91C_AIC_IPR             EQU 
(0xFFFFF10C) ;- (AICInterrupt Pending Register
AT91C_AIC_FFER            EQU 
(0xFFFFF140) ;- (AICFast Forcing Enable Register
AT91C_AIC_IECR            EQU 
(0xFFFFF120) ;- (AICInterrupt Enable Command Register
AT91C_AIC_ISCR            EQU 
(0xFFFFF12C) ;- (AICInterrupt Set Command Register
AT91C_AIC_FFDR            EQU 
(0xFFFFF144) ;- (AICFast Forcing Disable Register
AT91C_AIC_CISR            EQU 
(0xFFFFF114) ;- (AICCore Interrupt Status Register
AT91C_AIC_IDCR            EQU 
(0xFFFFF124) ;- (AICInterrupt Disable Command Register
AT91C_AIC_SPU             EQU 
(0xFFFFF134) ;- (AICSpurious Vector Register
;- ========== Register definition for PDC_DBGU peripheral ========== 
AT91C_DBGU_TCR            EQU (0xFFFFF30C) ;- (PDC_DBGUTransmit Counter Register
AT91C_DBGU_RNPR           EQU 
(0xFFFFF310) ;- (PDC_DBGUReceive Next Pointer Register
AT91C_DBGU_TNPR           EQU 
(0xFFFFF318) ;- (PDC_DBGUTransmit Next Pointer Register
AT91C_DBGU_TPR            EQU 
(0xFFFFF308) ;- (PDC_DBGUTransmit Pointer Register
AT91C_DBGU_RPR            EQU 
(0xFFFFF300) ;- (PDC_DBGUReceive Pointer Register
AT91C_DBGU_RCR            EQU 
(0xFFFFF304) ;- (PDC_DBGUReceive Counter Register
AT91C_DBGU_RNCR           EQU 
(0xFFFFF314) ;- (PDC_DBGUReceive Next Counter Register
AT91C_DBGU_PTCR           EQU 
(0xFFFFF320) ;- (PDC_DBGUPDC Transfer Control Register
AT91C_DBGU_PTSR           EQU 
(0xFFFFF324) ;- (PDC_DBGUPDC Transfer Status Register
AT91C_DBGU_TNCR           EQU 
(0xFFFFF31C) ;- (PDC_DBGUTransmit Next Counter Register
;- ========== Register definition for DBGU peripheral ========== 
AT91C_DBGU_EXID           EQU (0xFFFFF244) ;- (DBGUChip ID Extension Register
AT91C_DBGU_BRGR           EQU 
(0xFFFFF220) ;- (DBGUBaud Rate Generator Register
AT91C_DBGU_IDR            EQU 
(0xFFFFF20C) ;- (DBGUInterrupt Disable Register
AT91C_DBGU_CSR            EQU 
(0xFFFFF214) ;- (DBGUChannel Status Register
AT91C_DBGU_CIDR           EQU 
(0xFFFFF240) ;- (DBGUChip ID Register
AT91C_DBGU_MR             EQU 
(0xFFFFF204) ;- (DBGUMode Register
AT91C_DBGU_IMR            EQU 
(0xFFFFF210) ;- (DBGUInterrupt Mask Register
AT91C_DBGU_CR             EQU 
(0xFFFFF200) ;- (DBGUControl Register
AT91C_DBGU_FNTR           EQU 
(0xFFFFF248) ;- (DBGUForce NTRST Register
AT91C_DBGU_THR            EQU 
(0xFFFFF21C) ;- (DBGUTransmitter Holding Register
AT91C_DBGU_RHR            EQU 
(0xFFFFF218) ;- (DBGUReceiver Holding Register
AT91C_DBGU_IER            EQU 
(0xFFFFF208) ;- (DBGUInterrupt Enable Register
;- ========== Register definition for PIOA peripheral ========== 
AT91C_PIOA_ODR            EQU (0xFFFFF414) ;- (PIOAOutput Disable Registerr
AT91C_PIOA_SODR           EQU 
(0xFFFFF430) ;- (PIOASet Output Data Register
AT91C_PIOA_ISR            EQU 
(0xFFFFF44C) ;- (PIOAInterrupt Status Register
AT91C_PIOA_ABSR           EQU 
(0xFFFFF478) ;- (PIOAAB Select Status Register
AT91C_PIOA_IER            EQU 
(0xFFFFF440) ;- (PIOAInterrupt Enable Register
AT91C_PIOA_PPUDR          EQU 
(0xFFFFF460) ;- (PIOAPull-up Disable Register
AT91C_PIOA_IMR            EQU 
(0xFFFFF448) ;- (PIOAInterrupt Mask Register
AT91C_PIOA_PER            EQU 
(0xFFFFF400) ;- (PIOAPIO Enable Register
AT91C_PIOA_IFDR           EQU 
(0xFFFFF424) ;- (PIOAInput Filter Disable Register
AT91C_PIOA_OWDR           EQU 
(0xFFFFF4A4) ;- (PIOAOutput Write Disable Register
AT91C_PIOA_MDSR           EQU 
(0xFFFFF458) ;- (PIOAMulti-driver Status Register
AT91C_PIOA_IDR            EQU 
(0xFFFFF444) ;- (PIOAInterrupt Disable Register
AT91C_PIOA_ODSR           EQU 
(0xFFFFF438) ;- (PIOAOutput Data Status Register
AT91C_PIOA_PPUSR          EQU 
(0xFFFFF468) ;- (PIOAPull-up Status Register
AT91C_PIOA_OWSR           EQU 
(0xFFFFF4A8) ;- (PIOAOutput Write Status Register
AT91C_PIOA_BSR            EQU 
(0xFFFFF474) ;- (PIOASelect B Register
AT91C_PIOA_OWER           EQU 
(0xFFFFF4A0) ;- (PIOAOutput Write Enable Register
AT91C_PIOA_IFER           EQU 
(0xFFFFF420) ;- (PIOAInput Filter Enable Register
AT91C_PIOA_PDSR           EQU 
(0xFFFFF43C) ;- (PIOAPin Data Status Register
AT91C_PIOA_PPUER          EQU 
(0xFFFFF464) ;- (PIOAPull-up Enable Register
AT91C_PIOA_OSR            EQU 
(0xFFFFF418) ;- (PIOAOutput Status Register
AT91C_PIOA_ASR            EQU 
(0xFFFFF470) ;- (PIOASelect A Register
AT91C_PIOA_MDDR           EQU 
(0xFFFFF454) ;- (PIOAMulti-driver Disable Register
AT91C_PIOA_CODR           EQU 
(0xFFFFF434) ;- (PIOAClear Output Data Register
AT91C_PIOA_MDER           EQU 
(0xFFFFF450) ;- (PIOAMulti-driver Enable Register
AT91C_PIOA_PDR            EQU 
(0xFFFFF404) ;- (PIOAPIO Disable Register
A