标题: 单片机在中断中 不用for循环怎么实现滑动平均算法? [打印本页]

作者: zhangleitj    时间: 2021-7-1 16:51
标题: 单片机在中断中 不用for循环怎么实现滑动平均算法?
如题
作者: lkc8210    时间: 2021-7-1 20:03
Int MovAvg[20];
作者: lkc8210    时间: 2021-7-1 20:14
硬寫?有多少個數就寫多少行?如MovVal[X] = MovVal[X-1]?為什麼不用For loop?
作者: zhangleitj    时间: 2021-7-2 08:04
lkc8210 发表于 2021-7-1 20:14
硬寫?有多少個數就寫多少行?如MovVal[X] = MovVal[X-1]?為什麼不用For loop?

中断里能用循环吗?
作者: npn    时间: 2021-7-2 08:14
zhangleitj 发表于 2021-7-2 08:04
中断里能用循环吗?

定时器中断慎用,外部中断可以
作者: yzwzfyz    时间: 2021-7-2 08:30
举例:AD采样中断。
1、做一个数组,8个数据。并做一个指针PCAD:0-7,指向这8个数据。
2、每次中断将PCAD+1(0-7变化),并将新采样的数据,存入PCAD所指向的数组单元。
3、对数组求平均。
如此:当你采样8次之后:每次都可以获得一个前8次采样的平均值了。

作者: lkc8210    时间: 2021-7-2 09:41
zhangleitj 发表于 2021-7-2 08:04
中断里能用循环吗?

要看你的循环时间是否大于定时中断周期
除非需要精准定时(如软串口)
中断中通常用作设置标置位
然后在大while循环中检测到标置位再进行处理
作者: lkc8210    时间: 2021-7-2 09:49
yzwzfyz 发表于 2021-7-2 08:30
举例:AD采样中断。
1、做一个数组,8个数据。并做一个指针PCAD:0-7,指向这8个数据。
2、每次中断将PCA ...

妙啊!
我只想到如何重排数组
每次更新都写入第一位
但山不转水转,水不转人转
不重排就令每次写入的地址不同
一样做到数组更新




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1