查看: 3497|回复: 5

[S12] HCS12开了两个定时器中断,一个定时器中断无法进入,求助

[复制链接]

该用户从未签到

1

主题

4

帖子

0

新手上路

Rank: 1

积分
23
最后登录
2016-11-1
发表于 2016-6-15 15:10:24 | 显示全部楼层 |阅读模式
本帖最后由 犬夜小叉 于 2016-6-16 08:09 编辑

写了一个定时器中断程序,pit0定时时间为20ms,pit1定时时间为40ms,两个定时器的中断优先级都相同,程序运行后能进入pit0 isr,led0会不断闪烁,周期为40ms,而pit1 isr不能进入,led1不闪烁,pit0和pit1单独使用时都能正常进入中断,程序如下,这是什么问题,哪位朋友能解答下,万分感谢!

#include <MC9S12XEP100.h>
#include <hidef.h>                              /* common defines and macros */
#include "derivative.h"                        /* derivative-specific definitions */

/* led initial */
void led_init()
{
    DDRA |= 0x3c;
    PORTA = 0;
}

/* pit0 isr */
#pragma CODE_SEG __NEAR_SEG NON_BANKED  
void interrupt VectorNumber_Vpit0 pit0_irq(void)
{
     PITTF_PTF0 = 1;  

     /* led0 jump */
     PORTA_PA2 = ~PORTA_PA2;
  
}

/* pit1 isr */
#pragma CODE_SEG __NEAR_SEG NON_BANKED  
void interrupt VectorNumber_Vpit1 pit1_irq(void)
{
    PITTF_PTF1 = 1;

    /* led1 */
    PORTA_PA3 = ~PORTA_PA3;
}

/* clock initial */
void clock_init()
{
    /* set oscclk as sysclk */
    CLKSEL &= 0X7F;

    /* disable pll circuit */                     
    PLLCTL &= 0X8F;

    /* pllclk = 40m, fbus = 20m*/
    SYNR |= 0x53;
    REFDV |= 0X07;
    POSTDIV = 0;

    /* enable pll circuit */
    PLLCTL |= 0X70;
    asm NOP;
    asm NOP;

    /* pllclk is locked alredy */
    while (!(CRGFLG & 0X08));

    /* set pllclk as sysclk */
    CLKSEL |= 0X80;
}

/* 20ms */
void pit0_init()
{
    /* close PIT */
    PITCFLMT_PITE = 0;

    /* enable channel0 */
    PITCE_PCE0 = 1;

    /* 16-bit timer counts with micro time base 0 */
    PITMUX_PMUX0 = 0;

    /* micro timer0 count value */
    PITMTLD0 = 100 - 1;

    /* timer0 count value */
    PITLD0 = 4000 - 1;

    /* enable interrupt */
    PITINTE_PINTE0 = 1;

    /* enable PIT */
    PITCFLMT_PITE = 1;
}

/* 40ms */
void pit1_init()
{
    /* close PIT */
    PITCFLMT_PITE = 0;

    /* enable channel1 */
    PITCE_PCE1 = 1;

    /* 16-bit timer counts with micro time base 1 */
    PITMUX_PMUX1 = 1;

    /* micro timer1 count value */
    PITMTLD1 = 100 - 1;

    /* timer1 count value */
    PITLD1 = 8000 - 1;

    /* enable interrupt */
    PITINTE_PINTE1 = 1;

    /* enable PIT */
    PITCFLMT_PITE = 1;
}

/* set pit0, pit1 interrrupt priority */
void interrupt_priority_set()
{
    /* set pit0 priority */
    INT_CFADDR = 0x70;
    INT_CFDATA5 = 0x06;

    /* set pit1 priority */
    INT_CFADDR = 0x70;
    INT_CFDATA4 = 0x06;
}

int main()
{
    DisableInterrupts;
   
    clock_init();
    led_init();
    pit0_init();
    pit1_init();
    interrupt_priority_set();
   
    EnableInterrupts;

    while (1);
}


我知道答案 目前已有5人回答
回复

使用道具 举报

  • TA的每日心情
    开心
    2016-10-25 09:15
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    13

    主题

    430

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1385
    最后登录
    2018-6-13
    发表于 2016-6-15 17:11:42 | 显示全部楼层
    先禁用pit0,看是否能够进入中断。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    4

    帖子

    0

    新手上路

    Rank: 1

    积分
    23
    最后登录
    2016-11-1
     楼主| 发表于 2016-6-17 15:11:48 | 显示全部楼层
    hellokity 发表于 2016-6-15 17:11
    先禁用pit0,看是否能够进入中断。

    pit0和pit1单独使用都能进入中断,但是一起开的时候pit1就无法进入了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

    积分
    6
    最后登录
    1970-1-1
    发表于 2016-6-20 15:13:29 | 显示全部楼层
    犬夜小叉 发表于 2016-6-17 15:11
    pit0和pit1单独使用都能进入中断,但是一起开的时候pit1就无法进入了

    你的问题解决了吗,我现在也遇到同样的问题
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    4

    帖子

    0

    新手上路

    Rank: 1

    积分
    23
    最后登录
    2016-11-1
     楼主| 发表于 2016-9-12 09:23:30 | 显示全部楼层
    还没有解决,你有解决了吗
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    4

    帖子

    0

    新手上路

    Rank: 1

    积分
    23
    最后登录
    2016-11-1
     楼主| 发表于 2016-9-12 09:24:33 | 显示全部楼层
    heqinhan 发表于 2016-6-20 15:13
    你的问题解决了吗,我现在也遇到同样的问题

    还没有解决,你有解决了吗
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-9-11 05:52 , Processed in 0.101286 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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