wcx1010 发表于 2025-6-18 16:09:05

关于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
请各位老师指导一下是哪里的问题,谢谢!




梁工 发表于 2025-6-18 16:28:11

操作扩展寄存器前,要设置:
ORLP_SW2, #080H

王昱顺 发表于 2025-6-18 18:06:38

需要操作以下两个寄存器


因为这两个寄存器是在xdata区域的,所以操作前需要先将P_SW2寄存器的最高位置1

wcx1010 发表于 2025-6-20 09:52:54

ORLP_SW2, #080H,这个语句是有的,
在8A8K48D4的说明书中没有刹车寄存器
目前的程序在15W4K48S4芯片上运行是正常的,说明书中关于PWM异常中断部分,没有看到这两个芯片有什么区别,所以就找不到原因了

梁工 发表于 2025-6-21 11:06:54

请先别修改程序, 直接下载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。





wcx1010 发表于 4 天前

首先感谢各位老师的帮助!
经过几天的努力终于找到了原因:
PWMFDCR 以前的地址是:F7H,新的芯片更改了地址,变成了:0FF06H,这在C语言中可能没有问题,但是在汇编语言中并不会报错,只是语句无效。
页: [1]
查看完整版本: 关于8A8K48D4-LQFP44,的 PWM 异常检测功能的问题请教