使用Arduino Diecimila(Uno)给Atmega328P烧写BootLoader
我有一个旧的Arduino Diecimila的和一些新的Atmega328p -PU芯片。不应该有,但我带来一些没有引导程序的来节省一些钱。
接下来是什么?搜索操作步骤,看看我是否能烧引导程序到这些芯片。不幸的是无法工作。出现一个错误消息"avrdude: stk500_getsync(): not in sync: resp=0x00 avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x51"。
有一个办法是焊接Arduino Diecimila上的一些引脚来解决这个问题,但是,Arduino是我唯一有的一个,所以我并不想改变我的工作板。
步骤1:打开sketch ArduinoISP和连接电线
所以,我打开ArduinoISP sketch 检查。然后发现大多数操作步骤已经错过了一个环节:连接Arduino的pin 10到Atemega328P的pin 1(复位)。我连接那根线,然后一切正常。当然那是多次尝试后才有的事。
连接如截图所示。第一列是指到Arduino Diecimila,第二列是指Atmega328p,
Pin 10 - >pin 1(在我这里,这是非常重要的,如果没有它,IDE会提示错误,然后烧录失败)
Pins 13, 12, 11 -> pins 19, 18, 17
Pins 10 -> pin 1
Vcc -> pins 7, 20
Gnd -> pins 8, 22
然后连接晶振和电容到Atmega328p
晶振16Mhz -> pins 9, 10
电容22pf -> pins 8,9
电容22pf -> pins 8, 10
现在硬件部分搞定。然后把Arudino Diecimila插入到您的计算机,并按照下一个步骤走。步骤2:下载ArduionISP程序和开始烧写bootloader
我知道我的Arduino是内嵌Atmega168p的Diecimila,我将要烧录Arduino UNO到我的Atmega328p,现在开始。
首先上传程序把我的Diecimila设置为ArduioISP
1、选择Tools -> Board -> Arduion Diecimila,Duemilanove,或Nano w/ ATmega168
注:如果你使用Arduino Uno,方法相同,选择Tools -> Board -> Arduion Uno
2、编译然后上传ArduinoISP sketch。您应该看到“完成上传”
3、现在选择Tools - > Board - > Arduino UNO
4、选择Tools - > Burn Bootloader - > w/ Arduino as ISP,在一分钟内,你应该看到“完成烧录bootloader”
如果你是幸运的,你很容易在一分钟内到达步骤4。要烧第二Atmega328p,拔下USB电缆,交换一个新的328p到你的面包板再插上USB线,并再次运行步骤4。
如果发现任何错误,检查接线,然后再一次按照步骤一个一个操作一遍。
步骤3: 测试烧写完bootloaded 的Atmega328p
要测试有bootloader后的Atmega328p能否工作,我只是用它换下我的Arduino Diecimila 上的Atmega168,然后按照正常sketch上传程序步骤,如下。
1、加载Blink程序。改变LED的开启和关闭时间,所以你知道atmega328p中运行的程序是你独一无二的程序
2、从Arduino的IDE中,选择Tools -> Board -> Arduino UNO
3、把LED插入您的Arduino GND脚和pin 13之间
4、用Atmega328p换下Atemega168。当你拔下芯片时要小心。越轻柔,损坏芯片的可能
越小。我用了两个针头,以帮助拔下芯片:)
5、把Arduino插回到您的计算机。确保你听到哔一声,电脑确认识别到你的板
6、编译并上传。那么你应该看到你在第1步中设置的LED闪烁的方式。
如果不工作,请检查第2步,并遵循上述步骤再试。
为了测试另一片Atmega328p,重复步骤4至6。
这就是一切。享受它。