Part Number: CC2640R2F
Tool/software: TI-RTOS
Hi everyone,
I will use Real Time Clock to capture pulse duration instead of GPTimer.
// Set channel 1 in capture mode AONRTCModeCh1Set(AON_RTC_MODE_CH1_CAPTURE); // Enable channel AONRTCChannelEnable(AON_RTC_CH1); AONEventRtcSet(AON_EVENT_DIO27); AONRTCEnable();
I would like to set DIO17 pin in launchpad to capture. How can i set that which pin the rtc will capture ?
How can i trigger DMA to save the capture time to the memory when new capture result is ready ?
I edited the post and add the following text.
I worked on this topic a little bit. Here is what i did
void gpioButtonFxn0(uint_least8_t index)
{
AONRTCChannelEnable(AON_RTC_CH1);
AONRTCEnable();
}
void *mainThread(void *arg0)
{
/* Call driver init functions */
GPIO_init();
/* install Button callback */
GPIO_setCallback(Board_GPIO_BUTTON1, gpioButtonFxn0);
/* Enable interrupts */
GPIO_enableInt(Board_GPIO_BUTTON1);
// Disable all channel
AONRTCChannelDisable(AON_RTC_CH0);
AONRTCChannelDisable(AON_RTC_CH1);
AONRTCChannelDisable(AON_RTC_CH2);
AONRTCModeCh1Set(AON_RTC_MODE_CH1_CAPTURE);
//AONEventRtcSet(AON_EVENT_DIO17); //Note mapping is package dependent
AONEventRtcSet(AON_EVENT_IO); //Note mapping is package dependent
while(AONRTCEventGet(AON_RTC_CH1) == false);
data = AONRTCCaptureValueCh1Get();
}
When i press the button1 on the launchpad, the AON_RTC will be enabled and the its counter starts counting.
If any rising edge is detected on any pin, AON_RTC will be triggered to latch the counter value.
After this trigger, I should see the event flag in AON_RTC:EVFLAGS that tells new capture time is ready to read.
However, it did not. I cannot capture edge time.
Third edit
#define IO_CAPTURE IOID_17 //BTN_SELECT
#define AON_EVENT_DIO17 1 // 7x7
void *mainThread(void *arg0)
{
uint32_t data = 0;
PRCMPowerDomainOn(PRCM_DOMAIN_PERIPH);
while(PRCMPowerDomainStatus(PRCM_DOMAIN_PERIPH) != PRCM_DOMAIN_POWER_ON);
PRCMPeripheralRunEnable(PRCM_PERIPH_GPIO);
PRCMLoadSet();
while(!PRCMLoadGet());
/* Call driver init functions */
//GPIO_init();
/* install Button callback */
//GPIO_setCallback(Board_GPIO_BUTTON1, gpioButtonFxn0);
/* Enable interrupts */
//GPIO_enableInt(Board_GPIO_BUTTON1);
IOCPortConfigureSet(IO_CAPTURE, IOC_PORT_GPIO, SLOW_CLOCK_GPIO_CFG);
IOCIntEnable(IO_CAPTURE);
// Disable all channel
AONRTCChannelDisable(AON_RTC_CH0);
AONRTCChannelDisable(AON_RTC_CH1);
AONRTCChannelDisable(AON_RTC_CH2);
//AONEventMcuWakeUpSet(AON_EVENT_MCU_WU3, AON_EVENT_RTC_CH1);
//AONRTCCombinedEventConfig(AON_RTC_CH1);
AONRTCModeCh1Set(AON_RTC_MODE_CH1_CAPTURE);
//AONEventRtcSet(AON_EVENT_IO); //Note mapping is package dependent
AONRTCChannelEnable(AON_RTC_CH1);
AONRTCEnable();
AONEventRtcSet(AON_EVENT_DIO17); //Note mapping is package dependent
while(AONRTCEventGet(AON_RTC_CH1) == false);
data = AONRTCCaptureValueCh1Get();
}
Which value i should give to AONEventRtcSet function to set DIO 17 pin as event pin for RTC ?
According to the hw_device.h, i should give 1. However. when i applied pulse to DIO17 pin, RTC could not catch the trigger.
Please, help me to solve my problem. What is thing that i am missing ?
Have a nice day.