Mouse code for the MacroRat

Dependencies:   ITG3200 QEI

Committer:
sahilmgandhi
Date:
Sat Jun 03 00:22:44 2017 +0000
Revision:
46:b156ef445742
Parent:
18:6a4db94011d3
Final code for internal battlebot competition.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sahilmgandhi 18:6a4db94011d3 1 /**************************************************************************//**
sahilmgandhi 18:6a4db94011d3 2 * @file dac.c
sahilmgandhi 18:6a4db94011d3 3 * @version V2.00
sahilmgandhi 18:6a4db94011d3 4 * $Revision: 8 $
sahilmgandhi 18:6a4db94011d3 5 * $Date: 15/08/11 10:26a $
sahilmgandhi 18:6a4db94011d3 6 * @brief M451 series DAC driver source file
sahilmgandhi 18:6a4db94011d3 7 *
sahilmgandhi 18:6a4db94011d3 8 * @note
sahilmgandhi 18:6a4db94011d3 9 * Copyright (C) 2014~2015 Nuvoton Technology Corp. All rights reserved.
sahilmgandhi 18:6a4db94011d3 10 *****************************************************************************/
sahilmgandhi 18:6a4db94011d3 11 #include "M451Series.h"
sahilmgandhi 18:6a4db94011d3 12
sahilmgandhi 18:6a4db94011d3 13 /** @addtogroup Standard_Driver Standard Driver
sahilmgandhi 18:6a4db94011d3 14 @{
sahilmgandhi 18:6a4db94011d3 15 */
sahilmgandhi 18:6a4db94011d3 16
sahilmgandhi 18:6a4db94011d3 17 /** @addtogroup DAC_Driver DAC Driver
sahilmgandhi 18:6a4db94011d3 18 @{
sahilmgandhi 18:6a4db94011d3 19 */
sahilmgandhi 18:6a4db94011d3 20
sahilmgandhi 18:6a4db94011d3 21 /** @addtogroup DAC_EXPORTED_FUNCTIONS DAC Exported Functions
sahilmgandhi 18:6a4db94011d3 22 @{
sahilmgandhi 18:6a4db94011d3 23 */
sahilmgandhi 18:6a4db94011d3 24
sahilmgandhi 18:6a4db94011d3 25 /**
sahilmgandhi 18:6a4db94011d3 26 * @brief This function make DAC module be ready to convert.
sahilmgandhi 18:6a4db94011d3 27 * @param[in] dac Base address of DAC module.
sahilmgandhi 18:6a4db94011d3 28 * @param[in] u32Ch Not used in M451 Series DAC.
sahilmgandhi 18:6a4db94011d3 29 * @param[in] u32TrgSrc Decides the trigger source. Valid values are:
sahilmgandhi 18:6a4db94011d3 30 * - \ref DAC_WRITE_DAT_TRIGGER :Write DAC_DAT trigger
sahilmgandhi 18:6a4db94011d3 31 * - \ref DAC_SOFTWARE_TRIGGER :Software trigger
sahilmgandhi 18:6a4db94011d3 32 * - \ref DAC_LOW_LEVEL_TRIGGER :STDAC pin low level trigger
sahilmgandhi 18:6a4db94011d3 33 * - \ref DAC_HIGH_LEVEL_TRIGGER :STDAC pin high level trigger
sahilmgandhi 18:6a4db94011d3 34 * - \ref DAC_FALLING_EDGE_TRIGGER :STDAC pin falling edge trigger
sahilmgandhi 18:6a4db94011d3 35 * - \ref DAC_RISING_EDGE_TRIGGER :STDAC pin rising edge trigger
sahilmgandhi 18:6a4db94011d3 36 * - \ref DAC_TIMER0_TRIGGER :Timer 0 trigger
sahilmgandhi 18:6a4db94011d3 37 * - \ref DAC_TIMER1_TRIGGER :Timer 1 trigger
sahilmgandhi 18:6a4db94011d3 38 * - \ref DAC_TIMER2_TRIGGER :Timer 2 trigger
sahilmgandhi 18:6a4db94011d3 39 * - \ref DAC_TIMER3_TRIGGER :Timer 3 trigger
sahilmgandhi 18:6a4db94011d3 40 * - \ref DAC_PWM0_TRIGGER :PWM0 trigger
sahilmgandhi 18:6a4db94011d3 41 * - \ref DAC_PWM1_TRIGGER :PWM1 trigger
sahilmgandhi 18:6a4db94011d3 42 * @return None
sahilmgandhi 18:6a4db94011d3 43 * @details The DAC conversion can be started by writing DAC_DAT, software trigger or hardware trigger.
sahilmgandhi 18:6a4db94011d3 44 * When TRGEN (DAC_CTL[4]) is 0, the data conversion is started by writing DAC_DAT register.
sahilmgandhi 18:6a4db94011d3 45 * When TRGEN (DAC_CTL[4]) is 1, the data conversion is started by SWTRG (DAC_SWTRG[0]) is set to 1,
sahilmgandhi 18:6a4db94011d3 46 * external STDAC pin, timer event, or PWM timer event.
sahilmgandhi 18:6a4db94011d3 47 */
sahilmgandhi 18:6a4db94011d3 48 void DAC_Open(DAC_T *dac,
sahilmgandhi 18:6a4db94011d3 49 uint32_t u32Ch,
sahilmgandhi 18:6a4db94011d3 50 uint32_t u32TrgSrc)
sahilmgandhi 18:6a4db94011d3 51 {
sahilmgandhi 18:6a4db94011d3 52 dac->CTL &= ~(DAC_CTL_ETRGSEL_Msk | DAC_CTL_TRGSEL_Msk | DAC_CTL_TRGEN_Msk);
sahilmgandhi 18:6a4db94011d3 53
sahilmgandhi 18:6a4db94011d3 54 dac->CTL |= (u32TrgSrc | DAC_CTL_DACEN_Msk);
sahilmgandhi 18:6a4db94011d3 55 }
sahilmgandhi 18:6a4db94011d3 56
sahilmgandhi 18:6a4db94011d3 57 /**
sahilmgandhi 18:6a4db94011d3 58 * @brief Disable DAC analog power.
sahilmgandhi 18:6a4db94011d3 59 * @param[in] dac Base address of DAC module.
sahilmgandhi 18:6a4db94011d3 60 * @param[in] u32Ch Not used in M451 Series DAC.
sahilmgandhi 18:6a4db94011d3 61 * @return None
sahilmgandhi 18:6a4db94011d3 62 * @details Disable DAC analog power for saving power consumption.
sahilmgandhi 18:6a4db94011d3 63 */
sahilmgandhi 18:6a4db94011d3 64 void DAC_Close(DAC_T *dac, uint32_t u32Ch)
sahilmgandhi 18:6a4db94011d3 65 {
sahilmgandhi 18:6a4db94011d3 66 dac->CTL &= (~DAC_CTL_DACEN_Msk);
sahilmgandhi 18:6a4db94011d3 67 }
sahilmgandhi 18:6a4db94011d3 68
sahilmgandhi 18:6a4db94011d3 69 /**
sahilmgandhi 18:6a4db94011d3 70 * @brief Set delay time for DAC to become stable.
sahilmgandhi 18:6a4db94011d3 71 * @param[in] dac Base address of DAC module.
sahilmgandhi 18:6a4db94011d3 72 * @param[in] u32Delay Decides the DAC conversion settling time, the range is from 0~(1023/PCLK*1000000) micro seconds.
sahilmgandhi 18:6a4db94011d3 73 * @return Real DAC conversion settling time (micro second).
sahilmgandhi 18:6a4db94011d3 74 * @details For example, DAC controller clock speed is 72MHz and DAC conversion setting time is 1 us, SETTLET (DAC_TCTL[9:0]) value must be greater than 0x48.
sahilmgandhi 18:6a4db94011d3 75 * @note User needs to write appropriate value to meet DAC conversion settling time base on PCLK (APB clock) speed.
sahilmgandhi 18:6a4db94011d3 76 */
sahilmgandhi 18:6a4db94011d3 77 float DAC_SetDelayTime(DAC_T *dac, uint32_t u32Delay)
sahilmgandhi 18:6a4db94011d3 78 {
sahilmgandhi 18:6a4db94011d3 79 SystemCoreClockUpdate();
sahilmgandhi 18:6a4db94011d3 80
sahilmgandhi 18:6a4db94011d3 81 dac->TCTL = ((SystemCoreClock * u32Delay / 1000000) & 0x3FF);
sahilmgandhi 18:6a4db94011d3 82
sahilmgandhi 18:6a4db94011d3 83 return ((dac->TCTL) * 1000000 / SystemCoreClock);
sahilmgandhi 18:6a4db94011d3 84 }
sahilmgandhi 18:6a4db94011d3 85
sahilmgandhi 18:6a4db94011d3 86
sahilmgandhi 18:6a4db94011d3 87
sahilmgandhi 18:6a4db94011d3 88 /*@}*/ /* end of group DAC_EXPORTED_FUNCTIONS */
sahilmgandhi 18:6a4db94011d3 89
sahilmgandhi 18:6a4db94011d3 90 /*@}*/ /* end of group DAC_Driver */
sahilmgandhi 18:6a4db94011d3 91
sahilmgandhi 18:6a4db94011d3 92 /*@}*/ /* end of group Standard_Driver */
sahilmgandhi 18:6a4db94011d3 93
sahilmgandhi 18:6a4db94011d3 94 /*** (C) COPYRIGHT 2014~2015 Nuvoton Technology Corp. ***/