查看: 5865|回复: 7

[其他] 求教DZ60的端口中断问题

[复制链接]

该用户从未签到

1

主题

8

帖子

0

新手上路

Rank: 1

积分
48
最后登录
2020-5-26
发表于 2009-12-28 10:09:58 | 显示全部楼层 |阅读模式
在MC9s08DZ60有3个中断口,即A、B、D三个口,我使用了A的PTA0~PTA5,D口的PTD0~PTD1中断功能,即PIx,不过有一个奇怪的现象,这些中断功能只是偶尔出现,譬如一段带有中断功能程序代码下载到目标板中,程序执行情况正常,如果复位板子或者给板子断电后重启,那么中断就不再出现,若再次复位后,可能出现A口中断,D口就不会中断,也可能出现D口中断而A口则不再中断,而且随机性很强,中断频率在100Hz左右。在这里想请教一下做过DZ60的朋友们,实现PIx功能,对目标板(PCB)的电路有没有什么严格的要求?对程序的设计上有没有什么特殊的要求,诚请朋友们能给一些建议,十分感谢!
我知道答案 目前已有7人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2009-12-28 12:36:05 | 显示全部楼层

    RE:求教DZ60的端口中断问题

    电路没有什么特别的要求,我认为你在中断配置有些问题。要按照手册说明来配置中断参数和中断向量。
    该会员没有填写今日想说内容.

    该用户从未签到

    1

    主题

    8

    帖子

    0

    新手上路

    Rank: 1

    积分
    48
    最后登录
    2020-5-26
     楼主| 发表于 2009-12-28 14:29:08 | 显示全部楼层

    回复:求教DZ60的端口中断问题

    谢谢 安 的回复,下面是有关端口的初始化代码,在这里的疑问是,如果是配置问题,那为什么有时候中断是正常的,而复位或掉电重启后就不正常了呢?
    使我很疑惑。谢谢
     void  PORA_init(void)
     {
     PTAD  =  0x80;   //clear the data of port A
     PTADD =  0x80;   //set port as input port
     
     PTASC =  0x06; //0000 0110  //PTAACK=1,PTAIE=1清除A端口中断标记
     PTAES =  0x3F; //0011 1111 //首先检测中断生成的下降边沿
     
     PTAPE =  0x3F; //0011 1111 //涉及输入位内部上/下拉使能
     PTAPS =  0x3F; //0011 1111 //涉及输入位中断使能
     }
     void PORD_init(void){
     
     
     PTDD  =  0;   //clear the data of port D
     PTDDD =  0x0C;   //set port as input port
     
     PTDSC =  0x06;   //PTDACK=1,PTDIE=1清除A端口中断标记
     PTDES =  0x03;   //首先检测中断生成的下降边沿
     
     PTDPE =  0x23;   //涉及输入位内部上/下拉使能
     PTDPS =  0x03;   //涉及输入位中断使能
      }
    interrupt 22 void xxx_ISR(void){
    ...
    PTASC_PTAACK = 1;
    ...
    }
     

    该用户从未签到

    1

    主题

    8

    帖子

    0

    新手上路

    Rank: 1

    积分
    48
    最后登录
    2020-5-26
     楼主| 发表于 2009-12-28 14:39:12 | 显示全部楼层

    RE:求教DZ60的端口中断问题

    忘了说明
    MCU的电源电压为5V,输入信号的低电平为0.9~1V,高电平为4.2~4.4V。

    该用户从未签到

    9

    主题

    41

    帖子

    0

    注册会员

    Rank: 2

    积分
    83
    最后登录
    1970-1-1
    发表于 2009-12-29 08:49:23 | 显示全部楼层

    RE:求教DZ60的端口中断问题

    PTAD  =  0x80;   //clear the data of port A
    这些类似的语句不用加,这个在复位以后全部都会清除的。

    该用户从未签到

    1

    主题

    8

    帖子

    0

    新手上路

    Rank: 1

    积分
    48
    最后登录
    2020-5-26
     楼主| 发表于 2009-12-29 11:14:36 | 显示全部楼层

    回复:求教DZ60的端口中断问题

    回复第 5 楼 majianhui于2009-12-29 00:49:23发表:
    PTAD = 0x80; //clear the data of port A
    这些类似的语句不用加,这个在复位以后全部都会清除的。 

    majianhui 
    呵呵 很熟悉 登陆过你的博客
    对这条语句本身来说,不写的话,对PTA0~PTA6来说是没有什么影响,
    可我认为对PTA7位来说还是有必要的,对PTDD  =  0; 来说同意你的观点,这句显得有些多余了。
    你现在是不是也在做freescale的芯片,对它的中断有没有能否提一些建议?
    谢谢

    该用户从未签到

    0

    主题

    2

    帖子

    0

    新手上路

    Rank: 1

    积分
    12
    最后登录
    2017-8-25
    发表于 2017-6-16 10:55:17 | 显示全部楼层
    楼主   你是否按照
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    2

    帖子

    0

    新手上路

    Rank: 1

    积分
    12
    最后登录
    2017-8-25
    发表于 2017-6-16 10:55:44 | 显示全部楼层
    1. 清除 PTxSC 里的 PTxACK,屏蔽中断;
    2. 在 PTxES 中设置适当的 PTxESn 位,选择管脚极性;
    3. 如果使用内部上拉 / 下拉器件,在 PTxPE 中配置相关的使能位;
    4. 在 PTxPS 中设置适当的 PTxPSn 位,使能中断管脚;
    5. 在 PTxSC 中写入 PTxACK,清除所有错误中断;
    6. 在 PTxSC 中置位 PTxIE,使能中断
    这个官方要求初始化了呢
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-19 23:30 , Processed in 0.103175 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表