frdmmcxe31b_emios_input_capture kEMIOS_PEC_Continuous

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

frdmmcxe31b_emios_input_capture kEMIOS_PEC_Continuous

1,197 次查看
hyf_grass
Contributor I

I am working with the FRDM-MCXE31B development board, and I want to modify the frdmmcxe31b_emios_input_capture example program to enable the continuous counting mode for eMIOS. I have made the modifications as follows,
EMIOS_GetDefaultConfig(&emiosConfig);

emiosConfig.prescale = EXAMPLE_EMIOS_CLK_FREQ / EXAMPLE_COUNTERBUS_FREQ - 1U;
emiosConfig.useGlobalTimeBase = true;
EMIOS_Init(EXAMPLE_EMIOS, &emiosConfig);

ucMCConfig.period = 0xFFFFU;
ucMCConfig.prescale = 0U;
ucMCConfig.ucMode = kEMIOS_MC_UpCount;
ucMCConfig.clockSource = kEMIOS_ClkSrcInternal;
ucMCConfig.prescalerSource = kEMIOS_Prescaler_PrescaledClock;
ucMCConfig.counterResetTiming = kEMIOS_ResetMatchEnd;
ucMCConfig.reloadOutputDelay = 0U;
ucMCConfig.enableFreeze = false;
EMIOS_ConfigModulusCounter(EXAMPLE_EMIOS, &ucMCConfig, EXAMPLE_COUNTERBUS_CHANNEL);

ucICConfig.ucMode = kEMIOS_PEC_Continuous;//kEMIOS_IPWM;
ucICConfig.counterBus = kEMIOS_CounterBus_A;
ucICConfig.edgePolarity = kEMIOS_IC_RisingEdge;
ucICConfig.filterClock = kEMIOS_Filter_PrescaledClock;
ucICConfig.filterWidth = kEMIOS_Filter_16_Cycle;
ucICConfig.enableFreeze = false;
ucICConfig.startTime = 0x90;
ucICConfig.endTime = 0x800;
EMIOS_ConfigInputCapture(EXAMPLE_EMIOS, &ucICConfig, EXAMPLE_IC_CHANNEL);

// EMIOS_EnableUCInterrupt(EXAMPLE_EMIOS, EXAMPLE_IC_CHANNEL);
// (void)EnableIRQ(EXAMPLE_EMIOS_IRQn);

EMIOS_EnableUCPrescaler(EXAMPLE_EMIOS, EXAMPLE_COUNTERBUS_CHANNEL);
EMIOS_EnableUCPrescaler(EXAMPLE_EMIOS, EXAMPLE_IC_CHANNEL);
EMIOS_EnableGlobalPrescaler(EXAMPLE_EMIOS);
but I checked the relevant registers and found no changes at all. Could you please tell me how to configure it correctly, and which register I should read to get the counter value?

标签 (1)
0 项奖励
回复
1 回复

1,172 次查看
Alice_Yang
NXP TechSupport
NXP TechSupport

Hello @hyf_grass 

 

Based on your code, please try the following modifications:

  1. Delete the following two lines, or set both of them to 0:
    ucICConfig.startTime = 0x90;
    ucICConfig.endTime = 0x800;

  2. Make sure the CounterBus is enabled:
    ucMCConfig.ucMode = kEMIOS_MC_UpCount; // Up counter mode
    ucMCConfig.period = 0xFFFF; // Maximum counter value
    ucMCConfig.prescale = 0; // No prescaling, increases counting speed

  3. The pulse count value is read from register A, and you can use the SDK API:
    EMIOS_GetAn(EMIOS_Type *base, uint8_t channel)

 
 
 
BR
Alice 
 
 

 

0 项奖励
回复
%3CLINGO-SUB%20id%3D%22lingo-sub-2344040%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3Efrdmmcxe31b_emios_input_capture%20kEMIOS_PEC_Continuous%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2344040%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E6%88%91%E6%AD%A3%E5%9C%A8%E4%BD%BF%E7%94%A8%20FRDM-MCXE31B%20%E5%BC%80%E5%8F%91%E6%9D%BF%EF%BC%8C%E6%88%91%E6%83%B3%E4%BF%AE%E6%94%B9%20frdmcxe31b_emios_input_capture%20%E7%A4%BA%E4%BE%8B%E7%A8%8B%E5%BA%8F%EF%BC%8C%E4%BB%A5%E5%90%AF%E7%94%A8%20emIO%20%E7%9A%84%E8%BF%9E%E7%BB%AD%E8%AE%A1%E6%95%B0%E6%A8%A1%E5%BC%8F%E3%80%82%E6%88%91%E5%81%9A%E4%BA%86%E5%A6%82%E4%B8%8B%E4%BF%AE%E6%94%B9%EF%BC%8C%3CBR%20%2F%3EEMIOS_GetDefaultConfig(%26amp%3BemiosConfig)%EF%BC%9B%3C%2FP%3E%3CP%3EemiosConfig.prescale%20%3D%20EXAMPLE_EMIOS_CLK_FREQ%20%2F%20EXAMPLE_COUNTERBUS_FREQ%20-%201U%3B%3CBR%20%2F%3EemiosConfig.useGlobalTimeBase%3D%20true%3B%3CBR%20%2F%3EEMIOS_Init(EXAMPLE_EMIOS%2C%26amp%3BemiosConfig)%EF%BC%9B%3C%2FP%3E%3CP%3EucMCConfig.period%20%3D%200xFFFFU%EF%BC%9B%3CBR%20%2F%3EucMCConfig.prescale%20%3D%200U%EF%BC%9B%3CBR%20%2F%3EucMCConfig.ucMode%20%3D%20kEMIOS_MC_UpCount%EF%BC%9B%3CBR%20%2F%3EucMCConfig.clockSource%20%3D%20kEMIOS_ClkSrcInternal%EF%BC%9B%3CBR%20%2F%3EucMCConfig.prescalerSource%3D%20kEMIOS_Prescaler_PrescaledClock%3B%3CBR%20%2F%3EucMCConfig.counterResetTiming%3D%20kEMIOS_ResetMatchEnd%3B%3CBR%20%2F%3EucMCConfig.reloadOutputDelay%3D%200U%3B%3CBR%20%2F%3EucMCConfig.enableFreeze%3D%20false%3B%3CBR%20%2F%3EEMIOS_ConfigModulusCounter(EXAMPLE_EMIOS%EF%BC%8C%26amp%3BucMCConfig%EF%BC%8CEXAMPLE_COUNTERBUS_CHANNEL)%EF%BC%9B%3C%2FP%3E%3CP%3EucICConfig.ucMode%20%3D%20kEMIOS_PEC_Continuous%3B%2F%2FkEMIOS_IPWM%3B%3CBR%20%2F%3EucICConfig.counterBus%20%3D%20kEMIOS_CounterBus_A%3B%3CBR%20%2F%3EucICConfig.edgePolarity%3D%20kEMIOS_IC_RisingEdge%EF%BC%9B%3CBR%20%2F%3EucICConfig.filterClock%20%3D%20kEMIOS_Filter_PrescaledClock%EF%BC%9B%3CBR%20%2F%3EucICConfig.filterWidth%20%3D%20kEMIOS_Filter_16_Cycle%EF%BC%9B%3CBR%20%2F%3EucICConfig.enableFreeze%3D%20false%3B%3CBR%20%2F%3EucICConfig.startTime%20%3D%200x90%3B%3CBR%20%2F%3EucICConfig.endTime%20%3D%200x800%3B%3CBR%20%2F%3EEMIOS_ConfigInputCapture(EXAMPLE_EMIOS%2C%26amp%3BucICConfig%2C%20EXAMPLE_IC_CHANNEL)%EF%BC%9B%3C%2FP%3E%3CP%3E%2F%2F%20EMIOS_EnableUCInterrupt(EXAMPLE_EMIOS%2C%20EXAMPLE_IC_CHANNEL)%3B%3CBR%20%2F%3E%2F%2F%20(void)EnableIRQ(EXAMPLE_EMIOS_IRQn)%EF%BC%9B%3C%2FP%3E%3CP%3EEMIOS_EnableUCPrescaler(EXAMPLE_EMIOS%2C%20EXAMPLE_COUNTERBUS_CHANNEL)%3B%3CBR%20%2F%3EEMIOS_EnableUCPrescaler(EXAMPLE_EMIOS%2C%20EXAMPLE_IC_CHANNEL)%3B%3CBR%20%2F%3EEMIOS_EnableGlobalPrescaler(EXAMPLE_EMIOS)%3B%3CBR%20%2F%3E%E4%BD%86%E6%88%91%E6%A3%80%E6%9F%A5%E4%BA%86%E7%9B%B8%E5%85%B3%E5%AF%84%E5%AD%98%E5%99%A8%EF%BC%8C%E5%8F%91%E7%8E%B0%E6%A0%B9%E6%9C%AC%E6%B2%A1%E6%9C%89%E5%8F%98%E5%8C%96%E3%80%82%E4%BD%A0%E8%83%BD%E5%90%A6%E5%91%8A%E8%AF%89%E6%88%91%E5%A6%82%E4%BD%95%E6%AD%A3%E7%A1%AE%E9%85%8D%E7%BD%AE%E5%AE%83%EF%BC%8C%E4%BB%A5%E5%8F%8A%E6%88%91%E5%BA%94%E8%AF%A5%E8%AF%BB%E5%8F%96%E5%93%AA%E4%B8%AA%E5%AF%84%E5%AD%98%E5%99%A8%E6%89%8D%E8%83%BD%E8%8E%B7%E5%BE%97%E8%AE%A1%E6%95%B0%E5%99%A8%E5%80%BC%EF%BC%9F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2344040%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3EMCXC%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2344529%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20frdmmcxe31b_emios_input_capture%20kEMIOS_PEC_Continuous%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2344529%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F231665%22%20target%3D%22_blank%22%3E%40hyf_grass%3C%2FA%3E%3C%2FP%3E%0A%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CDIV%3E%0A%3CDIV%3E%0A%3CP%3E%E6%A0%B9%E6%8D%AE%E6%82%A8%E7%9A%84%E4%BB%A3%E7%A0%81%EF%BC%8C%E8%AF%B7%E5%B0%9D%E8%AF%95%E8%BF%9B%E8%A1%8C%E4%BB%A5%E4%B8%8B%E4%BF%AE%E6%94%B9%EF%BC%9A%3C%2FP%3E%0A%3COL%3E%0A%3CLI%3E%0A%3CP%3E%E5%88%A0%E9%99%A4%E4%BB%A5%E4%B8%8B%E4%B8%A4%E8%A1%8C%EF%BC%8C%E6%88%96%E5%B0%86%E5%85%B6%E9%83%BD%E8%AE%BE%E7%BD%AE%E4%B8%BA%200%EF%BC%9A%3CBR%20%2F%3EucICConfig.startTime%20%3D%200x90%EF%BC%9B%3CBR%20%2F%3EucICConfig.endTime%20%3D%200x800%EF%BC%9B%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%3E%0A%3CP%3E%E7%A1%AE%E4%BF%9D%E5%90%AF%E7%94%A8%E8%AE%A1%E6%95%B0%E5%99%A8%E6%80%BB%E7%BA%BF%EF%BC%9A%3CBR%20%2F%3EucmcConfig.ucMode%20%3D%20kemios_mc_upCount%3B%2F%2F%E5%90%91%E4%B8%8A%E8%AE%A1%E6%95%B0%E5%99%A8%E6%A8%A1%E5%BC%8F%20ucmcConfig.Period%20%3D%200xFFF%3B%2F%2F%E6%9C%80%E5%A4%A7%E8%AE%A1%E6%95%B0%E5%99%A8%E5%80%BC%20%3CBR%20%2F%3E%20ucmcConfig.prescale%20%3D%200%3B%2F%2F%E4%B8%8D%E9%A2%84%E7%BC%A9%E6%94%BE%EF%BC%8C%E6%8F%90%E9%AB%98%E8%AE%A1%E6%95%B0%E9%80%9F%E5%BA%A6%20%3CBR%20%2F%3E%3C%2FP%3E%0A%3C%2FLI%3E%0A%3CLI%3E%0A%3CP%3E%E8%84%89%E5%86%B2%E8%AE%A1%E6%95%B0%E5%80%BC%E6%98%AF%E4%BB%8E%E5%AF%84%E5%AD%98%E5%99%A8%20A%20%E8%AF%BB%E5%8F%96%E7%9A%84%EF%BC%8C%E4%BD%A0%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20SDK%20API%EF%BC%9A%3CBR%20%2F%3Eemios_Getan%EF%BC%88emios_Type%20*base%EF%BC%8Cuint8_t%20%E9%80%9A%E9%81%93%EF%BC%89%3C%2FP%3E%0A%3C%2FLI%3E%0A%3C%2FOL%3E%0A%3C%2FDIV%3E%0A%3C%2FDIV%3E%0A%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CDIV%3EBR%3C%2FDIV%3E%0A%3CDIV%3E%E7%88%B1%E4%B8%BD%E4%B8%9D%20%3C%2FDIV%3E%0A%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E