有一小段时刻没有来空间扫一扫雪了,前段日子把避障小车总算做了出来,时刻比较忙还来不及拿出来和咱们共享,这些天由于要公司要做一款UNO操控板,之前感觉自己比较逗留在对单片机的编写程序上,疏忽了对单片机内部的一些寄存器的了解上,当然在学习PIC的时分会去了解里边的结构,比方AD和DA的分频,中止里边寄存器的操控,SPI操控的结构等。可是在AVR这方面还真是大大的短缺。
UNO是arduino一个开源的产品,基本上驱动程序,bootload等都能够在其官方上找到,不过说句真实的,由于一向没有成功写进atmega8u2-mc这款操控器里边,一向在置疑着自己找到的是不是正确的bootload的。就这样子弄了两个星期无果,自己抑郁,公司估量也很抑郁。中心时断时续地焊了几块板,简直把打样的板子都快用光了,刚开端置疑是atmega8u2-mc焊接有问题,究竟公司也是第一次焊QFN的封装,并且两个焊盘距离小得我在默许PCB画图的时分软件老会报错。在两个星期后总算开端把问题弄了个明亮。
在逛arduino官网的时分,一向没有找到关于USB转串口的模块,也便是atmega8u2-mu是怎样下载程序的,之前在提议下公司买了一个专用的下载器,在通过无数次下载程序后发现烧写得进去,可是如同仍是行不通的。一向以来没有对UNO里边ISP下载有所主意,一向认为是给主操控部分mega328/168藏着的两个ISP下载串口,实际上只能说自己太大意了。
直到忽然在看我画的PCB板的时分茅塞顿开,怎样周围那个ISP接口是跟ATMEGA8U2连在一同的呢?别的,看了一下数据手册,所接的串口还真的是ATMEGA8U2的ISP。
便是少了这个发现的情况下,让自己吃了不少夸呀。实践证明这儿才是ATMEG8U2的下载口。
其时那个心境真的是无法形容,赶忙来了一个USBASP下载器(这个下载器是我自己的,当做为公司做贡献了),规范板本基本上是10个接口的,可是ATMEGA8U2是6个引脚的,不过这个关于我却是好办,在avr单片机论坛http://www.51hei.com/bbs/mcu-avr-1.html查了相关材料,把10口的引脚做成了6个引脚就搞定了。怀着忐忑的心境下载了程序,竟然很顺畅的下载到里边去了,下载界面显现:
把UNO插进电脑,竟然提示发现新硬件,并主动弹出一个装置驱动程序的下载框,心里那个快乐无法言表,翻开IDE也发现了com口了。依照我的惯性思想:有发现com口是能够正常下载程序了,接着是下载程序了,可是无法的事是下载程序的时分提示
看来是下载程序还有问题,这个问题看了下官网,按着解决办法弄了一个上午又没有什么发展。真是无语了,表明很蛋疼。
后来依据硬件在下载程序的时分灯的显现成果,电脑发送灯展亮,单片机接纳灯也没有问题,问题是它们和接纳有点不同步的感觉,我想有或许数据在那个地方丢掉了,再看了一些AVR单片机的材料,哎,这次总算知道是为什么了,原来是我设置熔丝位的时分没有设置好,这便是对AVR单片机没有深化了解的成果。记住之前学习PIC的时分,在最初总会写上__CONFIG(0x313b);而AVR则不同。在通过一天的研讨中,把公司的几个MEGA8U2熔丝位给弄坏了,总算在第五个的时分下载成功,IDE也发现在了COM口,下载程序给MEGA328的时分也顺畅了,搞了半个多月的UNO总算算是完美地画了一个句号。下面把我这些天的学习,个人对AVR的设置的观点拿出来跟咱们共享一下吧,或许对咱们研讨和学习AVR会有协助。
我用的是USBASP下载器,用的软件是网上随意都能够下载得到的progisp。
1.它在编程的时分为0,未编程的时分为1(这儿跟咱们平常编程或许有点相反,我吃过这夸了,烧坏了两个芯片今后发现了这个问题,其实网上也有许多这方面材料,要是自己能够早点看到他人写的文章给阐明一下就好了。自己能够给公司省几块还算值钱的IC呢)。
加密位设置:LB2,LB1为1,0或许0,0时,不能通过任何方法读取芯片内部的flash和eeprom数据。可是熔丝位的状况依然能够读取,仅仅不是能修正。由于UNO能够确认bootload程序没有问题,并且考虑到用户买咱们产品的时分会不小心修正掉bootload。所以我这儿设置为了0,0.这个对一些技能比较凶猛的高手关于程序的维护或许会有很大协助。这也便是我在上一篇文章中说到的AVR的保密性比P%&&&&&%高的原因。
WTDON为看门狗设置,1表明要用软件操控WTD(看门狗)才翻开,0表明不必软件操控WTD一向翻开,用户只能使用软件操控WTD的溢出时刻。由于咱们平常基本上都是不会让WTD一向作业的,所以我在UNO里选1,主张咱们设置的时分也选一,要用的时分咱们用软件操控就行了。呵呵。用软件操控感觉也不是很费事。
SPIEN,这个设置是要害,1表明制止编程,之前我设置成1,下载程序的时分一向显现形式不对,选0下载成功。原因在于我用的下载方法是SPI下载的。所以这儿要翻开才行。
bootrst表明上电后从0x00履行仍是bootload区履行,我设置的时分是0.表明从0x00开端履行,AVR单片机作业那么快,呵呵,多让它作业点没事,也不碍时刻。所以我设置了0x00。实际上在UNO这儿设置为1也是能够的。
6.体系时钟源的设置:1111-1010表明外接晶振,其它比方内部晶振,RC振动我就不写啦,咱们感兴趣的能够Q我,咱们一同学习或许查一查材料。
CKOPT,CKSEL3 KSEL2,KSEL1,KSEL0.设置的是起振时%&&&&&%的容量,由于我用的是外部晶振,22pF的方法供给时钟源,所以设置为:1,1,1,1.之前没有设置,所以导致了单片机不知道用那个作为时钟源,导致时钟紊乱,所以也便是我看到的程序传输时接纳和发送灯的闪亮问题。通过验证原因出在这儿。
大约就这么多吧,当然要设置的还有其它,呵呵。时刻比较有限,所以仅仅把我用到的进行了研讨,其它一些位就等候今后再研讨了。