打印
[应用相关]

ucos下除了时钟节拍外,如何设置另一个10K Hz定时器中断

[复制链接]
9450|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
car_software|  楼主 | 2012-11-15 16:15 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
时钟节拍目前设的是200, 即5ms产生一次中断给OS用; 功能都是正常的;
因需求,需另外一个10K左右的定时器中断,在此中断中做定时采样,采样时间很短,没占几个机器周期;

在裸机下,此功能已实现, 
但移植到UCOS上,一直没有搞定:
这个10K的定时器中断 不知道是不是会被 时钟节拍目打断一样,开机都不正常;
除非将10K定时频率,改小, 改小到20Hz左右,才能开机。
沙发
car_software|  楼主 | 2012-11-16 09:10 | 显示全部楼层
2# yanjinbin
请教 yanjinbin: 你是指重新分配时钟节拍中断(200Hz)的优先级,还是指那个10KHz的定时器中断,谢谢!   
化先级在USOC中有,  我用的是STM32,STM32本身也可以设置中断优先级,时钟节拍中断用的是SysTicker, 10KHz是用Tmer3 ,两者是完全独立的

使用特权

评论回复
板凳
car_software|  楼主 | 2012-11-16 14:12 | 显示全部楼层
请问是不是地那个10KHz的定时器中断里发邮箱, 另一个任务接收到邮箱再做处理; 
问题是这样的话:OS的节拍还是会被10KHz中断打断,打断很频繁, 那每100US(10kHZ)又要发生一次任务调度, 因为OS退出中断会发生一次任务 调度;
如何让这个10KHz定时器中断不影响UCOS的节拍:

void TIM5_IRQHandler(void)   //TIM5中断,10Khz ->10000Hz
{
        OSIntEnter();                //进入中断
       
        ..................
        //do samething ...
        .................
       
        OSIntExit();    //触发任务切换软中断
}  

使用特权

评论回复
地板
car_software|  楼主 | 2012-11-17 12:04 | 显示全部楼层
谢谢各位,基本上知道该怎么做了: 
1. 将这个10KHz的定时器中断,其优先级设为最高;  (采样用:中断频率很高:10KHz)
2. 将UCOS用的那个时钟节拍定时器中断,优先级设低一点;  (OS用:中断频率很低:200Hz)
这样就能保证: 采样用的10KHz中断 不会被 OS的节拍打断;

但还存在一个问题:
UCOS中很多地方都会用到关中断的语句: OS_ENTER_CRITICAL(); //进入临界区(关中断) ;
这样的话,那个采样用的中断也被关掉了,直到执行了OS_EXIT_CRITICAL()之后;
10KHz的定时采样就会不准,会丢失一些采样点;
这问题能解决不,目前没想到好方法

使用特权

评论回复
5
car_software|  楼主 | 2012-11-19 10:41 | 显示全部楼层
在amobbs论坛中,有人指点这样做:
OS_ENTER_CRITICAL是一个宏啊,你可以自己改的!
把它改成提升当前中断级别到高于系统时基中断但低于10K定时器中断的级别即可(也就是让OS_ENTER_CRITICAL不能屏蔽高于某一级别的中断)
但要注意,在不能被OS_ENTER_CRITICAL屏蔽的中断里面,也不可调用任何可能导致任务切换的函数!切记!
这些高级中断与系统其他部分之间只可通过全局变量交换数据,不可使用任何OS机制(比如信号量等等。。。)
其实相当于这些高级的中断完全脱离了操作系统的管理.



我按以上方法试过: 修改OS_ENTER_CRITICAL宏和OS_ENTER_CRITICAL宏; 只关部份中断,非全部;即禁止或使能除了10KHz的定时器中断(采样用) 以外的所有中断;
这样10KHz采样中断是很准了,

但问题是: 这个10KHz的采样中断,似乎太过频繁了,会打断OS的时钟节拍(200Hz);
我是用一个LED亮灭来简单测试的, 从亮灭的情况来看,只要开了10KHz中断,亮灭慢了三倍时间以上;
好像OS被10KHz给托慢了;

由于设计需要,这个10KHz的采样是必须的,裸机程序早已搞定,难道OS真的不好搞定一些实时性高的应用;
注:10KHz的定时器中断中,代码很简单,就给一变量复职,一两条指令而已,不占用多少时间的;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

44

帖子

0

粉丝