小弟最近在做一个AD降采样的算法。
在ISR中,采用连续转换模式,每采集一个数据就让FLAG=1,随后在MAIN函数中,进行降采样的算法,随后通过UART发到终端
为了缓解ISR与MAIN的速度之差,以及让AD值能够快速传递。现在我用的方法是,设置一个全局变量数组,将ISR中转换的数据写入数组,同时在main中读取数组的值。
当转换频率为8KHZ时,在ISR中,每转换一次AD值,就将转换的AD值放入全局数组a[500]中,随后让flag=1;
在Main中,等待flag==1,然后从数组中依次读取AD值。随后进行降采样运算,随后发送UART
但是现在发现由于ISR中,放入数组的速度比main中读取的速度快,过一段时间后,原来写入数组的AD值会被新的值覆盖。main来不急读原来的值,就读取新的值了。也就是说写入的指针比读取的指针快了500超过。这样的话,读取的数据就不对了
请问这个问题怎么解决? |