我目前一个项目是32路充电电流监控表,平时显示各路电流值,当有异常时报警,并定时把监控情况上传到上位机。
芯片采用STC12C56S2,由于电流是pwm输出的,使用移动平均法比较接近有效值,这样需要大量的采样点才能得出结果。同时还要驱动tm1640驱动32个3位数码管,再加一个19264液晶屏显示当前总电流、平均电流、异常情况和参考值,还有红外遥控接收(主机没有任何按钮),电流异常报警、与上位机通讯等。
我担心的是任务太多了,会不会把芯片给累坏了。
这个需要你仔细计算一下每个任务占用的时间。
51上也有不错的简单RTOS:RTX51tiny(C51自带),可以很好的分配各个任务,简化程序的逻辑,提高运行效率,你可以试试。
本帖最后由 dcexpert 于 2015-2-27 22:45 编辑
不同的程序差异很大,尽量减少逻辑、使用片上硬资源、优化算法...这里面一言难尽。
如果不用点心思即便是arm也转不动了。
这可能是我做的最复杂的一个系统,PCB还没有排板,请各位指导一下。
另外一个方案是使用两片stc:一片负责AD采样和电流计算,定时把结果通过spi送到主控芯片,减轻主控芯片的负担。这样不知道会不会好一点?
谢谢各位指点,我还是打个样先做出来,看看到底有多卡,再考虑进行下一步的优化和改进。
慢而已。。。就像电脑装多了软件一样。
https://bbs.eeworld.com.cn/thread-471646-1-1.html
欢迎加入我的团队
单片机就是干这个活地,累用它干么???
http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
任务不算重,引脚够用就行,处理STC的单片机够用了,关键是反应时间有无要求,比如每路电流检测的频率有无要求 本帖最后由 Terrycth 于 2015-2-28 12:40 编辑
是轮流检测吗??如果灵敏度要求高51应该吃不消,试试高级一点的芯片吧
15楼正解
卡不卡,要看你对机器相应速度的需求,如果需求足够宽松,卡一点也只是影响使用体验
如果所有这些任务放一个机器上跑,机器性能是瓶颈,有些任务处理满足不了响应需求,那就不是卡不卡的问题了
刷新率要求不高,每秒刷新一次电流值就可以了,然后每三秒上传一次到上位机。因为点数多,大概有90个终端,每个终端有30个点,上传得太快电脑也吃不消。
通讯方面我打算每9个终端合并成为一个485通讯主机,这样总的只需要10个通讯主机,可以简化通讯模式。
你用的这些东西都不需要比较复杂的运算, 比如TM1640和液晶,都是有更新的时候用一下。1秒钟修改两三次就够了,不需要太多资源。关键是你对电流采样有没有时间长的要求,如果要求不高的话循环采集,周期稍长点儿也没有问题。再一个看你的程序结构设计的合理不合理,任务分配的合理不合理。
如果没有特殊要求,应该没有问题,单片机不怕累。而且单片机运行起来就没有闲着的时候,运行正常任务和空指令没有多大区别。