##// END OF EJS Templates

File last commit:

r116:117
r169:170
Show More
at91adc.h
124 lines | 6.5 KiB | text/x-c | CLexer
// *****************************************************************************
// SOFTWARE API DEFINITION FOR Analog to Digital Convertor
// *****************************************************************************
#ifndef ADC_AT91_H
#define ADC_AT91_H
#define MAP_SIZE 4096Ul
#define MAP_MASK (MAP_SIZE - 1)
#define ADC_BASE 0xFFFE0000
// -------- ADC_CR : (ADC Offset: 0x0) ADC Control Register --------
#define ADC_SWRST ((unsigned int) 0x1 << 0) // (ADC) Software Reset
#define ADC_START ((unsigned int) 0x1 << 1) // (ADC) Start Conversion
// -------- ADC_MR : (ADC Offset: 0x4) ADC Mode Register --------
#define ADC_TRGEN_DIS ((unsigned int) 0x0) // (ADC) Hradware triggers are disabled. Starting a conversion is only possible by software
#define ADC_TRGEN_EN ((unsigned int) 0x1) // (ADC) Hardware trigger selected by TRGSEL field is enabled.
#define ADC_TRGSEL_TIOA0 ((unsigned int) 0x0 << 1) // (ADC) Selected TRGSEL = TIAO0
#define ADC_TRGSEL_TIOA1 ((unsigned int) 0x1 << 1) // (ADC) Selected TRGSEL = TIAO1
#define ADC_TRGSEL_TIOA2 ((unsigned int) 0x2 << 1) // (ADC) Selected TRGSEL = TIAO2
#define ADC_TRGSEL_TIOA3 ((unsigned int) 0x3 << 1) // (ADC) Selected TRGSEL = TIAO3
#define ADC_TRGSEL_TIOA4 ((unsigned int) 0x4 << 1) // (ADC) Selected TRGSEL = TIAO4
#define ADC_TRGSEL_TIOA5 ((unsigned int) 0x5 << 1) // (ADC) Selected TRGSEL = TIAO5
#define ADC_TRGSEL_EXT ((unsigned int) 0x6 << 1) // (ADC) Selected TRGSEL = External Trigger
#define ADC_RES_10BIT ((unsigned int) 0x0 << 4) // (ADC) 10-bit resolution
#define ADC_RES_8BIT ((unsigned int) 0x1 << 4) // (ADC) 8-bit resolution
#define ADC_SLEEP_NORMAL_MODE ((unsigned int) 0x0 << 5) // (ADC) Normal Mode
#define ADC_SLEEP_MODE ((unsigned int) 0x1 << 5) // (ADC) Sleep Mode
#define ADC_PRESCAL ((unsigned int) 0x31 << 2) // (ADC) Prescaler rate selection
#define ADC_STARTUP ((unsigned int) 0x00 << 2) // (ADC) Startup Time
#define ADC_SHTIM ((unsigned int) 0x01 << 9) // (ADC) Sample & Hold Time
// -------- ADC_CHER : (ADC Offset: 0x10) ADC Channel Enable Register --------
#define ADC_CH0 ((unsigned int) 0x1 << 0) // (ADC) Channel 0
#define ADC_CH1 ((unsigned int) 0x1 << 1) // (ADC) Channel 1
#define ADC_CH2 ((unsigned int) 0x1 << 2) // (ADC) Channel 2
#define ADC_CH3 ((unsigned int) 0x1 << 3) // (ADC) Channel 3
/*Anadido por DCordova*/
// -------- ADC_CHSR : (ADC Offset: 0x10) ADC Channel Status Register --------
#define ADC_CHSR0 ((unsigned int) 0x1 << 0) // (ADC) Channel 0
#define ADC_CHSR1 ((unsigned int) 0x1 << 1) // (ADC) Channel 1
#define ADC_CHSR2 ((unsigned int) 0x1 << 2) // (ADC) Channel 2
#define ADC_CHSR3 ((unsigned int) 0x1 << 3) // (ADC) Channel 3
/*Anadido por DCordova*/
// -------- ADC_CHDR : (ADC Offset: 0x14) ADC Channel Disable Register --------
// -------- ADC_CHSR : (ADC Offset: 0x18) ADC Channel Status Register --------
// -------- ADC_SR : (ADC Offset: 0x1c) ADC Status Register --------
#define MASK_EOC0 ((unsigned int) 0x1 << 0) // (ADC) End of Conversion
#define MASK_EOC1 ((unsigned int) 0x1 << 1) // (ADC) End of Conversion
#define MASK_EOC2 ((unsigned int) 0x1 << 2) // (ADC) End of Conversion
#define MASK_EOC3 ((unsigned int) 0x1 << 3) // (ADC) End of Conversion
#define MASK_OVRE0 ((unsigned int) 0x1 << 8) // (ADC) Overrun Error
#define MASK_OVRE1 ((unsigned int) 0x1 << 9) // (ADC) Overrun Error
#define MASK_OVRE2 ((unsigned int) 0x1 << 10) // (ADC) Overrun Error
#define MASK_OVRE3 ((unsigned int) 0x1 << 11) // (ADC) Overrun Error
#define MASK_DRDY ((unsigned int) 0x1 << 16) // (ADC) Data Ready
#define MASK_GOVRE ((unsigned int) 0x1 << 17) // (ADC) General Overrun
// -------- ADC_LCDR : (ADC Offset: 0x20) ADC Last Converted Data Register --------
#define ADC_LDATA ((unsigned int) 0x3FF << 0) // (ADC) Last Data Converted
#define ADC_DATA ((unsigned int) 0x3FF << 0) // (ADC) Converted Data
#define ADC_DISABLE_INTERRUP ((unsigned int) 0x0F0F0F << 0) //(ADC) Disable all interrup
typedef volatile unsigned int AT91_REG2;// Hardware register definition
typedef struct _AT91S_ADC {
AT91_REG2 ADC_CR; // ADC Control Register
AT91_REG2 ADC_MR; // ADC Mode Register
AT91_REG2 Reserved0[2]; //
AT91_REG2 ADC_CHER; // ADC Channel Enable Register
AT91_REG2 ADC_CHDR; // ADC Channel Disable Register
AT91_REG2 ADC_CHSR; // ADC Channel Status Register
AT91_REG2 ADC_SR; // ADC Status Register
AT91_REG2 ADC_LCDR; // ADC Last Converted Data Register
AT91_REG2 ADC_IER; // ADC Interrupt Enable Register
AT91_REG2 ADC_IDR; // ADC Interrupt Disable Register
AT91_REG2 ADC_IMR; // ADC Interrupt Mask Register
AT91_REG2 ADC_CDR0; // ADC Channel Data Register 0
AT91_REG2 ADC_CDR1; // ADC Channel Data Register 1
AT91_REG2 ADC_CDR2; // ADC Channel Data Register 2
AT91_REG2 ADC_CDR3; // ADC Channel Data Register 3
AT91_REG2 ADC_CDR4; // ADC Channel Data Register 4
AT91_REG2 ADC_CDR5; // ADC Channel Data Register 5
AT91_REG2 ADC_CDR6; // ADC Channel Data Register 6
AT91_REG2 ADC_CDR7; // ADC Channel Data Register 7
AT91_REG2 Reserved1[44]; //
AT91_REG2 ADC_RPR; // Receive Pointer Register
AT91_REG2 ADC_RCR; // Receive Counter Register
AT91_REG2 ADC_TPR; // Transmit Pointer Register
AT91_REG2 ADC_TCR; // Transmit Counter Register
AT91_REG2 ADC_RNPR; // Receive Next Pointer Register
AT91_REG2 ADC_RNCR; // Receive Next Counter Register
AT91_REG2 ADC_TNPR; // Transmit Next Pointer Register
AT91_REG2 ADC_TNCR; // Transmit Next Counter Register
AT91_REG2 ADC_PTCR; // PDC Transfer Control Register
AT91_REG2 ADC_PTSR; // PDC Transfer Status Register
} AT91S_ADC, *AT91PS_ADC;
AT91S_ADC *adc_map(unsigned int adcbase);
/**********************Aniadido por DCV*********/
AT91S_ADC *adc_map1(unsigned int adcbase);
/**********************Aniadido por DCV*********/
void ADC_INIT(AT91S_ADC * adc);
void ADC_RESET(AT91S_ADC * adc);
void CONFIG_ADC(AT91S_ADC * adc,unsigned int REG_CONFIG);
void ENABLE_CHANNEL(AT91S_ADC * adc,unsigned int CHANNEL);
unsigned int STATUS_CHANNEL(AT91S_ADC * adc);
unsigned int GET_ADC(AT91S_ADC * adc);
unsigned int GET_ADC0(AT91S_ADC * adc);
unsigned int GET_ADC1(AT91S_ADC * adc);
unsigned int GET_ADC3(AT91S_ADC * adc);
unsigned int ver_reg_mode(AT91S_ADC * adc);
unsigned int GET_STATUS(AT91S_ADC * adc);
#endif