打印

microchip PIC sleep 模式!大神进,在线等

[复制链接]
3193|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
0蛋骗鸡0|  楼主 | 2012-6-13 14:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人现在接到一个单,当前用C语言写,程序大部分已经完成。

现在应客户需求:当处于空闲状态10分钟则进入SLEEP模式。

问题:现在打算利用TIME0定制器计时,由于最求稳定(听说C写程序会出现意想不到的情况)所以再犹豫是出发了TIME0中断之后将SLEEP直接写在中断里?还是从TIME0中断带出一个变量到MAIN()函数里执行SLEEP比较科学??? 因为下一次唤醒是利用I/O口电平变化中断唤醒的,所以SLEEP如果直接写在TIME0中断中是否科学?(硬件堆栈好像是16级深)
沙发
0蛋骗鸡0|  楼主 | 2012-6-13 14:57 | 只看该作者
难道都在忙?:lol

使用特权

评论回复
板凳
XIEYUANBIN| | 2012-6-16 07:14 | 只看该作者
一般来说,SLEEP写在哪里无所谓,但据你的情况看来,IO口唤醒之后肯定是检测IO口,对于我来讲,所有的键盘、IO口响应操作都在MAIN()中,所以我写的话一定是放在键盘或者IO口操作程序中。

使用特权

评论回复
地板
wangjiati| | 2012-6-16 11:17 | 只看该作者
从任务管理的角度来说.  sleep是属于应用级别的任务.不应该是事件任务, 和高优先级任务.   而你的其他任务都是优先于sleep的.   如果主循环用来扫描键盘等..再插入SLEEP扫描. 则实时性有打折扣. 倒不如sleep放在后台如定时器.

使用特权

评论回复
5
NE5532| | 2012-6-16 14:46 | 只看该作者
楼上所说基本正确,推荐放外面来。

使用特权

评论回复
6
asspeed| | 2012-6-16 19:21 | 只看该作者
放到中断里面,你会死的很惨...
你自己想一想:如果中断里面执行了睡眠指令,而当一个中断唤醒事件发生了,会发生什么事情?自己看数据手册就知道了.

使用特权

评论回复
7
NE5532| | 2012-6-16 21:45 | 只看该作者
放到中断里面,你会死的很惨...
你自己想一想:如果中断里面执行了睡眠指令,而当一个中断唤醒事件发生了,会发生什么事情?自己看数据手册就知道了. ...
asspeed 发表于 2012-6-16 19:21


会唤醒CPU,置位中断标志,把SLEEP的这个中断执行完了以后接着出去执行唤醒那个ISR,还真不会死呢。

使用特权

评论回复
8
0蛋骗鸡0|  楼主 | 2012-6-26 08:39 | 只看该作者
6# asspeed

死不了,唤醒之后中断标志位还是置位的,最多当前中断走完退出后才进入下一次中断,我现在就放在中断里了,没问题

使用特权

评论回复
9
asspeed| | 2012-6-26 09:04 | 只看该作者
老糊涂了,一下忘了进中断后GIE是清零的,堆栈的问题是多虑了.

使用特权

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

本版积分规则

0

主题

35

帖子

0

粉丝