转眼就一个月了,到公司实习也一个月了。期末到了,又是大四,学校的事情很多,过两天就回去学校,拍毕业照体检,接着就是四六级的考试,最后期末考试。刚好这些事情能凑到一块去,也比较好一起处理完。
这一个月,回头想想,真没做什么事情,而且公司给的唯一一个“作业”都没完成。虽然不算是自己的原因,光等着硬件来调试就足足等了两个多星期,正当我打算回学了,可是昨天模板又到了,就拿着开始调,其实也没太多的东西,关键就是一个I2C通信,主机模拟I2C,控制I2C从器件。
首先是测试通信有没有建立起来。
方法:先将初始值写入从机,再将它们读出来,放到单片机的bank1中。
读出来后,看到bank1里全为FF。错得一踏糊涂。
单步测试,发现从机没有ack应答信号,读ack时,sda始终为1。
继续查硬件,发现从机晶振两脚无电压,接示波器,无波形。原来是从机晶振不起振。我开始还从软件查起,把I2C的那几个子程序改得面目全非。
明天最后一天了,后天车票回学校,估计是调不好了,可能师兄明天还是不能给我个好的模板。这么久了还没完成这个“小作品”,心里很不爽,失败感一阵阵的。
再记录一下这次实习的一些收获吧。
上头给那个作业,是基于emc单片机的,学习了emc的单片机,基本了解了其的一些基本功能及用法。
在构架这个作业的程序框架时,接触到一种“时间片轮”的编程思想,这是我感觉比较有收获的一点,感谢etual的点拨,尝到了这种编程方法的甜头。不过感觉自己还只懂得了其皮毛而已,要将其精髓灵活运用还得以后做更大的作业的时候历练。
将按键扫描融入到时间片中去,由于硬件用三个io口接出了五个按键,采用一种叫“三脚搭”的方法,同时一个按键里又分了长按短按的复用判断。虽然很简单,但这里的处理让我想了很久。
在时间片轮思想的同时,开始学习ucos。在等模板的那两个多星期,一直在看ucos。同时学习操作系统、复习c语言。读源代码,才发现c的博大精深。要学习的东西实在太多了。
学习单片机、编程等知识的同时,一定要多思考,多总结,特别是要把别人的经典思想、自己的一些想记录下来。发现自己在这方面太欠缺了。
同时也发现自己学习中浅尝辄止的毛病,很多问题都没想透澈,没想明白,没领悟到精髓,也没有深入钻研。这跟也自己浮躁性格有关系,学东西时总想学得快,学得多,单片机还没怎么搞透就看起arm来了,造成许多知识都学得太浅。
规划一下回校后的学习内容:
1,ucos,并试着将其移植到51上。
2,系统学习C语言。
3,arm裸奔。(没办法,这个还是得先入门,作为一种基本的单片机应用。)
4,ucos到arm的移植。
写这点,明天到公司去把“作业”结一下,就可以收拾东西回学校了。