at91_pio.h

Go to the documentation of this file.
00001 
00041 /*
00042  * Copyright (C) 2005-2006 by egnite Software GmbH. All rights reserved.
00043  *
00044  * Redistribution and use in source and binary forms, with or without
00045  * modification, are permitted provided that the following conditions
00046  * are met:
00047  *
00048  * 1. Redistributions of source code must retain the above copyright
00049  *    notice, this list of conditions and the following disclaimer.
00050  * 2. Redistributions in binary form must reproduce the above copyright
00051  *    notice, this list of conditions and the following disclaimer in the
00052  *    documentation and/or other materials provided with the distribution.
00053  * 3. Neither the name of the copyright holders nor the names of
00054  *    contributors may be used to endorse or promote products derived
00055  *    from this software without specific prior written permission.
00056  *
00057  * THIS SOFTWARE IS PROVIDED BY EGNITE SOFTWARE GMBH AND CONTRIBUTORS
00058  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00059  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00060  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL EGNITE
00061  * SOFTWARE GMBH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00062  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
00063  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
00064  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
00065  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00066  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
00067  * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
00068  * SUCH DAMAGE.
00069  *
00070  * For additional information see http://www.ethernut.de/
00071  */
00072 
00073 #ifndef AT91_PIO_H
00074 #define AT91_PIO_H
00075 
00077 /*\{*/
00078 #define PIO_PER_OFF     0x00000000  
00079 #define PIO_PDR_OFF     0x00000004  
00080 #define PIO_PSR_OFF     0x00000008  
00081 #define PIO_OER_OFF     0x00000010  
00082 #define PIO_ODR_OFF     0x00000014  
00083 #define PIO_OSR_OFF     0x00000018  
00084 #define PIO_IFER_OFF    0x00000020  
00085 #define PIO_IFDR_OFF    0x00000024  
00086 #define PIO_IFSR_OFF    0x00000028  
00087 #define PIO_SODR_OFF    0x00000030  
00088 #define PIO_CODR_OFF    0x00000034  
00089 #define PIO_ODSR_OFF    0x00000038  
00090 #define PIO_PDSR_OFF    0x0000003C  
00091 #define PIO_IER_OFF     0x00000040  
00092 #define PIO_IDR_OFF     0x00000044  
00093 #define PIO_IMR_OFF     0x00000048  
00094 #define PIO_ISR_OFF     0x0000004C  
00095 #if PIO_HAS_MULTIDRIVER
00096 #define PIO_MDER_OFF    0x00000050  
00097 #define PIO_MDDR_OFF    0x00000054  
00098 #define PIO_MDSR_OFF    0x00000058  
00099 #endif /* PIO_HAS_MULTIDRIVER */
00100 #if PIO_HAS_PULLUP
00101 #define PIO_PUDR_OFF    0x00000060  
00102 #define PIO_PUER_OFF    0x00000064  
00103 #define PIO_PUSR_OFF    0x00000068  
00104 #endif /* PIO_HAS_PULLUP */
00105 #if PIO_HAS_PERIPHERALSELECT
00106 #define PIO_ASR_OFF     0x00000070  
00107 #define PIO_BSR_OFF     0x00000074  
00108 #define PIO_ABSR_OFF    0x00000078  
00109 #endif /* PIO_HAS_PERIPHERALSELECT */
00110 #if PIO_HAS_OUTPUTWRITEENABLE
00111 #define PIO_OWER_OFF    0x000000A0  
00112 #define PIO_OWDR_OFF    0x000000A4  
00113 #define PIO_OWSR_OFF    0x000000A8  
00114 #endif /* PIO_HAS_OUTPUTWRITEENABLE */
00115 /*\}*/
00116 
00118 /*\{*/
00119 #if defined(PIO_BASE)
00120     #define PIO_ACCESS(offset) (*((reg32_t *)(PIO_BASE + (offset))))
00121 
00122     #define PIO_PER     PIO_ACCESS(PIO_PER_OFF)    
00123     #define PIO_PDR     PIO_ACCESS(PIO_PDR_OFF)    
00124     #define PIO_PSR     PIO_ACCESS(PIO_PSR_OFF)    
00125     #define PIO_OER     PIO_ACCESS(PIO_OER_OFF)    
00126     #define PIO_ODR     PIO_ACCESS(PIO_ODR_OFF)    
00127     #define PIO_OSR     PIO_ACCESS(PIO_OSR_OFF)    
00128     #define PIO_IFER    PIO_ACCESS(PIO_IFER_OFF)   
00129     #define PIO_IFDR    PIO_ACCESS(PIO_IFDR_OFF)   
00130     #define PIO_IFSR    PIO_ACCESS(PIO_IFSR_OFF)   
00131     #define PIO_SODR    PIO_ACCESS(PIO_SODR_OFF)   
00132     #define PIO_CODR    PIO_ACCESS(PIO_CODR_OFF)   
00133     #define PIO_ODSR    PIO_ACCESS(PIO_ODSR_OFF)   
00134     #define PIO_PDSR    PIO_ACCESS(PIO_PDSR_OFF)   
00135     #define PIO_IER     PIO_ACCESS(PIO_IER_OFF)    
00136     #define PIO_IDR     PIO_ACCESS(PIO_IDR_OFF)    
00137     #define PIO_IMR     PIO_ACCESS(PIO_IMR_OFF)    
00138     #define PIO_ISR     PIO_ACCESS(PIO_ISR_OFF)    
00139     #if PIO_HAS_MULTIDRIVER
00140     #define PIO_MDER    PIO_ACCESS(PIO_MDER_OFF)   
00141     #define PIO_MDDR    PIO_ACCESS(PIO_MDDR_OFF)   
00142     #define PIO_MDSR    PIO_ACCESS(PIO_MDSR_OFF)   
00143     #endif /* PIO_HAS_MULTIDRIVER */
00144     #if PIO_HAS_PULLUP
00145     #define PIO_PUDR    PIO_ACCESS(PIO_PUDR_OFF)   
00146     #define PIO_PUER    PIO_ACCESS(PIO_PUER_OFF)   
00147     #define PIO_PUSR    PIO_ACCESS(PIO_PUSR_OFF)   
00148     #endif /* PIO_HAS_PULLUP */
00149     #if PIO_HAS_PERIPHERALSELECT
00150     #define PIO_ASR     PIO_ACCESS(PIO_ASR_OFF)    
00151     #define PIO_BSR     PIO_ACCESS(PIO_BSR_OFF)    
00152     #define PIO_ABSR    PIO_ACCESS(PIO_ABSR_OFF)   
00153     #endif /* PIO_HAS_PERIPHERALSELECT */
00154     #if PIO_HAS_OUTPUTWRITEENABLE
00155     #define PIO_OWER    PIO_ACCESS(PIO_OWER_OFF)   
00156     #define PIO_OWDR    PIO_ACCESS(PIO_OWDR_OFF)   
00157     #define PIO_OWSR    PIO_ACCESS(PIO_OWSR_OFF)   
00158     #endif /* PIO_HAS_OUTPUTWRITEENABLE */
00159 #endif /* PIO_BASE */
00160 /*\}*/
00161 
00163 /*\{*/
00164 #if defined(PIOA_BASE)
00165     #define PIOA_ACCESS(offset) (*((reg32_t *)(PIOA_BASE + (offset))))
00166 
00167     #define PIOA_PER    PIOA_ACCESS(PIO_PER_OFF)   
00168     #define PIOA_PDR    PIOA_ACCESS(PIO_PDR_OFF)   
00169     #define PIOA_PSR    PIOA_ACCESS(PIO_PSR_OFF)   
00170     #define PIOA_OER    PIOA_ACCESS(PIO_OER_OFF)   
00171     #define PIOA_ODR    PIOA_ACCESS(PIO_ODR_OFF)   
00172     #define PIOA_OSR    PIOA_ACCESS(PIO_OSR_OFF)   
00173     #define PIOA_IFER   PIOA_ACCESS(PIO_IFER_OFF)  
00174     #define PIOA_IFDR   PIOA_ACCESS(PIO_IFDR_OFF)  
00175     #define PIOA_IFSR   PIOA_ACCESS(PIO_IFSR_OFF)  
00176     #define PIOA_SODR   PIOA_ACCESS(PIO_SODR_OFF)  
00177     #define PIOA_CODR   PIOA_ACCESS(PIO_CODR_OFF)  
00178     #define PIOA_ODSR   PIOA_ACCESS(PIO_ODSR_OFF)  
00179     #define PIOA_PDSR   PIOA_ACCESS(PIO_PDSR_OFF)  
00180     #define PIOA_IER    PIOA_ACCESS(PIO_IER_OFF)   
00181     #define PIOA_IDR    PIOA_ACCESS(PIO_IDR_OFF)   
00182     #define PIOA_IMR    PIOA_ACCESS(PIO_IMR_OFF)   
00183     #define PIOA_ISR    PIOA_ACCESS(PIO_ISR_OFF)   
00184     #if PIO_HAS_MULTIDRIVER
00185     #define PIOA_MDER   PIOA_ACCESS(PIO_MDER_OFF)  
00186     #define PIOA_MDDR   PIOA_ACCESS(PIO_MDDR_OFF)  
00187     #define PIOA_MDSR   PIOA_ACCESS(PIO_MDSR_OFF)  
00188     #endif /* PIO_HAS_MULTIDRIVER */
00189     #if PIO_HAS_PULLUP
00190     #define PIOA_PUDR   PIOA_ACCESS(PIO_PUDR_OFF)  
00191     #define PIOA_PUER   PIOA_ACCESS(PIO_PUER_OFF)  
00192     #define PIOA_PUSR   PIOA_ACCESS(PIO_PUSR_OFF)  
00193     #endif /* PIO_HAS_PULLUP */
00194     #if PIO_HAS_PERIPHERALSELECT
00195     #define PIOA_ASR    PIOA_ACCESS(PIO_ASR_OFF)   
00196     #define PIOA_BSR    PIOA_ACCESS(PIO_BSR_OFF)   
00197     #define PIOA_ABSR   PIOA_ACCESS(PIO_ABSR_OFF)  
00198     #endif /* PIO_HAS_PERIPHERALSELECT */
00199     #if PIO_HAS_OUTPUTWRITEENABLE
00200     #define PIOA_OWER   PIOA_ACCESS(PIO_OWER_OFF)  
00201     #define PIOA_OWDR   PIOA_ACCESS(PIO_OWDR_OFF)  
00202     #define PIOA_OWSR   PIOA_ACCESS(PIO_OWSR_OFF)  
00203     #endif /* PIO_HAS_OUTPUTWRITEENABLE */
00204 #endif /* PIOA_BASE */
00205 /*\}*/
00206 
00208 /*\{*/
00209 #if defined(PIOB_BASE)
00210     #define PIOB_ACCESS(offset) (*((reg32_t *)(PIOB_BASE + (offset))))
00211 
00212     #define PIOB_PER    PIOB_ACCESS(PIO_PER_OFF)   
00213     #define PIOB_PDR    PIOB_ACCESS(PIO_PDR_OFF)   
00214     #define PIOB_PSR    PIOB_ACCESS(PIO_PSR_OFF)   
00215     #define PIOB_OER    PIOB_ACCESS(PIO_OER_OFF)   
00216     #define PIOB_ODR    PIOB_ACCESS(PIO_ODR_OFF)   
00217     #define PIOB_OSR    PIOB_ACCESS(PIO_OSR_OFF)   
00218     #define PIOB_IFER   PIOB_ACCESS(PIO_IFER_OFF)  
00219     #define PIOB_IFDR   PIOB_ACCESS(PIO_IFDR_OFF)  
00220     #define PIOB_IFSR   PIOB_ACCESS(PIO_IFSR_OFF)  
00221     #define PIOB_SODR   PIOB_ACCESS(PIO_SODR_OFF)  
00222     #define PIOB_CODR   PIOB_ACCESS(PIO_CODR_OFF)  
00223     #define PIOB_ODSR   PIOB_ACCESS(PIO_ODSR_OFF)  
00224     #define PIOB_PDSR   PIOB_ACCESS(PIO_PDSR_OFF)  
00225     #define PIOB_IER    PIOB_ACCESS(PIO_IER_OFF)   
00226     #define PIOB_IDR    PIOB_ACCESS(PIO_IDR_OFF)   
00227     #define PIOB_IMR    PIOB_ACCESS(PIO_IMR_OFF)   
00228     #define PIOB_ISR    PIOB_ACCESS(PIO_ISR_OFF)   
00229     #if PIO_HAS_MULTIDRIVER
00230     #define PIOB_MDER   PIOB_ACCESS(PIO_MDER_OFF)  
00231     #define PIOB_MDDR   PIOB_ACCESS(PIO_MDDR_OFF)  
00232     #define PIOB_MDSR   PIOB_ACCESS(PIO_MDSR_OFF)  
00233     #endif /* PIO_HAS_MULTIDRIVER */
00234     #if PIO_HAS_PULLUP
00235     #define PIOB_PUDR   PIOB_ACCESS(PIO_PUDR_OFF)  
00236     #define PIOB_PUER   PIOB_ACCESS(PIO_PUER_OFF)  
00237     #define PIOB_PUSR   PIOB_ACCESS(PIO_PUSR_OFF)  
00238     #endif /* PIO_HAS_PULLUP */
00239     #if PIO_HAS_PERIPHERALSELECT
00240     #define PIOB_ASR    PIOB_ACCESS(PIO_ASR_OFF)   
00241     #define PIOB_BSR    PIOB_ACCESS(PIO_BSR_OFF)   
00242     #define PIOB_ABSR   PIOB_ACCESS(PIO_ABSR_OFF)  
00243     #endif /* PIO_HAS_PERIPHERALSELECT */
00244     #if PIO_HAS_OUTPUTWRITEENABLE
00245     #define PIOB_OWER   PIOB_ACCESS(PIO_OWER_OFF)  
00246     #define PIOB_OWDR   PIOB_ACCESS(PIO_OWDR_OFF)  
00247     #define PIOB_OWSR   PIOB_ACCESS(PIO_OWSR_OFF)  
00248     #endif /* PIO_HAS_OUTPUTWRITEENABLE */
00249 #endif /* PIOB_BASE */
00250 /*\}*/
00251 
00253 /*\{*/
00254 #if defined(PIOC_BASE)
00255     #define PIOC_ACCESS(offset) (*((reg32_t *)(PIOC_BASE + (offset))))
00256 
00257     #define PIOC_PER    PIOC_ACCESS(PIO_PER_OFF)   
00258     #define PIOC_PDR    PIOC_ACCESS(PIO_PDR_OFF)   
00259     #define PIOC_PSR    PIOC_ACCESS(PIO_PSR_OFF)   
00260     #define PIOC_OER    PIOC_ACCESS(PIO_OER_OFF)   
00261     #define PIOC_ODR    PIOC_ACCESS(PIO_ODR_OFF)   
00262     #define PIOC_OSR    PIOC_ACCESS(PIO_OSR_OFF)   
00263     #define PIOC_IFER   PIOC_ACCESS(PIO_IFER_OFF)  
00264     #define PIOC_IFDR   PIOC_ACCESS(PIO_IFDR_OFF)  
00265     #define PIOC_IFSR   PIOC_ACCESS(PIO_IFSR_OFF)  
00266     #define PIOC_SODR   PIOC_ACCESS(PIO_SODR_OFF)  
00267     #define PIOC_CODR   PIOC_ACCESS(PIO_CODR_OFF)  
00268     #define PIOC_ODSR   PIOC_ACCESS(PIO_ODSR_OFF)  
00269     #define PIOC_PDSR   PIOC_ACCESS(PIO_PDSR_OFF)  
00270     #define PIOC_IER    PIOC_ACCESS(PIO_IER_OFF)   
00271     #define PIOC_IDR    PIOC_ACCESS(PIO_IDR_OFF)   
00272     #define PIOC_IMR    PIOC_ACCESS(PIO_IMR_OFF)   
00273     #define PIOC_ISR    PIOC_ACCESS(PIO_ISR_OFF)   
00274     #if PIO_HAS_MULTIDRIVER
00275     #define PIOC_MDER   PIOC_ACCESS(PIO_MDER_OFF)  
00276     #define PIOC_MDDR   PIOC_ACCESS(PIO_MDDR_OFF)  
00277     #define PIOC_MDSR   PIOC_ACCESS(PIO_MDSR_OFF)  
00278     #endif /* PIO_HAS_MULTIDRIVER */
00279     #if PIO_HAS_PULLUP
00280     #define PIOC_PUDR   PIOC_ACCESS(PIO_PUDR_OFF)  
00281     #define PIOC_PUER   PIOC_ACCESS(PIO_PUER_OFF)  
00282     #define PIOC_PUSR   PIOC_ACCESS(PIO_PUSR_OFF)  
00283     #endif /* PIO_HAS_PULLUP */
00284     #if PIO_HAS_PERIPHERALSELECT
00285     #define PIOC_ASR    PIOC_ACCESS(PIO_ASR_OFF)   
00286     #define PIOC_BSR    PIOC_ACCESS(PIO_BSR_OFF)   
00287     #define PIOC_ABSR   PIOC_ACCESS(PIO_ABSR_OFF)  
00288     #endif /* PIO_HAS_PERIPHERALSELECT */
00289     #if PIO_HAS_OUTPUTWRITEENABLE
00290     #define PIOC_OWER   PIOC_ACCESS(PIO_OWER_OFF)  
00291     #define PIOC_OWDR   PIOC_ACCESS(PIO_OWDR_OFF)  
00292     #define PIOC_OWSR   PIOC_ACCESS(PIO_OWSR_OFF)  
00293     #endif /* PIO_HAS_OUTPUTWRITEENABLE */
00294 #endif /* PIOC_BASE */
00295 /*\}*/
00296 
00297 #endif /* AT91_PIO_H */