查看: 2847|回复: 4

[其他] 【求助】mcf52259 pit和irq中断的问题求助

[复制链接]

该用户从未签到

1

主题

3

帖子

0

新手上路

Rank: 1

积分
10
最后登录
1970-1-1
发表于 2013-5-6 12:09:02 | 显示全部楼层 |阅读模式
mcf52259 pit和irq同时使能时irq进不去,pit能进去,不使能pit,irq能进去。
我知道答案 目前已有3人回答
回复

使用道具 举报

该用户从未签到

1

主题

3

帖子

0

新手上路

Rank: 1

积分
10
最后登录
1970-1-1
 楼主| 发表于 2013-5-6 12:10:00 | 显示全部楼层

回复:【求助】mcf52259 pit和irq中断的问题求助

#include "support_common.h"
#include
#include "MCF52259.h"
#include "Counter_driver.h"
#include &quotIT_driver.h"
#include "UART_driver.h"
uint32 g_counter0=0,g_counter1=0;

void main(void)
{
       
       
        uart0_init(9600);
//        PIT0_init();
        EPORT_init();
        PIT0_init();
        EnableInterrupts;
   while(1)
   {
           ;
   }

}
void EPORT_init(void)
{
        MCF_GPIO_PNQPAR = 0
                                         |MCF_GPIO_PNQPAR_IRQ1_IRQ1
                                     |MCF_GPIO_PNQPAR_IRQ3_IRQ3;
//                                     |MCF_GPIO_PNQPAR_IRQ5_IRQ5
//                                     |MCF_GPIO_PNQPAR_IRQ7_IRQ7;
//pin assignment register:FALLING LEVEL RISING BOTH                          
        MCF_EPORT_EPPAR = MCF_EPORT_EPPAR_EPPA1_FALLING
                                          |MCF_EPORT_EPPAR_EPPA3_FALLING;      //下降沿捕捉
//                                          |MCF_EPORT_EPPAR_EPPA5_FALLING
//                                         |MCF_EPORT_EPPAR_EPPA7_FALLING;
//data direction register
        MCF_EPORT_EPDDR =                                     //0 输入0,输出 1
                                        (uint8)~MCF_EPORT_EPDDR_EPDD1
                                         &~MCF_EPORT_EPDDR_EPDD3
                                         &~MCF_EPORT_EPDDR_EPDD5
                                         &~MCF_EPORT_EPDDR_EPDD7;
//interrupt enable register
        MCF_EPORT_EPIER = MCF_EPORT_EPIER_EPIE1        //EPORT interrupt source 1    中断使能
                                         |MCF_EPORT_EPIER_EPIE3;        //EPORT interrupt source 3
                                          //|MCF_EPORT_EPIER_EPIE5        //EPORT interrupt source 5
                                         // MCF_EPORT_EPIER_EPIE7;//EPORT interrupt source 7
                                         
                                         
//data register:hold the data to be driven to the pins
        MCF_EPORT_EPDR = MCF_EPORT_EPDR_EPD1
                                      |MCF_EPORT_EPDR_EPD3
                                      |MCF_EPORT_EPDR_EPD5
                                      |MCF_EPORT_EPDR_EPD7;
//data register:reflects the current state of the pins READ ONLY
//        MCF_EPORT_EPPDR
//flag register:individually latches EPORT edge events
        MCF_EPORT_EPFR = MCF_EPORT_EPFR_EPF1
                                    |MCF_EPORT_EPFR_EPF2
                                    |MCF_EPORT_EPFR_EPF3
                                    |MCF_EPORT_EPFR_EPF4
                                    |MCF_EPORT_EPFR_EPF5
                                    |MCF_EPORT_EPFR_EPF6
                                    |MCF_EPORT_EPFR_EPF7;
                                  
//set interrupt enable       
//   ~MCF_INTC_IMRL_MASKALL;                          
        MCF_INTC0_IMRL&=~MCF_INTC_IMRL_MASKALL
                                   &~MCF_INTC_IMRL_INT_MASK1 //EPORT interrupt source 1
                                   &~MCF_INTC_IMRL_INT_MASK3 //EPORT interrupt source 3
                                   &~MCF_INTC_IMRL_INT_MASK5 //EPORT interrupt source 5
                                   &~MCF_INTC_IMRL_INT_MASK7;//EPORT interrupt source 7
                                  
                                  
                                  
        MCF_INTC0_ICR01=MCF_INTC_ICR_IP(4)+MCF_INTC_ICR_IL(5);
        MCF_INTC0_ICR03=MCF_INTC_ICR_IP(5)+MCF_INTC_ICR_IL(5);
        MCF_INTC0_ICR05=MCF_INTC_ICR_IP(3)+MCF_INTC_ICR_IL(5);
        MCF_INTC0_ICR07=MCF_INTC_ICR_IP(4)+MCF_INTC_ICR_IL(5);
       
}

__declspec(interrupt:0) void EPORT_irq1_handler(void)//source 1   65
{
        MCF_EPORT_EPFR|=MCF_EPORT_EPFR_EPF1;
        g_counter0++;
        uart0_printf_16("irq_hander_R_couter_number=",g_counter0);
        uart0_putchar('\r');
        uart0_putchar('\n');
}

__declspec(interrupt:0) void EPORT_irq3_handler(void)  //67  
{
        MCF_EPORT_EPFR|=MCF_EPORT_EPFR_EPF3;
        g_counter1++;
        uart0_printf_16("irq_hander_L_couter_number=",g_counter1);
        uart0_putchar('\r');
        uart0_putchar('\n');       
}
void PIT0_init(void)
{
               
    MCF_PIT0_PCSR = 0
                    |MCF_PIT_PCSR_PRE(3)                // 分频8(对内部时钟进行分频)
                    |MCF_PIT_PCSR_OVW                        // 立即替换,重装设定计数值
                    |MCF_PIT_PCSR_PIE                        // 中断使能
                    |MCF_PIT_PCSR_PIF                        // 中断标志清零
                    |MCF_PIT_PCSR_RLD;                        // 达到0x0000,重装设定值
    MCF_PIT0_PMR = 5000;                                       // 100ms 设定值,4,000,000/8=500,000
    MCF_PIT0_PCSR |= MCF_PIT_PCSR_EN;                        // 使能模块
    MCF_INTC0_IMRL&=~MCF_INTC_IMRL_MASKALL;
//           MCF_INTC0_IMRL&=~MCF_INTC_IMRL_MASKALL
//                                   &~MCF_INTC_IMRL_INT_MASK1 //EPORT interrupt source 1
//                                   &~MCF_INTC_IMRL_INT_MASK3 //EPORT interrupt source 3
//                                   &~MCF_INTC_IMRL_INT_MASK5 //EPORT interrupt source 5
//                                   &~MCF_INTC_IMRL_INT_MASK7;//EPORT interrupt source 7
    MCF_INTC0_IMRH&=~MCF_INTC_IMRH_INT_MASK55;// 中断管理中使能定时中断
        
    MCF_INTC0_ICR55=0
                    | MCF_INTC_ICR_IL(3)                //  设置中断优先级
                    | MCF_INTC_ICR_IP(4);
}

__declspec(interrupt:0) void PIT0_handler(void)// 119=55+64
{
        uint32 couter_number_L,couter_number_R;
       
        couter_number_R=g_counter0;
        couter_number_L=g_counter1;
        g_counter0=0;
        g_counter1=0;
        if(couter_number_R==0&&couter_number_L==0)
        {
               
        }
        else
        {
                uart0_printf_16("couter_number_R=",        couter_number_R);
                uart0_printf_16("  couter_number_L=",couter_number_L);
                uart0_putchar('\r');
                uart0_putchar('\n');
                uart0_putchar('\r');
                uart0_putchar('\n');
               
        }
}
回复 支持 反对

使用道具 举报

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

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2013-5-6 15:13:42 | 显示全部楼层

    RE:【求助】mcf52259 pit和irq中断的问题求助

    看不到代码,可能是初始化的问题。把初始化的代码发出来看看。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    3

    帖子

    0

    新手上路

    Rank: 1

    积分
    10
    最后登录
    1970-1-1
     楼主| 发表于 2013-5-6 16:01:53 | 显示全部楼层

    回复:【求助】mcf52259 pit和irq中断的问题求助

    已经解决了,是优先级的问题
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    2

    帖子

    0

    新手上路

    Rank: 1

    积分
    33
    最后登录
    2019-10-16
    发表于 2014-3-31 12:59:11 | 显示全部楼层

    回复:【求助】mcf52259 pit和irq中断的问题求助

    你好,我现在也遇到进不去PIT中断的情况,能帮下忙吗?
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-21 03:32 , Processed in 0.092754 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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