我们是做试验机的,老板说,为了防止客户不给钱,需要在下位机放一个时钟芯片,
用来定时。定时多少天,如果客户不给钱,软件就不能用了,上位机软件弹出一个窗口,
要求注册,要求提供注册码。然后如果客户给了钱,输入注册码,就可以继续使用产品。
现在有个问题,我以前使用过时钟芯片,比如DS1302,可是这种芯片有个问题。
它计时的时候,有时候日期时间会乱。如果乱了就惨了。请问高手有办法吗?谢谢!
不一定要用时钟芯片吧?
既然有上位机和下位机,下位机烧入程序时在可擦除存储器某一位置写入一个初始码,上位机与下位机通讯时读出此初始码,发现是初始码即命令下位机修改初始码成另一码。下位机程序在上电初始化例程中检查此位置数值,未修改过不计数,已修改成另一码则累计定时器计数值。下位机定时器计数到一定值时通知上位机即可。
既然有上位机,直接上位机做不是更好?
littleshrimp 发表于 2019-6-29 18:00 其实计算启动次数和运行时间就可以了 不需要实时时钟
谢谢!那要是断电重启定时时间不就没了吗?
本帖最后由 chenbingjy 于 2019-7-1 08:08 编辑引用: maychang 发表于 2019-6-29 18:02 不一定要用时钟芯片吧? 既然有上位机和下位机,下位机烧入程序时在可擦除存储器某一位置写入一个初始码 ...
谢谢!你说的是用定时器定时。那要是断电重启时间就没有了。
引用: chenbingjy 发表于 2019-7-1 08:07
littleshrimp 发表于 2019-6-29 18:00 其实计算启动次数和运行时间就可以了 不需要实时时钟
谢谢! ...
引用: chenbingjy 发表于 2019-7-1 08:08 谢谢!你说的是用定时器定时。那要是断电重启时间就没有了。
每次把已运行时间写入flash保存即可。
每次断电会造成一定时间误差,但这点误差对你们收款没有多大影响。
引用: chenbingjy 发表于 2019-7-1 13:45 断电的时候存吗?那如何判断掉电呢?
如果主控单片机内有EEPROM或FLASH的话,可以每隔一个固定的时间计数一次(比如1小时),并写入进去,达到上限后要求输入注册码。如果单片机内没有的话,需要外挂一颗EEPROM(比如24C02系列的)。不过一般都会有掉电保持的存储空间,不然没地方保存配置数据啊。DS1302在备用电池掉电后,日期应该会被清零的,可能不合适用啊。
多数芯片都有掉电检测,可以在单片机将要掉电时中断单片机,就可以检测到啦。不知道你的设备是不是允许断电。只要在设备中加电池,程序中不断的增量保存进时钟芯片的RAM中,断电检测到了把当时的时间点保存到RAM中。
引用: java_bm 发表于 2019-7-1 14:14 如果主控单片机内有EEPROM或FLASH的话,可以每隔一个固定的时间计数一次(比如1小时),并写入进去,达到 ...
谢谢!你说的这个可以。
引用: bigbat 发表于 2019-7-1 14:53 多数芯片都有掉电检测,可以在单片机将要掉电时中断单片机,就可以检测到啦。不知道你的设备是不是允许断电 ...
谢谢!还没用过STM32的掉电检测,我查查资料。
引用: huo_hu 发表于 2019-7-1 16:40 写flash或eeprom可以的,开一块存储,出厂前擦除,每分钟写一位,存储块全0不允许再用.不需要掉电什么的.ds1302 ...
谢谢!你说的有道理。
引用: chunyang 发表于 2019-7-1 23:08 这里的“时钟”可未必是实时时钟,也没必要用实时时钟,除非系统本身的功能有这方面的要求。如果 ...
我不明白,怎么能用上位机实现呢?如果客户修改了系统时间如何是好?