查看: 4803|回复: 15

[已解决] KL系列的中断处理问题(已解决)

[复制链接]

该用户从未签到

10

主题

65

帖子

0

新手上路

Rank: 1

积分
94
最后登录
1970-1-1
发表于 2014-7-1 08:56:46 | 显示全部楼层 |阅读模式
 
KL26,设置了SPI通讯、定时器和USB三个模块,中断优先级分别为0、1、2;并且确认过这个优先级设置是没有问题的,在低优先级中断处理时可以被高优先级的中断打断。
现在遇到的问题是这样的,在USB有任务时,也就是USB频繁进中断时如果有SPI通讯了,此时SPI接收数据就容易出现丢包,但是在没有USB任务时,SPI就肯定不会丢包。
所以我就纳闷了,这SPI的优先级是最高的呢?
拜托高人指点指点…………
我知道答案 目前已有14人回答
回复

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2014-7-1 10:49:36 | 显示全部楼层

RE:KL系列的中断处理问题

你好,楼主!
你设置的是中断的优先级,当SPI通信时,不管哪个中断都可以它的,当然在其他中断处理过程中,SPI的中断触发了,SPI中断也可以打断其它中断。
回复 支持 反对

使用道具 举报

该用户从未签到

10

主题

65

帖子

0

新手上路

Rank: 1

积分
94
最后登录
1970-1-1
 楼主| 发表于 2014-7-1 11:03:31 | 显示全部楼层

回复:KL系列的中断处理问题

回复第 2 楼 于2014-07-01 10:49:36发表:
你好,楼主!
你设置的是中断的优先级,当SPI通信时,不管哪个中断都可以它的,当然在其他中断处理过程中,SPI的中断触发了,SPI中断也可以打断其它中断。
 
对啊,所以很奇怪,咋就丢字节了呢
 
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2014-7-1 11:11:34 | 显示全部楼层

回复:KL系列的中断处理问题

回复第 3 楼 于2014-07-01 11:03:31发表:
回复第 2 楼 于2014-07-01 10:49:36发表:
你好,楼主!
你设置的是中断的优先级,当SPI通信时,不管哪个中断都可以它的,当然在其他中断处理过程中,SPI的中断触发了,SPI中断也可以打断其它中断。
 
对啊,所以很奇怪,咋就丢字节了呢
这就要看你SPI的通信过程啊,举个例子,当你用轮询的方式检测SPI通信过程,这时候USB中断触发,就有可能打断轮询的连续行,导致SPI丢包!

 
回复 支持 反对

使用道具 举报

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

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2014-7-1 11:35:33 | 显示全部楼层

    RE:KL系列的中断处理问题

    楼主发一下中断优先级的配置代码吧。看看是怎么配置的。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10

    主题

    65

    帖子

    0

    新手上路

    Rank: 1

    积分
    94
    最后登录
    1970-1-1
     楼主| 发表于 2014-7-1 12:43:27 | 显示全部楼层

    回复:KL系列的中断处理问题

    回复第 4 楼 于2014-07-01 11:11:34发表:
    回复第 3 楼 于2014-07-01 11:03:31发表:
    回复第 2 楼 于2014-07-01 10:49:36发表:
    你好,楼主!
    你设置的是中断的优先级,当SPI通信时,不管哪个中断都可以它的,当然在其他中断处理过程中,SPI的中断触发了,SPI中断也可以打断其它中断。
     
    对啊,所以很奇怪,咋就丢字节了呢
    这就要看你SPI的通信过程啊,举个例子,当你用轮询的方式检测SPI通信过程,这时候USB中断触发,就有可能打断轮询的连续行,导致SPI丢包!
     
    啊?SPI通信也是中断哦,不是主程序轮询的,而且中断优先级比USB的中断优先级高。
    刚刚没仔细看,“当SPI通信时,不管哪个中断都可以它的”,这个的意思是其他中断可以打断SPI通信吗?为什么?SPI的优先级是设为最高的,凭什么低优先级可以打断高优先级的

     

     
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10

    主题

    65

    帖子

    0

    新手上路

    Rank: 1

    积分
    94
    最后登录
    1970-1-1
     楼主| 发表于 2014-7-1 12:45:50 | 显示全部楼层

    回复:KL系列的中断处理问题

    <div style="padding:5px;border:1px dashed #ccc;">回复第 5 楼 于2014-07-01 11:35:33发表:
    楼主发一下中断优先级的配置代码吧。看看是怎么配置的。

    void set_irq_priority (int irq, int prio)
    {   
        /*irq priority pointer*/
        uint_32 *prio_reg;
        uint_8 err = 0;
        uint_8 div = 0;
        
        if (irq > 32)
        {
            err = 1;
        }
     
        if (prio > 3)
        {
            err = 1;
        }
        
        if (err != 1)
        {
            /* Determine which of the NVICIPx corresponds to the irq */
            div = irq / 4;
            prio_reg = (uint_32 *)((uint_32)&NVIC_IP(div));
            /* Assign priority to IRQ */

            *prio_reg &= ~(uint_32)(3
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2014-7-1 14:45:28 | 显示全部楼层

    RE:KL系列的中断处理问题

    NVICICPR0|=(1
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10

    主题

    65

    帖子

    0

    新手上路

    Rank: 1

    积分
    94
    最后登录
    1970-1-1
     楼主| 发表于 2014-7-1 16:42:52 | 显示全部楼层

    回复:KL系列的中断处理问题

    <div style="padding:5px;border:1px dashed #ccc;">
    回复第 8 楼 于2014-07-01 14:45:28发表:
    NVICICPR0|=(1
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    124

    主题

    3600

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5781
    最后登录
    1970-1-1
    发表于 2014-7-1 17:06:45 | 显示全部楼层

    回复:KL系列的中断处理问题

    回复第 6 楼 于2014-07-01 12:43:27发表:
    回复第 4 楼 于2014-07-01 11:11:34发表:
    回复第 3 楼 于2014-07-01 11:03:31发表:
    回复第 2 楼 于2014-07-01 10:49:36发表:
    你好,楼主!
    你设置的是中断的优先级,当SPI通信时,不管哪个中断都可以它的,当然在其他中断处理过程中,SPI的中断触发了,SPI中断也可以打断其它中断。
     
    对啊,所以很奇怪,咋就丢字节了呢
    这就要看你SPI的通信过程啊,举个例子,当你用轮询的方式检测SPI通信过程,这时候USB中断触发,就有可能打断轮询的连续行,导致SPI丢包!
     
    啊?SPI通信也是中断哦,不是主程序轮询的,而且中断优先级比USB的中断优先级高。
    刚刚没仔细看,“当SPI通信时,不管哪个中断都可以它的”,这个的意思是其他中断可以打断SPI通信吗?为什么?SPI的优先级是设为最高的,凭什么低优先级可以打断高优先级的
     
    Sorry,前面我的理解有误。是不是很可能在你的USB中断函数有禁止全局中断使能的指令,导致SPI中断无法触发呢。
     

     

     

     
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-20 08:51 , Processed in 0.123383 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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