RTOS采样任务设计

作者的能力是有限的。

如果文章有误,请读者及时指出,谢谢,谢谢〜引言在现实生活中,我们接触到的大多数信号都是模拟信号。

电压,电流,声音信号等。

在我们的嵌入式开发过程中,有时会涉及模拟信号的采集。

在采集过程中,为了更好地恢复原始信号,有一个采样定理,称为奈奎斯特采样定理。

内容是这样的:为了从采样信号中恢复原始信号而不会失真,采样频率应大于原始信号最高频率的两倍,因此在编写程序时,能够恢复原始信号从被采样的信号中没有失真的信号,那么我们必须设置合适的采样率,笔者将从不同的角度解释几种确定采样率的方法,即确定采样周期。

使用延迟功能控制采样周期。

当采样对象是低频信号时,可以将采样频率设置得非常低,即采样周期比系统刻度周期长得多。

将采样周期设置为系统刻度周期Times的整数,您可以使用RTOS系统提供的延迟功能来控制采样周期。

此时,可以通过独立的采样任务来完成采样功能。

以下是使用延迟功能控制采样率的流程图:采样任务流程图使用定时中断来控制采样周期。

当采样周期与系统滴答周期的数量级相同时,如果仍然使用延迟功能控制采样周期,则采样周期的时间抖动会更加明显,这将严重影响采样质量。

结果。

此时,可以使用的方法是使用另一个计时器从定时中断中生成稳定的采样周期。

以下伪代码是一个采样周期为500 us的数据采集程序。

采样周期由计时器0控制。

在计时器0的ISR中完成采样操作。

消息邮箱用于与采样任务进行通信。

采样数据存储在全局数组中。

void timer0Isr(void)/ *计时器0中断服务功能* / OSIntEnter();调用入口中断服务功能* / *清除中断标志* / * / *读取AD转换的结果* / * / *将数据发送到邮箱* / OSIntExit(); / *调用出口中断服务功能* / } void SampleTask(void * pdata){uint8_t i; for(i = 0; i * 100; i ++)等待数据到达邮箱(* / *)/}}显示信号波形* /}以下是使用定时中断来控制信号的程序流程图。

采样周期:定时中断控制采样周期,并使用拍子挂钩功能进行采样。

在实时操作系统中,将有一个挂钩函数来使底层程序调用由应用程序层编写的程序。

对于钩子函数,实际上它只是回调函数的另一个名称。

挂钩功能与系统节拍链接。

每次生成系统节拍时都会调用hook函数。

因此,当某个功能的运行周期与系统滴答周期相同时,使用系统滴答功能的挂钩函数来完成此功能非常有利。

此外,应注意,系统挂钩滴答功能是系统滴答功能的一部分,并且具有ISR。

它的性质应尽可能简洁,并且不允许调用任何使自身挂起的系统服务功能向上。

以下伪代码是使用系统节拍挂钩功能进行采样的系统示例:void OSTimeTickHook(void)/ *系统节拍挂钩功能* / {Samples!= 0)预先设置* // * AD数据转换* /电子邮件发送* / Samples--;}} void SampleTask(void * pdata){/ *省略相关代码* / Samples = 100;等待(i = 0)i 100; for(i = 0i)* /}}摘要以上是本次引入的RTOS中几个采样任务的设计。

根据被测信号的频率,选择合适的方法设计合适的采样周期,以最大程度地恢复原始信号波形。

参考资料:“基于嵌入式实时操作系统的程序设计技术”。

客服
分享
电话
服务电话:
TOP
深圳市相信过程科技有限公司❤舒先生❤欢迎您的咨询 深圳市相信过程科技有限公司❤舒先生❤欢迎您的咨询
服务电话
联系我们

    深圳市相信过程科技有限公司❤舒先生❤欢迎您的咨询