金牌会员
- 积分
- 1015
- 金钱
- 1015
- 注册时间
- 2012-7-16
- 在线时间
- 25 小时
|
演示视频:
板子的资源如下:
这是我本科毕业前的一个作品,工作快4个月了,虽然手里焊过调试过的板子没有一千,也有八百了,但,还是自己的看着亲啊!正如歌手少司命所说:
如果不再满意别人为你建造的越来越嘈杂的世界,那么自己动手建一个吧,虽然简陋,却足够承载自己的那些白日梦!
现在拿出来开源到底,包括PCB、元件库,大家可以随意引用或更改文档、代码、PCB,只需新浪微博@weifengdq即可,不必等待作者同意。
目前完成的资料(希望至少有点STC89C52的基础看看,当然但愿对于所有的电子爱好者来说,有点参考价值)有:
其中1个小时的视频教程,稍微有点STC89C52基础的1小时入门应该没有问题。
手册目录如下:
IAP15F2K61S2是STC目前主推的单片机,老姚STC官网截图为证:
虽然早就耍过STM32了,但心中总有一个想法:做一块自己的开发板,又恰逢大四下带学弟学妹学单片机,不想索然无味的教,去年电赛的时候了解过STC新推出的IAP15,看中了可仿真、自带复位电路、33.1776MHz的内部时钟,索性就拿来直接教了,虽然我也是第一次用。这样,直到我大学毕业,期间一共画了5版IAP15的板子:
可以看出,从第3版(学校的航模大赛期间画的)开始才基本定型,第5版是修复了第4版的Bug后的定型版。
板上放了500mA.h的聚合物锂电池(自带过充、过放保护电路),使用海绵胶粘到了电路板上,板子上有TP4057锂电池充电管理芯片和CE8301升压电路(输出5V):
两个摇杆,10个独立按键(仿照天地飞和游戏手柄),可以做什么,你懂的!
程序自适应主时钟:使用内部时钟,可以在下载软件中使用5.5296、6、11.0592、12、18.432、20、22.1184、24、27、30、33.1776MHz的任意频率,默认所有程序运行在最高频率33.1776MHz,但程序是可以自适应主时钟的。
关于IAP15的仿真,2013年8月刚拿到IAP15这个片子时,我死活仿真不到33.1776MHz,还以为是芯片Bug,当时在博客上妄下结论,但到了2014年,一个偶然的机会我才发现,原来使用PL2303只能到6M,使用CH340却是可以仿真到33.1776MHz!困扰了我一年的问题也解决了,后来又发现仿真时串口1切换到P36/P37还可以照常使用!看来永远没有终点,也永远没有完美吧!完美不大会让人体会到喜悦,追求完美会让人很累。
程序编写的基本思想如下图解释,实现1s亮灯一次,一看便知:
程序中大量使用全局变量标志位,每一个任务给一个标志位,在定时器中断中进行调度,在while中执行任务。这样,初始化后的主程序完全没有了ms级的Delay,大大提高了CPU的效率,有人问按键的代码呢?使用了静态变量,通过定时器中断消抖,基本不占用CPU。
关于打游戏那段,是我的大学舍友毕业前用Python花了一个下午写的,包括上下位机的协议制定,都是他完成的!是用串口虚拟按键。
千言万语说不尽,一切尽在代码中!
关于编码器的专题:
其实是很久就有的一些想法,只不过未实践过,应该可行:
如M法测速(记取一个采样周期Tc内旋转编码器发出的脉冲个数M来算出转速n)的公式为:
采样周期Tc可以用一个定时器中断来实现,单片机对外唯一需要做的是捕获脉冲,而捕获脉冲的方法大体有:
(1)定时器的计数器模式,来一个脉冲计一个数(传统的51单片机都有Timer0、Timer1,STC89C52和IAP15F2K61S2均有Timer2,STC12系列没有Timer2。STM32的定时器有一大堆,不过可以直接配置为正交编码模式)。
(2)外部中断(一般都有INT0、INT1,有的有INT2、INT3等),如STC89C52有INT0、INT1,支持下降沿触发和低电平触发。IAPF2K61S2有INT0~4共5路外部中断,其中INT0和INT1支持上升沿或下降沿均可触发方式和仅下降沿触发方式、INT2、INT3和INT4仅支持下降沿触发模式。
(3)PCA (可编程计数器阵列Programmable Counter Array)脉冲捕获(STC12C5A有2路、STC12C56有4路、STC15F2K有3路。STM32的普通定时器即可实现脉冲捕获)。
使用IAP15F2K61S2的一个定时器做时基定时器测速,剩余的2个定时器计数器+5路外部中断+3路PCA=10路编码器测速,再占用10个IO口可以判断编码器旋转方向。其中INT0、INT1和3路PCA是可以上升沿下降沿均捕获,是可以编码器2倍频的。
那么问题来了:
这样,给10个编码器测速,合适么?小伙伴们可以自由讨论,演示程序使用了定时器1的计数器模式来计数,只记数不中断,这样,基本避免了CPU频繁中断,另一方面,在定时器0的中断中速度也能测出来了!
附件中给出了PCB文件,手册,例程,上位机软件,其他的视频教程、资料、文档、代码、最小系统的PCB可以到我的微博中下载,最新的视频、例程、BUG修复也会第一时间在我的新浪微博:weifengdq更新,欢迎大家关注!也欢迎小伙伴们反馈问题,我的邮箱:weifengdq@163.com!目前仅有手工焊接的慕司板十余套,PCB已开源,样板可以到我的微博中找链接。
昨晚刚刚预订了原子哥的探索者,敬佩原子哥那么多重量级资料的开源,祝原子哥大卖!
|
|