如何在EEPROM中存储方程?

如何在EEPROM中存储方程?

问题描述:

我正在使用嵌入式系统。为了便于解释,我正在使用dsPIC33EP和一个简单的串行EEPROM。如何在EEPROM中存储方程?

假设我正在构建一个使用线性控制方案(y = mx + b)的控制器。如果控制器需要可能不同的设置这很容易,将m和b存储在EEPROM中,并检索它以获取不同的设置。

现在假设我想为不同的设置有不同的方程。我将不得不预先编程所有方程,然后有一个方法来选择该方程并从EEPROM中提取设置。这很难,因为你需要提前知道方程,但仍然可行。

现在假设您不提前知道方程。例如,也许你必须做一个明智的近似。你怎么能在内存中存储这样的东西?控制器所要做的就是给它一个传感器读数,它将返回一个控制变量。有点像传递一个变量到一个函数,并得到答案传回来。

如果只有当前状态很重要,那么如何在内存中存储这样的函数呢?

如果过去的状态很重要(例如控制方程为二阶,三阶或四阶),如何存储这样的函数?

+0

您的方程形式为** y = a + bx,y = a + bx +cx²,y = a + bx +cx²+dx³**或者它们比这更复杂吗?如果它很简单,那么x的幂范围是多少? – cup

+0

@ cup是的,方程式是以最高阶立方体形式存在的。例外是它们也可以分段定义,有时混合和匹配。例如,第一范围是y = a + bx,第二范围是y = a + bx + cx^2。另外一种情况是内插值。例如,低范围是y = 2 + 5x + 7x^2,高范围是y = 1 + 7x + 19x^2。然后在它的一些线性插值系数之间。例如,直接在中间,它看起来像y = 1.5 + 6x + 13x^2。 –

+0

因此,对于每种设置,您都有一系列系数,并且您希望根据某些设置中的过去状态和其他设置中的当前状态缩小为一组特定的系数。一旦关闭,除非数据存储在NVRAM中,否则您将不会有任何以前的状态参考。 – cup

dsPIC具有有限的RAM,但有相当多的FLASH,足以用于一个小而有效的文本解析器。你有没有想过使用某种形式的基于文本的脚本?这些可以在运行时转换为更高效的数据格式。