珊瑚虫 发表于 2005-7-26 15:40:39

求教:ucosii移植时,中断处理问题

最近往44b0上移植ucosii,关于中断处理方法一直没弄明白,还望各位朋友点拨一下,谢谢。

在ucosii中,只处理了系统时钟中断,那么对于具体的某个处理器,例如44b0,它还有其它很多中断如timer中断、uart发送接收中断、adc中断,这时ucosii如何识别和处理???例如来了一个ADC中断,ucos怎么识别它???

而且,OsIntNesting只和时钟节拍中断有关,万一有中断嵌套怎么办,例如在处理timer中断时,又来了一个adc中断,这时是不是要自己增加一个变量来标识嵌套关系???

看了一些例程,基本上都有一个ISR_Install函数,但我看主函数里,基本上只安装了tick中断处理函数,其它的中断处理函数都没有安装,这是怎么回事呢,难道其它中断都不管了???

一直没弄明白,很纳闷,请有移植过的或者对此有什么看法的,都发发话吧,谢谢啦!

珊瑚虫 发表于 2005-7-26 15:41:42

版主,这个问题你应该比较清楚吧

我是按照你们往skyeye上移植的例程改的,呵呵

指点指点吧

珊瑚虫 发表于 2005-7-26 21:45:53

比如说,我现在有以下几个任务:

一个任务进行ADC数据采集
一个任务将采集的数据在lcd上显示
另外一个监控按键是否有按下,如果有按下 ,则响应按键中断

我的adc进行三通道的采集,在某个通道采集结束后,在adc 中断处理函数里面通知进行通道转换,启动下一个通道的采集。

显然,这里除了系统时钟tick中断,还有adc转换结束中断,按键中断(实际上是外部中断)
那么这几个中断如何处理呢?这些中断发生时显然会打乱多任务的运行,所以这几个中断处理函数是不是又要用汇编程序来写,然后在汇编程序中保存任务上下文呢?另外,如果在adc中断处理程序中,又来了一个tick中断怎么办?这时就发生了中断嵌套。

请李老师指教,谢谢

limingth 发表于 2005-7-27 15:41:12

我目前还没有用 ucos 处理过中断嵌套问题。 我的处理办法是尽量让中断处理程序执行时间短小高效,通常是设置一个标准位就退出。 其他的工作(后半部)留在任务空间完成。
一般中断 pending 只要你不去主动处理,都会一直 pending 着,如果不嵌套,就是延迟处理一会。是否可以这么处理就看你的系统实时性要求了。

珊瑚虫 发表于 2005-7-27 18:54:45

3x!
正在看这方面的书籍,相信很快有解决办法的,呵呵
不过还是很感谢你,版主

珊瑚虫 发表于 2005-7-27 21:56:54

弄明白如何处理其它中断了,和tick类似

如果要处理中断嵌套的话,比较麻烦,感觉还是关中断好点,不过这种情况下

中断处理程序应该设计得短小精悍,免得中断延迟太长,甚至丢失中断,影响

实时性.
页: [1]
查看完整版本: 求教:ucosii移植时,中断处理问题