关于8A8K48D4-LQFP44,的 PWM 异常检测功能的问题请教
我从15W4K48S4芯片换成8A8K48D4-LQFP44,发现 PWM 异常检测功能无效,
无论P3.5电平高低,都无反应,也不会中断。
程序扫描IO口,电平检测正常。
主要程序如下:
SETB IT1 ;设置边沿触发方式
SETB EX1 ;启动外部中断1
SETB EADC
ORL AUXR,#00010000B ;开ADC中断
MOV IP,#04H ;设置中断优先级
MOV IPH,#44H
MOV IP2,#08H ;设置PWM异常中断高优先级
MOV PWMFDCR,#00111010B ;设置PWM异常中断
;-------------------------
CALL PCA_INIT;
CALL PWM_INIT ;PWM初始化
RET
;-------------------------
CSEG AT 00BBH ;PWM异常中断
ANL PWMFDCR,#11111110B ;清标志 ?
ANL PWMCFG,#~01H ;将 PWM 计数器关闭
CLR POW_CON.3
MOV ERRORNO,#6
RETI
请各位老师指导一下是哪里的问题,谢谢!
操作扩展寄存器前,要设置:
ORLP_SW2, #080H 需要操作以下两个寄存器
因为这两个寄存器是在xdata区域的,所以操作前需要先将P_SW2寄存器的最高位置1
ORLP_SW2, #080H,这个语句是有的,
在8A8K48D4的说明书中没有刹车寄存器
目前的程序在15W4K48S4芯片上运行是正常的,说明书中关于PWM异常中断部分,没有看到这两个芯片有什么区别,所以就找不到原因了 请先别修改程序, 直接下载PWM.hex文件测试.
P2口输出8路PWM测试程序, 每路PWM周期都是10KHz@24MHZ, 用户可以自行修改周期.
PWM0~PWM7分别从P2.0~P2.7输出, P2.0占空比不断变化, P2.1占空比20%, P2.2占空比30%, P2.3占空比40%, P2.4占空比50%, P2.5占空比60%, P2.6占空比70%, P2.7占空比80%.
当P3.5出现下降沿,则PWM检测到异常,PWM输出变成高阻。P3.6下降沿解除异常,继续输出PWM。
异常检测与解除异常状态方式:
1、允许异常检测,不开中断,查询异常标志,如果标志出现,则处理异常,之后重开PWM。
2、允许异常检测,开中断,进入异常中断函数后,关闭中断,清除标志,处理异常,之后重开PWM。
首先感谢各位老师的帮助!
经过几天的努力终于找到了原因:
PWMFDCR 以前的地址是:F7H,新的芯片更改了地址,变成了:0FF06H,这在C语言中可能没有问题,但是在汇编语言中并不会报错,只是语句无效。
页:
[1]