在线时间1 小时
UID386845
注册时间2018-4-17
NXP金币0
该用户从未签到
新手上路

- 积分
- 9
- 最后登录
- 2018-4-20
|
我考虑1050 的子模块0,pwm_a作为输出驱动电机,pwm_b作为捕获输入,捕获10个波形之后,产生中断,在中断里关闭pwm_a,
请问这个方式可以么?
我尝试了,代码如下
iFd = open("/dev/pwm0", O_RDWR, 0666);
if (iFd < 0) {
printk("ifd error\n");
}
pwmUserConfig.PWM_SubModule = kPWM_Module_0; /* 子模块0 */
pwmUserConfig.PWM_ucSinalNum = 1; /* 信号个数最多两个 */
pwmUserConfig.PWM_Sinal[0].deadtimeValue = 650; /* 死区时间 */
pwmUserConfig.PWM_Sinal[0].dutyCyclePercent = 30; /* PWMA 占空比 */
pwmUserConfig.PWM_Sinal[0].level = kPWM_HighTrue; /* 高电平为活跃电平 */
pwmUserConfig.PWM_Sinal[0].pwmChannel = kPWM_PwmA;
pwmUserConfig.PWM_Sinal[1].deadtimeValue = 650; /* 子模块0 */
pwmUserConfig.PWM_Sinal[1].dutyCyclePercent = 70; /* PWMB 占空比 */
pwmUserConfig.PWM_Sinal[1].level = kPWM_HighTrue; /* 高电平为活跃电平 */
pwmUserConfig.PWM_Sinal[1].pwmChannel = kPWM_PwmB;
pwmUserConfig.PWM_Mode = kPWM_CenterAligned; /* 俩波形中心对齐 */
pwmUserConfig.PWM_uiFrequency = 1000; /* 频率为1000Hz */
/*
* 独立模式
* 当设置为互补模式时,只需配置PWMA或PWMB其中的一个
*/
pwmUserConfig.PWM_PairOperation = kPWM_Independent;
iRet = ioctl(iFd, PWM_MODE_SET, (LONG)&pwmUserConfig);
if (iRet != ERROR_NONE) {
printk("ioctl error");
}
//输入cap_B
cap.captureInputSel = TRUE;
cap.edgeCompareValue = 100;
cap.edge0 = kPWM_FallingEdge;
cap.edge1 = kPWM_Disable;
cap.enableOneShotCapture = FALSE;
//cap.fifoWatermark = 10;
CapParaCfg.subModule = kPWM_Module_0;
CapParaCfg.pwmChannel = kPWM_PwmB;
CapParaCfg.inputCaptureParams = ∩
iRet = ioctl(iFd, PWM_INCAPT_SET, (LONG)&CapParaCfg);
。。。
我将pwm_a 和 pwm_b 跳线连接,启动之后立马就产生中断,并没有看到10个波形,求大神指导?在线等,着急?
|
|