This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

No frequency at EHRPWM2A

Genius 5820 points

 Hi,

based on the ehrpwm_haptics-example I created some code that emits a frequency at EHRPWM2B output with variable pulse width which works well:

   EHRPWMTimebaseClkConfig(SOC_EPWM_2_REGS,SOC_EHRPWM_2_MODULE_FREQ/CLOCK_DIV_VAL,SOC_EHRPWM_2_MODULE_FREQ);
   EHRPWMPWMOpFreqSet(SOC_EPWM_2_REGS,SOC_EHRPWM_2_MODULE_FREQ/CLOCK_DIV_VAL,
                      (unsigned int)(SOC_EHRPWM_2_MODULE_FREQ/CLOCK_DIV_VAL)/100, // divisor specifies frequency
                      (unsigned int)EHRPWM_COUNT_UP,(bool)EHRPWM_SHADOW_WRITE_DISABLE);
   EHRPWMTimebaseSyncDisable(SOC_EPWM_2_REGS);
   EHRPWMSyncOutModeSet(SOC_EPWM_2_REGS, EHRPWM_SYNCOUT_DISABLE);
   EHRPWMTBEmulationModeSet(SOC_EPWM_2_REGS, EHRPWM_STOP_AFTER_NEXT_TB_INCREMENT);
   EHRPWMLoadCMPB(SOC_EPWM_2_REGS,
                  80,
                  (bool)EHRPWM_SHADOW_WRITE_DISABLE,(unsigned int)EHRPWM_COMPA_NO_LOAD,(bool)EHRPWM_CMPCTL_OVERWR_SH_FL);
   EHRPWMConfigureAQActionOnB(SOC_EPWM_2_REGS,
   		                      EHRPWM_AQCTLB_ZRO_EPWMXBHIGH,
                              EHRPWM_AQCTLB_PRD_DONOTHING,
                              EHRPWM_AQCTLB_CAU_DONOTHING,
                              EHRPWM_AQCTLB_CAD_DONOTHING,
                              EHRPWM_AQCTLB_CBU_EPWMXBLOW,
                              EHRPWM_AQCTLB_CBD_DONOTHING,
                              EHRPWM_AQSFRC_ACTSFB_DONOTHING);
   EHRPWMDBOutput(SOC_EPWM_2_REGS, EHRPWM_DBCTL_OUT_MODE_BYPASS);
   EHRPWMChopperDisable(SOC_EPWM_2_REGS);
   EHRPWMTZTripEventDisable(SOC_EPWM_2_REGS,(bool)EHRPWM_TZ_ONESHOT);
   EHRPWMTZTripEventDisable(SOC_EPWM_2_REGS,(bool)EHRPWM_TZ_CYCLEBYCYCLE);
   EHRPWMHRDisable(SOC_EPWM_2_REGS);

In next step I want to emit a frequency with same frequency base but with different output frequency/pwm at EHRPWM2A. The code is very similar but I do not get a signal on related output of BeagleBone Black:

   EHRPWMTimebaseClkConfig(SOC_EPWM_2_REGS,SOC_EHRPWM_2_MODULE_FREQ/CLOCK_DIV_VAL,SOC_EHRPWM_2_MODULE_FREQ);
   EHRPWMPWMOpFreqSet(SOC_EPWM_2_REGS,SOC_EHRPWM_2_MODULE_FREQ/CLOCK_DIV_VAL,
					  (unsigned int)(SOC_EHRPWM_2_MODULE_FREQ/CLOCK_DIV_VAL)/100, // divisor specifies frequency
					  (unsigned int)EHRPWM_COUNT_UP,(bool)EHRPWM_SHADOW_WRITE_DISABLE);
   EHRPWMTimebaseSyncDisable(SOC_EPWM_2_REGS);
   EHRPWMSyncOutModeSet(SOC_EPWM_2_REGS, EHRPWM_SYNCOUT_DISABLE);
   EHRPWMTBEmulationModeSet(SOC_EPWM_2_REGS, EHRPWM_STOP_AFTER_NEXT_TB_INCREMENT);
   EHRPWMLoadCMPA(SOC_EPWM_2_REGS,
				  80,
				  (bool)EHRPWM_SHADOW_WRITE_DISABLE,(unsigned int)EHRPWM_COMPA_NO_LOAD,(bool)EHRPWM_CMPCTL_OVERWR_SH_FL);
   EHRPWMConfigureAQActionOnA(SOC_EPWM_2_REGS,
							  EHRPWM_AQCTLA_ZRO_EPWMXAHIGH,
							  EHRPWM_AQCTLA_PRD_DONOTHING,
							  EHRPWM_AQCTLA_CAU_EPWMXALOW,
							  EHRPWM_AQCTLA_CAD_DONOTHING,
							  EHRPWM_AQCTLA_CBU_DONOTHING,
							  EHRPWM_AQCTLA_CBD_DONOTHING,
							  EHRPWM_AQSFRC_ACTSFA_DONOTHING);
   EHRPWMDBOutput(SOC_EPWM_2_REGS, EHRPWM_DBCTL_OUT_MODE_BYPASS);
   EHRPWMChopperDisable(SOC_EPWM_2_REGS);
   EHRPWMTZTripEventDisable(SOC_EPWM_2_REGS,(bool)EHRPWM_TZ_ONESHOT);
   EHRPWMTZTripEventDisable(SOC_EPWM_2_REGS,(bool)EHRPWM_TZ_CYCLEBYCYCLE);
   EHRPWMHRDisable(SOC_EPWM_2_REGS);

Any idea what could be wrong in my second code?

Thanks!