- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
hi all, using a illd, I configured a fast compare channel like this:
void FastCompare_Init(void) {
IfxEvadc_Adc_FastCompareChannelConfig config;
IfxEvadc_Adc_initFastCompareChannelConfig(&config,&g_evadc);
config.fastCompareChannelId=IfxEvadc_GroupId_14;
config.channelEventMode=IfxEvadc_ChannelEventMode_aboveOrBelowCompareValue;
config.serviceRequestGenerationEvent=IfxEvadc_FastCompareServiceRequestGeneration_newResult;
config.referenceValue=256;
config.runMode=IfxEvadc_FastCompareRunControl_alwaysRun;
config.triggerInterval=0; //16/fADC 16/160mhz= 1mhz
IfxEvadc_Adc_FastCompareChannel fc;
IfxEvadc_Adc_initFastCompareChannel(&fc,&config);
g_evadc.evadc->FC[fc_channel].FCHYST.B.DELTAMINUS=0;
g_evadc.evadc->FC[fc_channel].FCHYST.B.DELTAPLUS=128;
volatile Ifx_SRC_SRCR* src_regP=IfxEvadc_getSrcAddress(IfxEvadc_GroupId_14,0);
IfxSrc_init(src_regP, Cpu_GetCoreServiceProvider(), ISR_PRIORITY_FASTCOMPARE);
IfxSrc_enable(src_regP);
}
IFX_INTERRUPT(ISR_ADC_result, 0, ISR_PRIORITY_FASTCOMPARE);
void ISR_ADC_result(void)
{
counter++;
}
and it works as expected.
but,
it'is possible route interrupt to a TIM counter to perform Count or Frequency calc without cpu intervention?
I have already configured the TIM counters to detect a frequency or a count of a signal coming from a pin, but I don't understand how I can select the result of the fast appear as the TIM input.
- Labels:
-
Aurix
- Tags:
- FastCompare
- gtm
- tim
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
It is possible to route the FC BFL flag to TIM input.
You can refer to the section "Port to GTM TIM Connections" in the device-specific user manual for the device-specific routing options.
Best Regards.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
i'am using TC377. I have already read this section and noticed that in the file:
"IfxGtm_PinMap.c" there is the mapping of all the configurations but there are not those of the FC BFL.
so i did this TIM init function :
IfxGtm_Tim_In g_driverTIM; // TIM driver structure
void Tim_Init(void) { //test
IfxGtm_enable(&MODULE_GTM); //Enable the GTM
IfxGtm_Cmu_enableClocks(&MODULE_GTM, IFXGTM_CMU_CLKEN_CLK0); //Enable the CMU clock 0
IfxGtm_Tim_In_Config configTIM;
IfxGtm_Tim_In_initConfig(&configTIM, &MODULE_GTM); //Initialize default parameters
//pin map for: FC2BFL, EVADC boundary flag level of FC channel 2
static const IfxGtm_Tim_TinMap IfxGtm_TIM0_2_FC2BFL_IN = {IfxGtm_Tim_0, IfxGtm_Tim_Ch_2, {0}, (IfxGtm_ChXSel)0};
configTIM.filter.inputPin = &IfxGtm_TIM0_2_FC2BFL_IN; //Select input port pin
configTIM.filter.inputPinMode = IfxPort_InputMode_undefined; //Select input port pin mode
IfxGtm_Tim_In_init(&g_driverTIM, &configTIM); //Initialize the TIM
}
and in main i call:
FastCompare_Init();
Tim_Init();
and in main loop i read period with:
IfxGtm_Tim_In_update(&g_driverTIM);
int period=IfxGtm_Tim_In_getPeriodSecond(&g_driverTIM);
but it does not work. I forgot something?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Can you check the "GTM_TIM_Capture_1" example from the Aurix Development Studio?
1. You can test check this "GTM_TIM_Capture_1" existing TIM example at your end and ensure that it is successful.
2. Once you have a working example for TIM, you can adapt it for "fast compare ADC to TIM" mapping.
Best Regards.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
i have a"GTM_TIM_Capture_1" example working, but how adapt it for "fast compare ADC to TIM" mapping?
in init_TIM() function:
void init_TIM(void)
{
IfxGtm_enable(&MODULE_GTM); /* Enable the GTM */
IfxGtm_Cmu_enableClocks(&MODULE_GTM, IFXGTM_CMU_CLKEN_CLK0); /* Enable the CMU clock 0 */
IfxGtm_Tim_In_Config configTIM;
IfxGtm_Tim_In_initConfig(&configTIM, &MODULE_GTM); /* Initialize default parameters */
configTIM.filter.inputPin = &PWM_IN; /* Select input port pin */
configTIM.filter.inputPinMode = IfxPort_InputMode_pullDown; /* Select input port pin mode */
IfxGtm_Tim_In_init(&g_driverTIM, &configTIM); /* Initialize the TIM */
}
what should I set in
"config TIM.filter.inputPin config"
and
"TIM.filter.inputPinMode"
to select the "FC BFL flag"?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
In the example, this specific sequence calls IfxGtm_PinMap_setTimTin(), which is more relevant to using a pin as an input.
You can try to use IfxGtm_Tim_Ch_setTimTin() ILLD API for your requirement.
Best Regards.