C 高速PWM模块存在的问题
我想使用dsPIC33EP32MC204微控制器进行电机控制应用。然而,我无法使高速PWM工作(PWM2H引脚上没有PWM脉冲),即使我遵循用户手册和家庭参考手册。这是我的密码:C 高速PWM模块存在的问题,c,embedded,pic,microchip,pwm,C,Embedded,Pic,Microchip,Pwm,我想使用dsPIC33EP32MC204微控制器进行电机控制应用。然而,我无法使高速PWM工作(PWM2H引脚上没有PWM脉冲),即使我遵循用户手册和家庭参考手册。这是我的密码: void Init_PWM(void) { PTCONbits.PTEN = 0; //PWM module is disabled PTCONbits.PTSIDL = 0; // PWMx time base runs in CPU Idle mode PWMCON2bits.FLTI
void Init_PWM(void)
{
PTCONbits.PTEN = 0; //PWM module is disabled
PTCONbits.PTSIDL = 0; // PWMx time base runs in CPU Idle mode
PWMCON2bits.FLTIEN = 0; // Fault interrupt is disabled and the FLTSTAT bit is cleared
PWMCON2bits.ITB = 0; // PTPER register provides timing for this PWM generator
PWMCON2bits.MDCS = 0; // PDCx register provides duty cycle information for this PWM generator
PWMCON2bits.MTBS = 0; // PWM generator uses the primary master time base for synchronization and as the clock source
PWMCON2bits.IUE = 0; // Updates to the active PDCx registers are synchronized to the PWMx period boundary
PTCON2bits.PCLKDIV = 0b000; // PWM Input Clock Prescaler
PWMCON2bits.CAM = 0; // Edge Aligned PWM
PWMCON2bits.DTC = 0b10; // Dead time function is disabled
IOCON2bits.PENH = 1; // PWMx module controls PWMxH pin
IOCON2bits.POLH = 0; // PWMxH pin is active-high
IOCON2bits.OVRENH = 0; // PWMx generator controls PWMxH pin
IOCON2bits.PMOD = 0b01; // PWM I/O pin pair is in Redundant Output mode
PHASE2 = 0; // No Phase Shift
PTPER = 0x4E20; // Period register
PTCONbits.PTEN = 1; //PWM module is enabled
}
main()函数中的相关代码:
TRISBbits.TRISB12 = 0;
Init_PWM();
PDC2 = 0x2710; //Duty Cycle
如果有人能告诉我为什么在完成附加配置后我看不到任何PWM脉冲,我将不胜感激。我做错了什么?谢谢大家! 罗伯特·哈维暂时搁置了这个问题,但给出的理由并不充分。帖子中出现的内容符合指导原则。该问题需要格式方面的帮助,以便代码正确显示。dsPIC33EP32MC204中的PWM功能块难以设置。如果可以的话,我会发布一条带有工作代码链接的评论。请在我的Github上找到回答Barney问题的代码。如果这个问题的搁置被释放,我将发布一个答案。谢谢@Dan1138。您的代码运行正常。此问题包含足够的信息,可以提供完整的答案。在被要求的几分钟内,它就被搁置了。为改进问题而进行的编辑未导致解除保留。根据罗伯特·哈维对另一个问题的回答,他似乎对dsPIC33EP32MC204设备几乎没有相关经验。简单的回答是,一些PWM特殊功能寄存器需要一种特定于设备的方法来解锁写入。请参阅uu内置u write _PWMSFR()函数的编译器文档。