完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛扫一扫,分享给好友
|
本帖最后由 一只耳朵怪 于 2018-6-6 14:43 编辑
大家都知道Z-Stack采取时间片轮询任务调度算法,然而Z-Stack2.3.0的时间片长度为320us,也就是说每隔320us协议栈的 OSAL就开始切换Task。废话不刷了,直入正题吧,我的问题是,假如我有一个传感器,每次读取的时间远大于320us假设读取时间为5ms,我该怎么做才能保证读取过程不被打断呢?刚开始想到中断,后来有觉得不妥,因为5ms中有很多个320us了已经被打断很多次了,纠结啊.... 有哪位大神弄过这类的问题的啊?坐等OutMan |
|
相关推荐
7个回答
|
|
|
osal并不具备时间片调度功能,任务都是执行完一个再执行下一个的,只是它的最小轮询时间可以达到320us而已
|
|
|
|
|
|
xiao dong jia,能详细的说一下吗? |
|
|
|
|
|
这个怎么才算详细?你说的那种叫抢先式实时操作系统,就是任务在执行时如果有更高级任务产生,则保存现在任务的现场转去执行高级任务,执行完后恢复现场回到被中断的任务继续执行。OSAL就是不停查询有没有任务需要执行,如果有就执行,执行完了再查询,就这么转着圈的查,一个循环的时间取决于每个任务执行的时间。这要求对每个任务编程时需要注意不要执行太耗时的工作,否则会影响其它任务的执行效果 |
|
|
|
|
啦啦啦啦啦啦啦l 发表于 2018-6-6 07:30 在osal_start_system( void )中的for死循环中osalTimeUpdate()函数不是更新时间的吗,产生中断的吗,这个又如何解释呢 |
|
|
|
|
iyfhnvbn 发表于 2018-6-6 07:41 osalTimeUpdate()函数是用来更新系统时钟的,而且这里面也不产生中断。你没有仔细看代码吧 |
|
|
|
|
|
你说的没错,刚刚看了下,的确是更新系统时间的,至于OSAL能不能处理多任务并发,我明天做实验试试 |
|
|
|
|
|
谢谢你啊,我做了实验验证过你说的是对的,OSAL的任务调度算法是FIFO |
|
|
|
|
只有小组成员才能发言,加入小组>>
549 浏览 0 评论
1613 浏览 0 评论
2047 浏览 0 评论
为啥BQ7693003DBTR芯片在和BQ769X0盒子通讯时收不到信号?
1513 浏览 0 评论
DSP 28027F 开发板 XDS100v2调试探针诊断日志显示了 Error -150 (SC_ERR_FTDI_FAIL)如何解决
1337 浏览 0 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
1756浏览 29评论
2781浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
1724浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
1634浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
1645浏览 13评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 01:58 , Processed in 3.662306 second(s), Total 85, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1361