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中,也是可以的,温度采样还算稳定,但是考虑到后续程序比较大,因此还是裸机了,状态机的思路基本能解决。

审核编辑:何安

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

    关注

    6074

    文章

    45340

    浏览量

    663427
  • 状态机
    +关注

    关注

    2

    文章

    497

    浏览量

    28844
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    在越野赛车中使用齿轮传感器

    了Littelfuse 55075系列的齿轮齿传感器。在本文中,我们将探讨齿轮齿传感器如何使用大厅效果运行,以及我们如何在赛车上使用它们的实例。阅读本文后,您应该能够实施自己的齿轮齿传感器解决方案! 理论 齿轮
    的头像 发表于 10-01 15:17 1436次阅读
    在越野赛车<b class='flag-5'>中使</b>用齿轮<b class='flag-5'>传感器</b>

    什么是照度传感器和接近传感器

    近年来,照度传感器和接近传感器在我们身边各类设备中的应用越来越广泛。除了单独使用照度传感器和接近传感器外,将这些传感器组合使用的情况也在不断
    的头像 发表于 08-22 14:46 2475次阅读
    什么是照度<b class='flag-5'>传感器</b>和接近<b class='flag-5'>传感器</b>

    【经验】压力传感器89BSD的应用和调试技巧

    TEconnectivity推出的89BSD系列传感器是TE旗下的一种介质隔离数字输出的绝压型压力传感器,封装在316L不锈钢外壳中。可在不同环境中使用,在硬件安装和传感器调试的过程中
    的头像 发表于 08-20 12:02 551次阅读
    【经验】压力<b class='flag-5'>传感器</b>89BSD的应用和调试技巧

    霍尔传感器介绍(可下载)

    霍尔传感器是一种磁传感器。用它可以检测磁场及其变化,可在各种与磁场有关的场合中使用。霍 尔传感器以霍尔效应为其工作基础,是由霍尔元件和它的附属电路组成的集成
    发表于 03-14 17:27 2次下载

    什么是力敏传感器

    深入解析力敏传感器的定义、工作原理、应用领域以及选型与校准方法,带领读者一窥这一科技产品的奥秘。 一、力敏传感器的定义 力敏传感器,也被称为压力传感
    的头像 发表于 03-05 16:02 1019次阅读
    什么是力敏<b class='flag-5'>传感器</b>?

    激光位移传感器的校准方法

    激光位移传感器的校准方法主要包括以下步骤: 一、准备阶段 设备准备 : 激光位移传感器 标准位移装置(如标准振动台或精密滑轨) 数据采集系统 读数显微镜(或激光干涉仪等高精度测量设备,用于验证校准
    的头像 发表于 02-13 17:36 2809次阅读

    详解温度传感器校准方法

    温度测量是现代科技的基础,而校准则是确保测量准确的关键。让我们深入探讨温度传感器校准的技术细节,揭开这项精密科学的神秘面纱。 校准方法详解 定点法校准 这是最精确的校准方法之一,利用纯物质的相变点
    的头像 发表于 02-11 14:35 2675次阅读

    称重传感器故障检测方法与策略探究

    中,称重传感器难免会出现故障,影响数据的准确性和系统的稳定性。因此,探索有效的称重传感器故障检测方法与策略,对于保障生产效率和安全至关重要。 一、传统故障检测方法的局限性 传统的称重
    的头像 发表于 02-07 08:38 1034次阅读
    称重<b class='flag-5'>传感器</b>故障检测<b class='flag-5'>方法</b>与策略探究

    干簧管传感器属于什么传感器

    干簧管传感器,又称磁簧开关传感器或磁敏开关,是一种基于干簧管(Reed Switch)原理工作的传感器。作为一种重要的磁传感器,干簧管传感器
    的头像 发表于 01-30 15:33 2349次阅读

    常见位移传感器故障及解决方法

    和解决方法之前,了解位移传感器的工作原理是必要的。位移传感器通常通过测量物体相对于参考点的位置变化来工作。这些传感器可以基于不同的原理,如电感、电容、光电、磁感应等。它们将机械位移转换
    的头像 发表于 01-19 09:49 2407次阅读

    如何校准位移传感器

    校准方法之前,了解不同类型的位移传感器是必要的。常见的位移传感器包括: 电位计式位移传感器 :通过测量电阻的变化来确定位置。 电容式位移传感器
    的头像 发表于 01-19 09:44 1963次阅读

    光纤传感器的测试与校准方法

    光纤传感器因其独特的优势在多个领域中发挥着重要作用。然而,为了确保其测量结果的准确性和可靠性,必须进行严格的测试与校准。 测试前的准备 设备检查 :确保所有测试设备,包括光纤传感器、光源、检测
    的头像 发表于 01-18 11:12 2556次阅读

    光纤传感器的信号处理方法

    随着科技的发展,光纤传感器因其抗电磁干扰能力强、灵敏度高、体积小、重量轻等优点,在工业、医疗、环境监测等领域得到了广泛的应用。 光纤传感器的工作原理 光纤传感器的工作原理主要基于光的传输特性。当光在
    的头像 发表于 01-18 10:36 2083次阅读

    压阻式压力传感器的校准方法

    压阻式压力传感器的校准方法主要分为两种:客户自行校准和制造商校准。 客户自行校准 客户在生产线中对使用的压阻式压力传感器进行校准,这种方法的优点在于灵活性,尤其当最终成品中已安装微控制
    的头像 发表于 12-29 11:08 1219次阅读

    水压力传感器的常见故障及解决方法

    水压力传感器是一种用于测量流体压力的设备,广泛应用于工业、农业、医疗和环保等领域。由于其工作环境复杂多变,水压力传感器在使用过程中可能会出现各种故障。以下是一些常见的故障及其解决方法: 1.
    的头像 发表于 12-12 14:58 3376次阅读