0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

传感器中使用fsm的方法

电子设计 来源:电子设计 作者:电子设计 2022-02-17 11:16 次阅读

原文:https://www.cnblogs.com/CodeWorkerLiMing/p/12501934.html

单片机裸机的编程方法中,状态机的方法是比较好的,经典的比如按键的检测判断等。

其实有很多地方可以使用这种思想。比如传感器的数据采集,因为单片机不可能一直等待着运行,那样的效率是很低的,通常都是结合fsm + timer的方式来提高CPU的使用率。

传感器中使用fsm的方法

大家都知道,ds18b20的采集是比较慢的,发送转换指令后,最慢需要等待720ms,这个时间有点太长了。简直不能忍受。

如下所示:我采用了11bit分辨率,0.125的分辨率足够了,作为温度参考而已。

9 - bit resolution 93.75 ms 0.5
10 - bit resolution 187.50.25
11 - bit resolution 3750.125
12 - bit resolution 7500.0625
那么我肯定不是死等的,死等,多浪费cpu,效率太低了,实际工作中根本无法接受。

因此,做了一个状态机:

int main(int argc, char const *argv[])
{
while(1)
{
ds18b20_discope();
}
return0;
}
void ds18b20_discope(void)
{
switch (ds18b20的状态机的全局变量)
{
case 发送命令:
发送转换命令
赋值到等待装态
break;
case 等待装态:
判断是否有超时,
如果有超时,则:读取,计数器清零,并回到发送命令状态
否则,do nothing
break;
default:
break;
}
}

定时器的基准中断可以自己细化,我是50ms一个中断:

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
如果ds18b20已经处于等待状态,
则计数++
}

这样就是一个简单的传感器定时采样的状态机思路,不会死等,效率较高,而且稳定。

注意ds18b20的时序性比较严格,网上说不能被打断的,但是后来移植到freertos中,也是可以的,温度采样还算稳定,但是考虑到后续程序比较大,因此还是裸机了,状态机的思路基本能解决。

审核编辑:何安

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6002

    文章

    43987

    浏览量

    620937
  • 状态机
    +关注

    关注

    2

    文章

    486

    浏览量

    27187
收藏 人收藏

    评论

    相关推荐

    PSoC4s MAX如何让距离传感器进入坚固的地面?

    的基础。 以下两个可以作为对策吗? 请告诉我们在如此坚固的接地金属框架中使用接近传感器的最佳方法。 (1) 使用绝缘片 (2) 隔离 PSoC4s MAX 和距离传感器接地
    发表于 01-29 07:01

    液位传感器的接线方法及工作原理

    液位传感器是一种用于测量容器内液体水平的装置。它广泛应用于各种工业领域,如化工、石油、食品加工、水处理等。接下来将详尽地介绍液位传感器的接线方法和工作原理。 一、液位传感器的接线
    的头像 发表于 01-15 16:10 1184次阅读

    AT32F系列ADC部分内部温度传感器的使用方法

    AT32F系列 ADC使用ADC内部温度传感器演示AT32F系列 ADC部分内部温度传感器的使用方法
    发表于 10-27 07:49

    Unico上FSM的使用

    Unico为ST可编程传感器提供了一个UI界面,方便用户设计/调试ST FSM功能• 在Unico选择了带FSM的器件后,在GUI中会导入FSM的配置和调试窗口•
    发表于 09-06 06:43

    ST可编程传感器FSM+MLC)介绍

    状态机是由一系列的命令和条件组成的逻辑,执行按照这个逻辑和传感器数据生成的周期一步一步执行。命令:• 每个命令占8个比特,有时后面还有参数。• 当执行执行的到一个命令时,指针会立刻指向下一个命令
    发表于 09-06 06:18

    温度传感器的特性,温度传感器的类型有哪些

    始终是热量。   传感器主要将热量转换为交替量。   它用于测量设备的温度和热流。   传感元件   温度传感器中使用的传感元件必须具有随温
    发表于 09-01 16:33

    传感器定义与命名方法(2)#传感器

    传感器
    未来加油dz
    发布于 :2023年08月20日 14:29:52

    传感器定义与命名方法(1)#传感器

    传感器
    未来加油dz
    发布于 :2023年08月20日 14:29:08

    Unico上FSM的使用

    电子发烧友网站提供《Unico上FSM的使用.pdf》资料免费下载
    发表于 07-31 15:23 0次下载
    Unico上<b class='flag-5'>FSM</b>的使用

    ST可编程传感器(FSM+MLC)

    电子发烧友网站提供《ST可编程传感器(FSM+MLC).pdf》资料免费下载
    发表于 07-31 15:13 0次下载
    ST可编程<b class='flag-5'>传感器</b>(<b class='flag-5'>FSM</b>+MLC)

    MEMS传感器所具备的嵌入式可编程功能

    本文介绍部分意法半导体MEMS传感器所具备的嵌入式可编程功能,特别介绍了有限状态机 (FSM)、机器学习内核 (MLC) 和智能传感器处理单元 (ISPU)
    的头像 发表于 07-08 11:26 425次阅读

    虹科新品 | 在风力发电厂中使用的光纤传感器

    在风力发电厂中使用的光纤传感器虹科Micronor前言在与风力发电厂相关的传感器的应用中,有一个主要的原因:安全性!这既涉及到操作的安全性,也涉及到风力涡轮机所处环境的安全性。由于转子的可移动性
    的头像 发表于 07-05 10:11 568次阅读
    虹科新品 | 在风力发电厂<b class='flag-5'>中使</b>用的光纤<b class='flag-5'>传感器</b>

    如何在Arduino中使用APDS9960手势传感器

    电子发烧友网站提供《如何在Arduino中使用APDS9960手势传感器.zip》资料免费下载
    发表于 06-28 16:01 0次下载
    如何在Arduino<b class='flag-5'>中使</b>用APDS9960手势<b class='flag-5'>传感器</b>

    传感器型号区分方法

    传感器
    YS YYDS
    发布于 :2023年06月19日 18:51:28

    温度传感器怎么测好坏?温度传感器的测量方法

    温度传感器在电路中我们经常可以见到,那么当温度传感器坏了,你知道怎么检测吗?检测方法又有哪些呢?鉴于此,本文主要介绍关于温度传感器好坏的检测,以及检测的
    发表于 06-05 09:37 3773次阅读