引用: hello_mcu 发表于 2017-8-16 06:44
讨论下,思路大概是:
1、程序正常运行-外部触发-启动故障信息记录-操作E2PROM-将信息写入E2PROM;
上位机读取的顺序是:发送一个指令给单片机,告诉它我要读故障信息;单片机收到后,读取E2PROM,读取故障信息,再通过通信接口给上位机。
目前EEPROM驱动OK、通信接口OK、通信协议OK。
主要是存储的结构,还有存储的方式,故障信息存储形式故障码+时间,当上位机接入后,通过上位机的读取命令可以读到EEPROM中存储的最近100条数据,因为EEPROM毕竟容量小,如果一直存会很快就满了,所以只存最近的100条。
但是这样就会有个问题,存储的时候,使用固定大小的EEPROM空间该怎样实现一个先进先出的结构,还是说在系统上电的时候做一个数据结构存储故障信息,在系统下电的时候,将这个结构直接存入EEPROM,在下次上电时在读取出来。
目前我的两种思路(不知道是不是正确):
1.在出现故障时,将标志位置位,存贮时间+故障码,记录存储单元的首地址和结束地址,通过地址确定存入数据条数,如果超出就将下条数据存入首地址,类似一个循环队列
2.在系统中做这样一个结构,在系统上电运行中存储,下电写入EEPROM,上电是读出
不知道对不对,水平有点渣,还望多多指正,谢谢
还有就是有没有一些常用的存储和读取历史数据的方法或结构,推荐参考下
引用: hello_mcu 发表于 2017-8-16 06:44
讨论下,思路大概是:
1、程序正常运行-外部触发-启动故障信息记录-操作E2PROM-将信息写入E2PROM;
上位机读取的顺序是:发送一个指令给单片机,告诉它我要读故障信息;单片机收到后,读取E2PROM,读取故障信息,再通过通信接口给上位机。
目前EEPROM驱动OK、通信接口OK、通信协议OK。
主要是存储的结构,还有存储的方式,故障信息存储形式故障码+时间,当上位机接入后,通过上位机的读取命令可以读到EEPROM中存储的最近100条数据,因为EEPROM毕竟容量小,如果一直存会很快就满了,所以只存最近的100条。
但是这样就会有个问题,存储的时候,使用固定大小的EEPROM空间该怎样实现一个先进先出的结构,还是说在系统上电的时候做一个数据结构存储故障信息,在系统下电的时候,将这个结构直接存入EEPROM,在下次上电时在读取出来。
目前我的两种思路(不知道是不是正确):
1.在出现故障时,将标志位置位,存贮时间+故障码,记录存储单元的首地址和结束地址,通过地址确定存入数据条数,如果超出就将下条数据存入首地址,类似一个循环队列
2.在系统中做这样一个结构,在系统上电运行中存储,下电写入EEPROM,上电是读出
不知道对不对,水平有点渣,还望多多指正,谢谢
还有就是有没有一些常用的存储和读取历史数据的方法或结构,推荐参考下
举报