如何烧录 arduino 的 bootloader
展开全部 为了恢复Arduino的功能,必须得重新给ATMega328P单片机里烧写bootloader(其实Arduino就是在AVR单片机中预置了一个bootloader程序,这样再配合Arduino开发环境就是所谓的Arduino了,但Arduino这个词本身只留给官方使用)。
当然在淘宝上也能买到已经烧写好的AVR单片机,只是自己手上已经有了AVR单片机,就没必要去花那冤枉钱了。
于是马上打开万能的百度,输入关键字“Arduino bootloader”果然,一大堆乱七八糟相关的问题就出来了,经过一轮的筛选,发现许多说的也并不是很清晰,不过让我明白了个大概:一个普通的AVR单片机确实能烧写bootloader之后作为Arduino使用。
那么问题来了,如何把bootloader烧录到AVR单片机中去了?这的确是个问题,反正对于不懂AVR开发的我来说是个问题。
不过还好之前在淘宝上买了一个USBASP下载器,跟之前擦除bootloader一样,也要用到progisp软件(因为此时的ATMega328P只是一个普通的AVR单片机,用Arduino开发软件是烧写不进去的)。
既然要烧录bootloader,那么什么是bootloader呢?正如你所想,bootloader当然是一个程序,既然要烧录到单片机中去,应该是一个.HEX之类的文件。
但是,bootloader文件从哪来呢?继续百度。
。
。
找到了,在Arduino软件安装目录中的hardware\arduino中。
此文件夹下的“boards.txt”文件很重要,是很重要,其他的或许都可以在百度上找到,但因为这个文件折腾了我大半个晚上,百度上也没有明确的说明。
打开文件,找到自己对应的Arduino版本,因为我的是“Arduino Uno”,于是锁定“uno.name=Arduino Uno”区域的说明,因为看上去很乱,一定要仔细去看。
找到“uno.bootloader.low_fuses=0xff"指编程熔丝低位为FF,”uno.bootloader.high_fuses=0xde“指编程熔丝高位为DE,”uno.bootloader.extended_fuses=0x05“指扩展位为05。
这三个值非常重要,是决定你烧录bootloader成功的关键。
至于这三个值具体是什么意思,我也不是很不清楚,但AVR单片机的烧录时需要设置熔丝位,而且不能乱设置,这也是AVR跟51单片机的不同之处。
用progisp软件把这三个熔丝位的值写入到AVR单片机中,然后继续浏览”boards.txt“文件往下看,找到”uno.bootloader.path=optiboot“这就是说要烧录的bootloader文件在bootloaders\option文件夹中,“uno.bootloader.file=optiboot_atmega328.hex”文件名就是optiboot_atmega328.hex,这就是接下来需要烧录到AVR单片机中的程序。
用progisp软件调入此文件,然后直接写入到AVR单片机中就行了,一个支持Arduino的AVR就做好了。
。
。
其实这个问题本身不难,但对于没接触过AVR的人来说,还是要花许多时间的,中间也会存在许许多多各种各样的问题。
至于progisp的使用方法很简单,百度上的教程也很多,还有手上必须有一块可以烧录AVR单片机的下载器。
我当时就是忽略了那三个熔丝位的值,所以反反复复也没有成功,百度上面也没有对”boards.txt“文件做详细的解释。
没设置熔丝位程序是可以正常的烧录进去,但Arduino是不能用的,所以必须要按照官网给出的说明操作。
我当时大多数时间主要花在两个问题上,一个是.HEX文件具体位置,因为Arduino有不同的版本,所以.HEX文件也不同,还有一个就是熔丝位上。
Arduino mini Pro 项目过大无法烧录
连完线之后,就可以进行第一步操作了:打开arduino编程软件,选择“文件”/”示例”/”arduinoisp”在跳出新的窗口界面点击“工具”/“板”/”arduino Pro mini ”之后再点击“工具”/”程序 员”/“usbtinyisp”完了之后再点击上传,在编译提示栏出现英文字母的时候在按下复位键,就可以完成下载了。
第一部步完成之后就可以进行第二部步的操作了:点击“工具”/“板”/”arduino uno”后在点击“工具”/”程序员”/“arduino as isp”之后在点击“工具”/”烧录引导程序”过了一会儿就会提示烧录引导程序完成,都完成之后你就可以用pl2303或是max232进行下载了。
arduino1.5.2的图形化编程怎么改成中文
大部分是基于atmel的单片机,其中atmega328p和mega2560占主要。
除了是一个单片机的最小系统外,大多数arduino的型号支持用过usb口连接电脑下载程序,使用过程简单。
最重要的,arduino使用自己的集成开发环境,预先将一些操作指令封装成了函数,这样,即使操作者对单片机的内部寄存器不了解,仍可以顺利的完成编程。
比如,延时,一般单片机的延时程序需要使用者自己写程序,arduino中只要用delay这样的函数就可以了。
再比如arduino的经典例子-点亮一个灯,是通过digitalwrite实现的,而不是用set之类的语句。
总之,arduino是对单片机的使用进行了包装,使其更适合没有基础的人。
求一份arduino控制isd1820的实例程序
SD卡体积小,价格便宜,因此在许多工业数据记录和家用电子产品中有越来越多的应用。
Arduino可以通过SPI接口与之通信,进行诸如建立文件、删除文件、向文件中添加内容、修改文件等操作,这样采用Arduino配合SD卡可以开发数据记录设备。
Arduino与SD卡的简单连接,只需要6只电阻和1张SD卡,通过软件模拟的方式实现SPI接口,Arduino与SD卡连接电路如图2所示。
2.gif图2 Arduino与SD卡连接电路由于SD卡的操作电压为3.3 V,而Arduino的逻辑电压为5 V,因此需要用起分压作用的电阻(本文采用了Josh Adams书中的验证性电路),在实际的应用中最好采用分压模块以保证卡和Arduino板的安全。
之后在网址http://code.google.com/p/sdfatlib/下载Bill Greiman开发的SdFat.h和SdFatUtil.h头文件和库文件,并安装到Arduino安装目录中的库文件夹中就可以使用了。
简化程序如下:#include#includeSd2Card card;SdVolume volume;SdFile root,file;void writeString(SdFile& f,char * str){Uint8_t n;for(n=0;,str[n];n++)F.write((uint8_t*) str,n)}void setup(){card.init(SPI_HALF_SPEED);root.openRoot(&volume);File.open(&root,“testfile.txt”,0_CREAT|0_EXCL|0_WRITE);File.timestamp(2,2011,11,11,25.12.34.56);writeString(file,“something you want ”);File.cose();}void loop(){}将该程序下载到Arduino主控板内即可向SD卡内建立一个新的文件,并写入“something you want ”字符,当然也可以根据需要写入想要记录的信息。
程序的开头包含了两个头文件:SdFat.h和SdFatUtil.h。
这两个头文件定义了一些操作SD卡必需的类。
之后建立4个有关操作SD卡的对象。
然后自定义了一个向SD卡内写一个字符串的函数,这个函数需要一个文件的引用和一个字符串作为参数。
setup函数是Arduino软件项目中必须有的,做一些运行的初始化工作。
这个实例程序由于只是完成简单的写文件操作,因此对文件的写操作在这个函数中完成。
函数依次完成了设定SD卡的通信模式为SPI模式、打开卡的根目录、建立文件名为testfile.txt的文本文件、给文件添加时间信息、向文件内写入文件内容、关闭文件。
从以上的过程中看,采用Arduino操作SD卡上的文件与采用C语言操作PC上的文件十分相似,这也是Arduino易用性的体现,再一次验证了采用Arduino开发电子互动产品的方便性。
转载请注明出处51数据库 » arduino仿真软件 下载
丅1秒待續