新手帖 用ARDUINO给MEGA2560刷BOOT
本帖最后由 darkorigin 于 2013-5-12 00:50 编辑首先对张老师在之前28J60模块调试中给予的帮助以及在此次刷BOOTLOADER中给予的帮助表示感谢!
之前一直怀疑自己的2560因为BOOT版本的原因导致28J60工作不正常
接着由于这个小项目的推进,购买了张老师的mircoduino以及其他模块若干(由于和此文无关暂且带过不表)
接着在论坛里面搜索了2560的刷BOOT过程(中间还无耻的拜了度娘),于是发现不管是各位大神还是各大论坛的ARDUINO教程中刷写ARDUINO主要集中在328P以及其他更廉价的模块,甚至是AVR芯片本身(于是各种构建于面包板的ARDUINO诞生了)
唯独看不见的就是1280以及2560的相关刷法。
经过了请教zcbzjx , 看ARDUINO的图纸,参考2560图纸,等等过程,算是绕了很多圈圈,最终将2560的BOOT成功的刷进去了。。。
备注: 以下称UNO(用来做ARDUINO刷写器的板子)为 UNO ,待刷的板子称作 MEGA;
下面贴出我实现的过程:
材料 :
mircoduino (其他所有兼容UNO的模块均可)作为ARDUINOISP例程 的载体
ARDUINO 2560mega (1280同2560 刷法一样) 作为待刷 BOOTLODER的ARDUINO
杜邦线(其实就是做实验的面包板线)6根
刷写过程:
1. 首先 使用ARDUINO 最新版本的IDE 打开FILE -Examples -Arduino ISP 并且按照文末的提示修改代码(算是一个小BUG)
2. 按照连接图连接好主从机(就是UNO和MEGA连接的关系),一定要确认之后再进行连接(连接过程之前拔掉2块板子的供电和COM口,仔细确认后UNO连接USB供电 此时MEGA已经不需要外部电源了,直接由UNO供电和重启),有些错误将导致硬件损坏;
3.检查你的COM口设置。COM口选择你UNO的端口()
BOAD选择 目标板的型号比如:MEGA (2560或者1280)
4.打开 TOOLS --- BurnBootloader
等待(大概5分钟,没计算时间)
刷好之后UNO会直接给MEGA发送重启的信号, 此时MEGA会如同新生一样,开始了第一个代码(13管脚闪灯代码) 看到13脚的LED闪烁MEGA刷机就完成了。
连接图:(之前就是因为连接方式的原因,纠结了几个小时,于是万用表,各种图纸,度娘 纷纷出马, 最后发现居然就在ARDUINO ISP程序的注释部分已经列出了接法)
pin name: not-mega: mega(1280 and 2560)
slave reset:10: 53
MOSI: 11: 51
MISO: 12: 50
SCK: 13: 52
具体连接方式
UNO MEGA
VCC -------------VCC(不用怀疑 不是VIN 是VCC 实测那个6脚ICMP的2口就是VCC)
GND -------------GND
D10脚------------- Reset(没错 就是VCC前面的脚 用来重新被刷的板子)
D11脚------------- 51脚(含义:MOSI)
D12脚------------- 50脚(含义:MISO)
D13脚------------- 52脚(含义 SCK 时钟)
要点:
首先 使用ARDUINO 最新版本的IDE 打开FILE -Examples -Arduino ISP
好吧 。很多同学看到这里,就会毫不犹豫的把UNO给刷上,然后连上线直接刷MEGA了,最后会有一个小惊喜(我卖个关子 后面细说)
由于1.0以后的BOOTLADER启动时间的缩短,校验固件有效性的时间也需要提前了,所以 ISP的代码要修改:
搜索heartbeat() 函数 函数末尾的 delay(40);修改成delay(20); 否则刷完之后会提示
其实仔细的看结果会发现只是校验出错;
其实反之也一样 2560给 328P刷BOOT接线方式:
mega uno
D51接 D11;
D50接 D12;
D52接 D13;
D53接 RESET;
VCC接 VCC;
GND 接 GND;
最后附上ICMP脚的连接图(这样就可以忽略被刷的MEGA和UNO管脚的区别了)
自己占楼 以备后用! 本帖最后由 zcbzjx 于 2013-5-12 07:45 编辑
为什么我修理一个盆友的2560用arduinoisp一直没刷进去嘞,接线肯定没错的啊,用最新的版本的ide,delay也是默认用的20,不用修改的,刷644pa 1284p都没问题啊。。。。最后用usbasp才刷入。。。我今天再试试。 拍一个视频教程解说一下,越详细越好,拜托了,强烈支持你:handshake 伟创电子工作室 发表于 2013-5-12 15:11 static/image/common/back.gif
拍一个视频教程解说一下,越详细越好,拜托了,强烈支持你
过程其实很简单,肯花时间去读ARDUINO.CC里面例程区里的那个帖子,然后再看看里面对应的脚就好了
而且我已经标注好脚了。 主要就是往一个好的ARDUINO里面写arduino SP程序,然后接线并检查连线和设置,最后就是点击烧写。 等待就好。
我主要是绕了弯路,找管脚对应关系找了半天。。。 然后自己不放心的排查了线路查了3次,确认线路无误就刷了。刷完之后看到 2560的D13LED在规律的闪动我就知道有戏。因为这个是默认的那个闪灯程序在运行了。 伟创电子工作室 发表于 2013-5-12 15:11 static/image/common/back.gif
拍一个视频教程解说一下,越详细越好,拜托了,强烈支持你
视频方面,因为设备有限。。。(没钱买单反,家里的光线不好老相机拍摄视频是糊的)
而且开始弄的时候也没拍 只是截图截了几张 伟创电子工作室 发表于 2013-5-12 15:11 static/image/common/back.gif
拍一个视频教程解说一下,越详细越好,拜托了,强烈支持你
一般没问题不用刷(有风险的。玩意接错脚了,刷失败了 要用专门的ISP刷回来的)
如果遇到问题可以联系我,我会尽量帮你 请教一下,我用uno给2560刷bootloader:
线 rst并不在VCC的对面啊,在isp接口的对角线上,可是发现还是刷不了:
报错如下:
请问该如何解决呢?求指教!非常感谢!
六针isp接线图:
恺之 发表于 2013-6-3 12:08 static/image/common/back.gif
请教一下,我用uno给2560刷bootloader:
线 rst并不在VCC的对面啊,在isp接口的对角线上,可是发现还是刷 ...
按说我那个图是对的。 那个是ARDUINO官网公布的。
你不放心用万用表测试一下(欧姆档) 直接能测试出来的。
还有就是你看下2560 R3版的有2个6pin口。分别是给16U2或者8U2那个和2560刷固件的。
老版本的可以用来自己给自己刷(用6PIN头连接2个口) pin name: not-mega: mega(1280 and 2560)
slave reset:10: 53
MOSI: 11: 51
MISO: 12: 50
SCK: 13: 52
直接是UNO的10口连接2560的53口
11 51
MOSI: 11: 51
MISO: 12: 50
SCK: 13: 52
VCC VCC VCC
GND GND GND
darkorigin 发表于 2013-6-3 22:54 static/image/common/back.gif
pin name: not-mega: mega(1280 and 2560)
slave reset:10: 53
MOSI:...
请问uno的10脚到底是接2560的53还是reset?又晕了…… 恺之 发表于 2013-6-4 21:55 static/image/common/back.gif
请问uno的10脚到底是接2560的53还是reset?又晕了……
当然reset
因为ARDUINO ISP需要用10脚给2560一个复位信号,重启副板 并且检测固件的有效性 恺之 发表于 2013-6-4 21:55 static/image/common/back.gif
请问uno的10脚到底是接2560的53还是reset?又晕了……
slave reset 这句话 意思就是从板(UNO作为主要的刷机程序板,2560作为从板)
从板要接reset 努力赚分ing.... hymeeg 发表于 2013-6-5 10:24 static/image/common/back.gif
努力赚分ing....
你太强了有了你,我也多赚了1分啊~~~~~哈哈~~~