darkorigin 发表于 2013-5-12 00:49:47

新手帖 用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管脚的区别了)

darkorigin 发表于 2013-5-12 00:51:24

自己占楼 以备后用!

zcbzjx 发表于 2013-5-12 07:37:23

本帖最后由 zcbzjx 于 2013-5-12 07:45 编辑

为什么我修理一个盆友的2560用arduinoisp一直没刷进去嘞,接线肯定没错的啊,用最新的版本的ide,delay也是默认用的20,不用修改的,刷644pa 1284p都没问题啊。。。。最后用usbasp才刷入。。。我今天再试试。

伟创电子工作室 发表于 2013-5-12 15:11:27

拍一个视频教程解说一下,越详细越好,拜托了,强烈支持你:handshake

darkorigin 发表于 2013-5-12 21:40:41

伟创电子工作室 发表于 2013-5-12 15:11 static/image/common/back.gif
拍一个视频教程解说一下,越详细越好,拜托了,强烈支持你

过程其实很简单,肯花时间去读ARDUINO.CC里面例程区里的那个帖子,然后再看看里面对应的脚就好了
而且我已经标注好脚了。 主要就是往一个好的ARDUINO里面写arduino SP程序,然后接线并检查连线和设置,最后就是点击烧写。 等待就好。

我主要是绕了弯路,找管脚对应关系找了半天。。。 然后自己不放心的排查了线路查了3次,确认线路无误就刷了。刷完之后看到 2560的D13LED在规律的闪动我就知道有戏。因为这个是默认的那个闪灯程序在运行了。

darkorigin 发表于 2013-5-12 21:41:56

伟创电子工作室 发表于 2013-5-12 15:11 static/image/common/back.gif
拍一个视频教程解说一下,越详细越好,拜托了,强烈支持你

视频方面,因为设备有限。。。(没钱买单反,家里的光线不好老相机拍摄视频是糊的)
而且开始弄的时候也没拍 只是截图截了几张

darkorigin 发表于 2013-5-12 21:43:04

伟创电子工作室 发表于 2013-5-12 15:11 static/image/common/back.gif
拍一个视频教程解说一下,越详细越好,拜托了,强烈支持你

一般没问题不用刷(有风险的。玩意接错脚了,刷失败了 要用专门的ISP刷回来的)
如果遇到问题可以联系我,我会尽量帮你

恺之 发表于 2013-6-3 12:08:17

请教一下,我用uno给2560刷bootloader:

线 rst并不在VCC的对面啊,在isp接口的对角线上,可是发现还是刷不了:

报错如下:




请问该如何解决呢?求指教!非常感谢!

六针isp接线图:



darkorigin 发表于 2013-6-3 22:52:24

恺之 发表于 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个口)

darkorigin 发表于 2013-6-3 22:54:35

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

恺之 发表于 2013-6-4 21:55:02

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?又晕了……

darkorigin 发表于 2013-6-4 23:21:16

恺之 发表于 2013-6-4 21:55 static/image/common/back.gif
请问uno的10脚到底是接2560的53还是reset?又晕了……

当然reset
因为ARDUINO ISP需要用10脚给2560一个复位信号,重启副板 并且检测固件的有效性

darkorigin 发表于 2013-6-4 23:23:10

恺之 发表于 2013-6-4 21:55 static/image/common/back.gif
请问uno的10脚到底是接2560的53还是reset?又晕了……

slave reset 这句话 意思就是从板(UNO作为主要的刷机程序板,2560作为从板)
从板要接reset

hymeeg 发表于 2013-6-5 10:24:12

努力赚分ing....

darkorigin 发表于 2013-6-5 11:02:37

hymeeg 发表于 2013-6-5 10:24 static/image/common/back.gif
努力赚分ing....

你太强了有了你,我也多赚了1分啊~~~~~哈哈~~~
页: [1] 2 3
查看完整版本: 新手帖 用ARDUINO给MEGA2560刷BOOT