Mouse code for the MacroRat

Dependencies:   ITG3200 QEI

Committer:
sahilmgandhi
Date:
Sun May 14 23:18:57 2017 +0000
Revision:
18:6a4db94011d3
Publishing again

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sahilmgandhi 18:6a4db94011d3 1 /**************************************************************************//**
sahilmgandhi 18:6a4db94011d3 2 * @file eadc.c
sahilmgandhi 18:6a4db94011d3 3 * @version V1.00
sahilmgandhi 18:6a4db94011d3 4 * $Revision: 4 $
sahilmgandhi 18:6a4db94011d3 5 * $Date: 14/10/07 4:46p $
sahilmgandhi 18:6a4db94011d3 6 * @brief NUC472/NUC442 EADC driver source file
sahilmgandhi 18:6a4db94011d3 7 *
sahilmgandhi 18:6a4db94011d3 8 * @note
sahilmgandhi 18:6a4db94011d3 9 * Copyright (C) 2014 Nuvoton Technology Corp. All rights reserved.
sahilmgandhi 18:6a4db94011d3 10 *****************************************************************************/
sahilmgandhi 18:6a4db94011d3 11 #include "NUC472_442.h"
sahilmgandhi 18:6a4db94011d3 12
sahilmgandhi 18:6a4db94011d3 13 /** @addtogroup NUC472_442_Device_Driver NUC472/NUC442 Device Driver
sahilmgandhi 18:6a4db94011d3 14 @{
sahilmgandhi 18:6a4db94011d3 15 */
sahilmgandhi 18:6a4db94011d3 16
sahilmgandhi 18:6a4db94011d3 17 /** @addtogroup NUC472_442_EADC_Driver EADC Driver
sahilmgandhi 18:6a4db94011d3 18 @{
sahilmgandhi 18:6a4db94011d3 19 */
sahilmgandhi 18:6a4db94011d3 20
sahilmgandhi 18:6a4db94011d3 21
sahilmgandhi 18:6a4db94011d3 22 /** @addtogroup NUC472_442_EADC_EXPORTED_FUNCTIONS EADC Exported Functions
sahilmgandhi 18:6a4db94011d3 23 @{
sahilmgandhi 18:6a4db94011d3 24 */
sahilmgandhi 18:6a4db94011d3 25
sahilmgandhi 18:6a4db94011d3 26 /**
sahilmgandhi 18:6a4db94011d3 27 * @brief This function make EADC_module be ready to convert.
sahilmgandhi 18:6a4db94011d3 28 * @param[in] eadc Base address of EADC module.
sahilmgandhi 18:6a4db94011d3 29 * @param[in] u32InputMode This parameter is not used.
sahilmgandhi 18:6a4db94011d3 30 * @return None
sahilmgandhi 18:6a4db94011d3 31 * @details This function is used to set analog input mode and enable A/D Converter.
sahilmgandhi 18:6a4db94011d3 32 * Before starting A/D conversion function, ADCEN bit (EADC_CTL[0]) should be set to 1.
sahilmgandhi 18:6a4db94011d3 33 * @note
sahilmgandhi 18:6a4db94011d3 34 */
sahilmgandhi 18:6a4db94011d3 35 void EADC_Open(EADC_T *eadc, uint32_t u32InputMode)
sahilmgandhi 18:6a4db94011d3 36 {
sahilmgandhi 18:6a4db94011d3 37 eadc->CTL |= EADC_CTL_ADCEN_Msk;
sahilmgandhi 18:6a4db94011d3 38 }
sahilmgandhi 18:6a4db94011d3 39
sahilmgandhi 18:6a4db94011d3 40 /**
sahilmgandhi 18:6a4db94011d3 41 * @brief Disable EADC_module.
sahilmgandhi 18:6a4db94011d3 42 * @param[in] eadc Base address of EADC module..
sahilmgandhi 18:6a4db94011d3 43 * @return None
sahilmgandhi 18:6a4db94011d3 44 * @details Clear ADCEN bit (EADC_CTL[0]) to disable A/D converter analog circuit power consumption.
sahilmgandhi 18:6a4db94011d3 45 */
sahilmgandhi 18:6a4db94011d3 46 void EADC_Close(EADC_T *eadc)
sahilmgandhi 18:6a4db94011d3 47 {
sahilmgandhi 18:6a4db94011d3 48 eadc->CTL &= ~EADC_CTL_ADCEN_Msk;
sahilmgandhi 18:6a4db94011d3 49 }
sahilmgandhi 18:6a4db94011d3 50
sahilmgandhi 18:6a4db94011d3 51 /**
sahilmgandhi 18:6a4db94011d3 52 * @brief Configure the sample control logic module.
sahilmgandhi 18:6a4db94011d3 53 * @param[in] eadc Base address of EADC module.
sahilmgandhi 18:6a4db94011d3 54 * @param[in] u32ModuleNum Decides the sample module number, valid values are:
sahilmgandhi 18:6a4db94011d3 55 * - \ref EADC0_SAMPLE_MODULE0 : EADC0 SAMPLE module 0
sahilmgandhi 18:6a4db94011d3 56 * - \ref EADC0_SAMPLE_MODULE1 : EADC0 SAMPLE module 1
sahilmgandhi 18:6a4db94011d3 57 * - \ref EADC0_SAMPLE_MODULE2 : EADC0 SAMPLE module 2
sahilmgandhi 18:6a4db94011d3 58 * - \ref EADC0_SAMPLE_MODULE3 : EADC0 SAMPLE module 3
sahilmgandhi 18:6a4db94011d3 59 * - \ref EADC0_SAMPLE_MODULE4 : EADC0 SAMPLE module 4
sahilmgandhi 18:6a4db94011d3 60 * - \ref EADC0_SAMPLE_MODULE5 : EADC0 SAMPLE module 5
sahilmgandhi 18:6a4db94011d3 61 * - \ref EADC0_SAMPLE_MODULE6 : EADC0 SAMPLE module 6
sahilmgandhi 18:6a4db94011d3 62 * - \ref EADC0_SAMPLE_MODULE7 : EADC0 SAMPLE module 7
sahilmgandhi 18:6a4db94011d3 63 * - \ref EADC1_SAMPLE_MODULE0 : EADC1 SAMPLE module 0
sahilmgandhi 18:6a4db94011d3 64 * - \ref EADC1_SAMPLE_MODULE1 : EADC1 SAMPLE module 1
sahilmgandhi 18:6a4db94011d3 65 * - \ref EADC1_SAMPLE_MODULE2 : EADC1 SAMPLE module 2
sahilmgandhi 18:6a4db94011d3 66 * - \ref EADC1_SAMPLE_MODULE3 : EADC1 SAMPLE module 3
sahilmgandhi 18:6a4db94011d3 67 * - \ref EADC1_SAMPLE_MODULE4 : EADC1 SAMPLE module 4
sahilmgandhi 18:6a4db94011d3 68 * - \ref EADC1_SAMPLE_MODULE5 : EADC1 SAMPLE module 5
sahilmgandhi 18:6a4db94011d3 69 * - \ref EADC1_SAMPLE_MODULE6 : EADC1 SAMPLE module 6
sahilmgandhi 18:6a4db94011d3 70 * - \ref EADC1_SAMPLE_MODULE7 : EADC1 SAMPLE module 7
sahilmgandhi 18:6a4db94011d3 71 * @param[in] u32TriggerSrc Decides the trigger source. Valid values are:
sahilmgandhi 18:6a4db94011d3 72 * - \ref EADC_SOFTWARE_TRIGGER : Disable trigger
sahilmgandhi 18:6a4db94011d3 73 * - \ref EADC_STADC_TRIGGER : STADC pin trigger
sahilmgandhi 18:6a4db94011d3 74 * - \ref EADC_ADINT0_TRIGGER : ADC ADINT0 interrupt EOC pulse trigger
sahilmgandhi 18:6a4db94011d3 75 * - \ref EADC_ADINT1_TRIGGER : ADC ADINT1 interrupt EOC pulse trigger
sahilmgandhi 18:6a4db94011d3 76 * - \ref EADC_TIMER0_TRIGGER : Timer0 overflow pulse trigger
sahilmgandhi 18:6a4db94011d3 77 * - \ref EADC_TIMER1_TRIGGER : Timer1 overflow pulse trigger
sahilmgandhi 18:6a4db94011d3 78 * - \ref EADC_TIMER2_TRIGGER : Timer2 overflow pulse trigger
sahilmgandhi 18:6a4db94011d3 79 * - \ref EADC_TIMER3_TRIGGER : Timer3 overflow pulse trigger
sahilmgandhi 18:6a4db94011d3 80 * - \ref EADC_EPWM0CH0_TRIGGER : EPWM0CH0 trigger
sahilmgandhi 18:6a4db94011d3 81 * - \ref EADC_EPWM0CH2_TRIGGER : EPWM0CH2 trigger
sahilmgandhi 18:6a4db94011d3 82 * - \ref EADC_EPWM0CH4_TRIGGER : EPWM0CH4 trigger
sahilmgandhi 18:6a4db94011d3 83 * - \ref EADC_EPWM1CH0_TRIGGER : EPWM0CH0 trigger
sahilmgandhi 18:6a4db94011d3 84 * - \ref EADC_EPWM1CH2_TRIGGER : EPWM0CH2 trigger
sahilmgandhi 18:6a4db94011d3 85 * - \ref EADC_EPWM1CH4_TRIGGER : EPWM0CH4 trigger
sahilmgandhi 18:6a4db94011d3 86 * - \ref EADC_PWM0CH0_TRIGGER : PWM0CH0 trigger
sahilmgandhi 18:6a4db94011d3 87 * - \ref EADC_PWM0CH1_TRIGGER : PWM0CH1 trigger
sahilmgandhi 18:6a4db94011d3 88 * @param[in] u32Channel Specifies the sample module channel, valid value are from 0 to 15.
sahilmgandhi 18:6a4db94011d3 89 * @return None
sahilmgandhi 18:6a4db94011d3 90 * @details Each of ADC control logic modules 0~15 which is configurable for ADC converter channel EADC_CH0~15 and trigger source.
sahilmgandhi 18:6a4db94011d3 91 * sample module 16~18 is fixed for ADC channel 16, 17, 18 input sources as band-gap voltage, temperature sensor, and battery power (VBAT).
sahilmgandhi 18:6a4db94011d3 92 */
sahilmgandhi 18:6a4db94011d3 93 void EADC_ConfigSampleModule(EADC_T *eadc, \
sahilmgandhi 18:6a4db94011d3 94 uint32_t u32ModuleNum, \
sahilmgandhi 18:6a4db94011d3 95 uint32_t u32TriggerSrc, \
sahilmgandhi 18:6a4db94011d3 96 uint32_t u32Channel)
sahilmgandhi 18:6a4db94011d3 97 {
sahilmgandhi 18:6a4db94011d3 98 *(__IO uint32_t *)(&eadc->AD0SPCTL0 + u32ModuleNum) &= ~(EADC_AD0SPCTL0_TRGSEL_Msk | EADC_AD0SPCTL0_CHSEL_Msk);
sahilmgandhi 18:6a4db94011d3 99 *(__IO uint32_t *)(&eadc->AD0SPCTL0 + u32ModuleNum) |= (u32TriggerSrc | u32Channel);
sahilmgandhi 18:6a4db94011d3 100 if (u32TriggerSrc == EADC_STADC_TRIGGER)
sahilmgandhi 18:6a4db94011d3 101 *(__IO uint32_t *)(&eadc->AD0SPCTL0 + u32ModuleNum) |= (EADC_AD0SPCTL0_EXTREN_Msk | EADC_AD0SPCTL0_EXTFEN_Msk);
sahilmgandhi 18:6a4db94011d3 102
sahilmgandhi 18:6a4db94011d3 103 }
sahilmgandhi 18:6a4db94011d3 104
sahilmgandhi 18:6a4db94011d3 105
sahilmgandhi 18:6a4db94011d3 106 /**
sahilmgandhi 18:6a4db94011d3 107 * @brief Set trigger delay time.
sahilmgandhi 18:6a4db94011d3 108 * @param[in] eadc Base address of EADC module.
sahilmgandhi 18:6a4db94011d3 109 * @param[in] u32ModuleNum Decides the sample module number, valid values are:
sahilmgandhi 18:6a4db94011d3 110 * - \ref EADC0_SAMPLE_MODULE0 : EADC0 SAMPLE module 0
sahilmgandhi 18:6a4db94011d3 111 * - \ref EADC0_SAMPLE_MODULE1 : EADC0 SAMPLE module 1
sahilmgandhi 18:6a4db94011d3 112 * - \ref EADC0_SAMPLE_MODULE2 : EADC0 SAMPLE module 2
sahilmgandhi 18:6a4db94011d3 113 * - \ref EADC0_SAMPLE_MODULE3 : EADC0 SAMPLE module 3
sahilmgandhi 18:6a4db94011d3 114 * - \ref EADC0_SAMPLE_MODULE4 : EADC0 SAMPLE module 4
sahilmgandhi 18:6a4db94011d3 115 * - \ref EADC0_SAMPLE_MODULE5 : EADC0 SAMPLE module 5
sahilmgandhi 18:6a4db94011d3 116 * - \ref EADC0_SAMPLE_MODULE6 : EADC0 SAMPLE module 6
sahilmgandhi 18:6a4db94011d3 117 * - \ref EADC0_SAMPLE_MODULE7 : EADC0 SAMPLE module 7
sahilmgandhi 18:6a4db94011d3 118 * - \ref EADC1_SAMPLE_MODULE0 : EADC1 SAMPLE module 0
sahilmgandhi 18:6a4db94011d3 119 * - \ref EADC1_SAMPLE_MODULE1 : EADC1 SAMPLE module 1
sahilmgandhi 18:6a4db94011d3 120 * - \ref EADC1_SAMPLE_MODULE2 : EADC1 SAMPLE module 2
sahilmgandhi 18:6a4db94011d3 121 * - \ref EADC1_SAMPLE_MODULE3 : EADC1 SAMPLE module 3
sahilmgandhi 18:6a4db94011d3 122 * - \ref EADC1_SAMPLE_MODULE4 : EADC1 SAMPLE module 4
sahilmgandhi 18:6a4db94011d3 123 * - \ref EADC1_SAMPLE_MODULE5 : EADC1 SAMPLE module 5
sahilmgandhi 18:6a4db94011d3 124 * - \ref EADC1_SAMPLE_MODULE6 : EADC1 SAMPLE module 6
sahilmgandhi 18:6a4db94011d3 125 * - \ref EADC1_SAMPLE_MODULE7 : EADC1 SAMPLE module 7
sahilmgandhi 18:6a4db94011d3 126 * @param[in] u32TriggerDelayTime Decides the trigger delay time, valid range are between 0~0xFF.
sahilmgandhi 18:6a4db94011d3 127 * @param[in] u32DelayClockDivider Decides the trigger delay clock divider. Valid values are:
sahilmgandhi 18:6a4db94011d3 128 * - \ref EADC_SPCTL_TRGDLYDIV_DIVIDER_1 : Trigger delay clock frequency is ADC_CLK/1
sahilmgandhi 18:6a4db94011d3 129 * - \ref EADC_SPCTL_TRGDLYDIV_DIVIDER_2 : Trigger delay clock frequency is ADC_CLK/2
sahilmgandhi 18:6a4db94011d3 130 * - \ref EADC_SPCTL_TRGDLYDIV_DIVIDER_4 : Trigger delay clock frequency is ADC_CLK/4
sahilmgandhi 18:6a4db94011d3 131 * - \ref EADC_SPCTL_TRGDLYDIV_DIVIDER_16 : Trigger delay clock frequency is ADC_CLK/16
sahilmgandhi 18:6a4db94011d3 132 * @return None
sahilmgandhi 18:6a4db94011d3 133 * @details User can configure the trigger delay time by setting TRGDLYCNT (EADC_SCTLn[15:8], n=0~15) and TRGDLYDIV (EADC_SCTLn[7:6], n=8~15).
sahilmgandhi 18:6a4db94011d3 134 * Trigger delay time = (u32TriggerDelayTime) x Trigger delay clock period.
sahilmgandhi 18:6a4db94011d3 135 */
sahilmgandhi 18:6a4db94011d3 136 void EADC_SetTriggerDelayTime(EADC_T *eadc, \
sahilmgandhi 18:6a4db94011d3 137 uint32_t u32ModuleNum, \
sahilmgandhi 18:6a4db94011d3 138 uint32_t u32TriggerDelayTime, \
sahilmgandhi 18:6a4db94011d3 139 uint32_t u32DelayClockDivider)
sahilmgandhi 18:6a4db94011d3 140 {
sahilmgandhi 18:6a4db94011d3 141 *(__IO uint32_t *)(&eadc->AD0SPCTL0 + u32ModuleNum) &= ~(EADC_AD0SPCTL0_TRGDLYDIV_Msk | EADC_AD0SPCTL0_TRGDLYCNT_Msk);
sahilmgandhi 18:6a4db94011d3 142 *(__IO uint32_t *)(&eadc->AD0SPCTL0 + u32ModuleNum) |= ((u32TriggerDelayTime << EADC_AD0SPCTL0_TRGDLYCNT_Pos) | u32DelayClockDivider);
sahilmgandhi 18:6a4db94011d3 143 }
sahilmgandhi 18:6a4db94011d3 144
sahilmgandhi 18:6a4db94011d3 145
sahilmgandhi 18:6a4db94011d3 146 /**
sahilmgandhi 18:6a4db94011d3 147 * @brief Set ADC extend sample time.
sahilmgandhi 18:6a4db94011d3 148 * @param[in] eadc Base address of EADC module.
sahilmgandhi 18:6a4db94011d3 149 * @param[in] u32ModuleNum Decides the sample module number, valid values are:
sahilmgandhi 18:6a4db94011d3 150 * - \ref EADC0_SAMPLE_MODULE0 : EADC0 SAMPLE module 0
sahilmgandhi 18:6a4db94011d3 151 * - \ref EADC0_SAMPLE_MODULE1 : EADC0 SAMPLE module 1
sahilmgandhi 18:6a4db94011d3 152 * - \ref EADC0_SAMPLE_MODULE2 : EADC0 SAMPLE module 2
sahilmgandhi 18:6a4db94011d3 153 * - \ref EADC0_SAMPLE_MODULE3 : EADC0 SAMPLE module 3
sahilmgandhi 18:6a4db94011d3 154 * - \ref EADC0_SAMPLE_MODULE4 : EADC0 SAMPLE module 4
sahilmgandhi 18:6a4db94011d3 155 * - \ref EADC0_SAMPLE_MODULE5 : EADC0 SAMPLE module 5
sahilmgandhi 18:6a4db94011d3 156 * - \ref EADC0_SAMPLE_MODULE6 : EADC0 SAMPLE module 6
sahilmgandhi 18:6a4db94011d3 157 * - \ref EADC0_SAMPLE_MODULE7 : EADC0 SAMPLE module 7
sahilmgandhi 18:6a4db94011d3 158 * - \ref EADC1_SAMPLE_MODULE0 : EADC1 SAMPLE module 0
sahilmgandhi 18:6a4db94011d3 159 * - \ref EADC1_SAMPLE_MODULE1 : EADC1 SAMPLE module 1
sahilmgandhi 18:6a4db94011d3 160 * - \ref EADC1_SAMPLE_MODULE2 : EADC1 SAMPLE module 2
sahilmgandhi 18:6a4db94011d3 161 * - \ref EADC1_SAMPLE_MODULE3 : EADC1 SAMPLE module 3
sahilmgandhi 18:6a4db94011d3 162 * - \ref EADC1_SAMPLE_MODULE4 : EADC1 SAMPLE module 4
sahilmgandhi 18:6a4db94011d3 163 * - \ref EADC1_SAMPLE_MODULE5 : EADC1 SAMPLE module 5
sahilmgandhi 18:6a4db94011d3 164 * - \ref EADC1_SAMPLE_MODULE6 : EADC1 SAMPLE module 6
sahilmgandhi 18:6a4db94011d3 165 * - \ref EADC1_SAMPLE_MODULE7 : EADC1 SAMPLE module 7
sahilmgandhi 18:6a4db94011d3 166 * @param[in] u32ExtendSampleTime Decides the extend sampling time, the range is from 0~255 ADC clock. Valid value are from 0 to 0xFF.
sahilmgandhi 18:6a4db94011d3 167 * @return None
sahilmgandhi 18:6a4db94011d3 168 * @details When A/D converting at high conversion rate, the sampling time of analog input voltage may not enough if input channel loading is heavy,
sahilmgandhi 18:6a4db94011d3 169 * user can extend A/D sampling time after trigger source is coming to get enough sampling time.
sahilmgandhi 18:6a4db94011d3 170 */
sahilmgandhi 18:6a4db94011d3 171 void EADC_SetExtendSampleTime(EADC_T *eadc, uint32_t u32ModuleNum, uint32_t u32ExtendSampleTime)
sahilmgandhi 18:6a4db94011d3 172 {
sahilmgandhi 18:6a4db94011d3 173 if (u32ModuleNum < EADC1_SAMPLE_MODULE0) {
sahilmgandhi 18:6a4db94011d3 174 eadc->EXTSMPT &= ~EADC_EXTSMPT_EXTSMPT0_Msk;
sahilmgandhi 18:6a4db94011d3 175 eadc->EXTSMPT |= u32ExtendSampleTime;
sahilmgandhi 18:6a4db94011d3 176 } else {
sahilmgandhi 18:6a4db94011d3 177 eadc->EXTSMPT &= ~EADC_EXTSMPT_EXTSMPT1_Msk;
sahilmgandhi 18:6a4db94011d3 178 eadc->EXTSMPT |= (u32ExtendSampleTime << EADC_EXTSMPT_EXTSMPT1_Pos);
sahilmgandhi 18:6a4db94011d3 179 }
sahilmgandhi 18:6a4db94011d3 180 }
sahilmgandhi 18:6a4db94011d3 181
sahilmgandhi 18:6a4db94011d3 182 /*@}*/ /* end of group NUC472_442_EADC_EXPORTED_FUNCTIONS */
sahilmgandhi 18:6a4db94011d3 183
sahilmgandhi 18:6a4db94011d3 184 /*@}*/ /* end of group NUC472_442_EADC_Driver */
sahilmgandhi 18:6a4db94011d3 185
sahilmgandhi 18:6a4db94011d3 186 /*@}*/ /* end of group NUC472_442_Device_Driver */
sahilmgandhi 18:6a4db94011d3 187
sahilmgandhi 18:6a4db94011d3 188 /*** (C) COPYRIGHT 2014 Nuvoton Technology Corp. ***/