zxcv1973
发表于 2024-1-7 21:00:52
神农鼎 发表于 2024-1-7 17:52
芯片没改版,能否提供一个简单的程序,证明有这个问题 ?
===然后我们验证后,再修改? ...
过去1年多了,要找找以前的测试记录
zxcv1973
发表于 2024-1-7 21:05:22
梁工 发表于 2024-1-7 18:13
我认为是程序的问题。
PCA或PWM是一个数字外设,在时钟的驱动下按部就班的工作,不会乱的。数字外设都有 ...
当时只编了几十行汇编测试程序就测试出来了,用汇编测试,程序完全可控
神农鼎
发表于 2024-1-7 21:17:00
如不能及时提供测试出问题的程序来证明,请自行删除负面评论,望理解,否则新人会被误导,请删除
zxcv1973
发表于 2024-1-8 11:16:58
;测试程序1
mov wr0,#word2 PWMB_ARRH
mov wr2,#word0 PWMB_ARRH
mov a,#0ffh
mov @dr0,r11
mov @dr0+1,r11
mov wr2,#word0 PWMB_PSCRH
mov a,#byte1 0 ;319
mov @dr0,r11
mov a,#byte0 0 ;319
mov @dr0+1,r11
mov wr2,#word0 PWMB_CCR1H
mov a,#byte1 10000
mov @dr0,r11
mov a,#byte0 10000
mov @dr0+1,r11
mov wr2,#word0 PWMB_CCR2H
mov a,#byte1 15000
mov @dr0,r11
mov a,#byte0 15000
mov @dr0+1,r11
mov wr2,#word0 pwmb_cr1
mov a,#01h
mov @dr0,r11
mov wr2,#word0 PWMB_CCMR1
mov a,#00h
mov @dr0,r11
mov wr2,#word0 PWMB_CCMR2
mov a,#00h
mov @dr0,r11
mov wr2,#word0 pwmb_ccer1
mov a,#11h
mov @dr0,r11
mov wr2,#word0 PWMB_bkr
mov a,#80h
mov @dr0,r11
mov wr2,#word0 pwmb_eno
mov a,#05h
mov @dr0,r11
mov r10,#100 ;延时300个时钟
djnz b,$
mov a,#30h ;PWM输出设置为翻转模式
mov wr2,#word0 PWMB_CCMR1
mov @dr0,r11
mov wr2,#word0 PWMB_CCMR2
mov @dr0,r11 ;设置完成后PWM输出为低电平
n1: mov r10,#100 ;延时300个时钟
djnz b,$
mov wr2,#word0 PWMB_CNTRH ;以下程序保证不会再产生比较匹配
mov r10,@dr0
mov r11,@dr0+1
add wr10,#1000
mov wr2,#word0 PWMB_CCR1H
mov @dr0,r10
mov @dr0+1,r11
mov wr2,#word0 PWMB_CCR2H
mov @dr0,r10
mov @dr0+1,r11
sjmp n1
zxcv1973
发表于 2024-1-8 11:18:56
;测试程序2
mov wr0,#word2 PWMB_ARRH
mov wr2,#word0 PWMB_ARRH
mov a,#0ffh
mov @dr0,r11
mov @dr0+1,r11
mov wr2,#word0 PWMB_PSCRH
mov a,#byte1 0 ;319
mov @dr0,r11
mov a,#byte0 0 ;319
mov @dr0+1,r11
mov wr2,#word0 PWMB_CCR1H
mov a,#byte1 10000
mov @dr0,r11
mov a,#byte0 10000
mov @dr0+1,r11
mov wr2,#word0 PWMB_CCR2H
mov a,#byte1 15000
mov @dr0,r11
mov a,#byte0 15000
mov @dr0+1,r11
mov wr2,#word0 pwmb_cr1
mov a,#01h
mov @dr0,r11
mov wr2,#word0 PWMB_CCMR1
mov a,#00h
mov @dr0,r11
mov wr2,#word0 PWMB_CCMR2
mov a,#00h
mov @dr0,r11
mov wr2,#word0 pwmb_ccer1
mov a,#11h
mov @dr0,r11
mov wr2,#word0 PWMB_bkr
mov a,#80h
mov @dr0,r11
mov wr2,#word0 pwmb_eno
mov a,#05h
mov @dr0,r11
mov wr2,#word0 PWMB_CNTRH ;在PWM输出冻结模式下产生一次比较匹配
mov r10,@dr0
mov r11,@dr0+1
add wr10,#25
mov wr2,#word0 PWMB_CCR1H
mov @dr0,r10
mov @dr0+1,r11
mov wr2,#word0 PWMB_CCR2H
mov @dr0,r10
mov @dr0+1,r11
mov r10,#100 ;延时300个时钟
djnz b,$
mov a,#30h ;PWM输出设置为翻转模式
mov wr2,#word0 PWMB_CCMR1
mov @dr0,r11
mov wr2,#word0 PWMB_CCMR2
mov @dr0,r11 ;错误!设置完成后PWM输出为高电平
n1: mov r10,#100 ;延时300个时钟
djnz b,$
mov wr2,#word0 PWMB_CNTRH ;以下程序保证不会再产生比较匹配
mov r10,@dr0
mov r11,@dr0+1
add wr10,#1000
mov wr2,#word0 PWMB_CCR1H
mov @dr0,r10
mov @dr0+1,r11
mov wr2,#word0 PWMB_CCR2H
mov @dr0,r10
mov @dr0+1,r11
sjmp n1
zxcv1973
发表于 2024-1-8 11:27:19
两个测试程序都是设置为翻转模式后从没产生比较匹配,然而设置为翻转模式后PWM输出电平却不一样。后果就是比如在PWM输出翻转为低电平后切换为冻结模式禁止翻转,等下次再设置为翻转模式时,PWM输出可能继续保持低电平,也可能变为高电平,而此时并没有产生比较匹配,如果电平发生变化就会多发出1个脉冲
梁工
发表于 2024-1-8 15:46:41
zxcv1973 发表于 2024-1-8 11:27
两个测试程序都是设置为翻转模式后从没产生比较匹配,然而设置为翻转模式后PWM输出电平却不一样。后果就是 ...
原来你是这种切换不翻转、翻转的情况,我以为是连续输出脉冲。
连续翻转输出是不会有问题的,但是你切换不翻转、翻转时,要注意同步的问题。
你禁止翻转了,但是PWM模块继续运行,再允许翻转时,就要注意这个情况。
zxcv1973
发表于 2024-1-9 16:23:57
梁工 发表于 2024-1-8 15:46
原来你是这种切换不翻转、翻转的情况,我以为是连续输出脉冲。
连续翻转输出是不会有问题的,但是你切换 ...
输出脉冲控制步进电机难道不停止吗,停止后再输出脉冲时是不是会有多产生一个脉冲的可能
zxcv1973
发表于 2024-1-9 16:28:46
上面说的很清楚,停止输出脉冲要靠切换为冻结模式,而再切换为翻转功能输出脉冲时PWM输出电平可能会立即发生变化,而此时并没有达到翻转的匹配条件,这就有可能会多输出1个脉冲
天源电子
发表于 2024-2-4 13:09:23
zxcv1973 发表于 2024-1-9 16:28
上面说的很清楚,停止输出脉冲要靠切换为冻结模式,而再切换为翻转功能输出脉冲时PWM输出电平可能会立即发 ...
后面解决问题没