步骤1:开始
上周,我决定使用ATMEGA328P-PU制作经典的Arduino克隆。我似乎是如此的轻松和快速,但对我来说却是一个非常糟糕的惊喜:我向便宜的ATMEGA328-PU(非P !!)表示了非微微功耗。
区别:这款IC需要更多的能量,并且与arduino ISP Bootloader不兼容(请参阅错误的签名)。所以我有点失望。
我在网上寻找一种引导这种电路的方法:找到了很多方法,但是没有一个可以在Arduino 1.0.6上运行。所以我测试了我的一个:所有这些技巧之间的某种混合。我现在将其提供给您。..
步骤2:要使用的原理图和引导程序:
您可以在:
https://www.arduino.cc/zh/Tutorial/ArduinoISP
上轻松找到它我使用了一个原型板上连接照片上的所有电缆(板上的组件都是装饰性的)。
然后,您必须执行以下步骤:
1-在您的arduino中下载著名的示例“ arduinoISP”,然后关闭Arduino 1.0.6
2-备份arduino/hardware/tools/etc/avrdude.conf并执行以下更改(在Notepad ++中,对于我来说是8080行):
#----------------------------- -------------------------------
#ATmega328
#- -------------------------------------------------- --------
部分
id =“ m328”;
desc =“ ATmega328”;
has_debugwire =是;
flash_instr = 0xB6、0x01、0x11;
eeprom_instr = 0xBD,0xF2、0xBD,0xE1、0xBB,0xCF,0xB4、0x00,
0xBE,0x01、0x B6、0x01、0xBC,0x00、0xBB,0xBF,
0x99、0xF9、0xBB,0xAF;
stk500_devcode = 0x86;
#avr910_devcode = 0x;
签名= 0x1e 0x95 0x14; #请勿更改
pagel = 0xd7;
bs2 = 0xc2;
chip_erase_delay = 9000;
pgm_enable =“ 1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1”,
“ xxxxxxxxxxxxxxxx”;
chip_erase =“ 1 0 1 0 1 1 0 0 1 0 0 xxxxx“,
” xxxxxxxxxxxxxxxx“;
超时= 200;
stabdelay = 100;
cmdexedelay = 25;
synchloops = 32;
bytedelay = 0;
pollindex = 3;
pollvalue = 0x53;
predelay = 1;
postdelay = 1;
pollmethod = 1;
pp_controlstack =
0x0E ,0x1E,0x0F,0x1F,0x2E,0x3E,0x2F,0x3F,
0x4E,0x5E,0x4F,0x5F,0x6E,0x7E,0x6F,0x7F,
0x66、0x76, ,0x77、0x6A,0x7A,0x6B,0x7B,
0xBE,0xFD,0x00、0x01、0x00、0x00、0x00、0x00;
hventerstabdelay = 100;
progmodedelay = 0;
锁存周期= 5;
togglevtg = 1;
poweroffdelay = 15;
resetdelayms = 1;
resetdelayus = 0;
hvleavestabdelay = 15;
已重置elay = 15;
chiperasepulsewidth = 0;
chiperasepolltimeout = 10;
programfusepulsewidth = 0;
programfusepolltimeout = 5;
programlockpulsewidth = 0;
programlockpolltimeout = 5;
ocdrev = 1;
内存“ eeprom”
已分页=否;
page_size = 4;
大小= 1024;
min_write_delay = 3600;
max_write_delay = 3600;
readback_p1 = 0xff;
readback_p2 = 0xff;
read =“ 1 0 1 0 0 0 0 0”,
“ 0 0 0 xxx a9 a8“,
” a7 a6 a5 a4 a3 a2 a1 a0“,
” oooooooo“;
写=” 1 1 0 0 0 0 0 0“,
” 0 0 0 xxx a9 a8“,
” a7 a6 a5 a4 a3 a2 a1 a0“,
” iiiiiiii“;
loadpage_lo =“ 1 1 0 0 0 0 0 0 1”,
“ 0 0 0 0 0 0 0 0 0”,
“ 0 0 0 0 0 0 a1 a0“,
” iiiiiiii“;
writepage =” 1 1 0 0 0 0 0 1 0“,
” 0 0 xxxx a9 a8“ ,
“ a7 a6 a5 a4 a3 a2 0 0”,
“ xxxxxxxx”;
模式= 0x41;
延迟= 20;
块大小= 4;
readsize = 256;
;
内存“闪存”
页面=是;
大小= 32768;
page_size = 128;
num_pages = 256;
min_write_delay = 4500;
max_write_delay = 4500;
readback_p1 = 0xff;
readback_p2 = 0xff;
read_lo =“ 0 0 1 0 0 0 0 0”,
“ 0 0 a13 a12 a11 a10 a9 a8“,
” a7 a6 a5 a4 a3 a2 a1 a0“,
” oooooooo“;
read_hi =” 0 0 1 0 1 0 0 0 “,
” 0 0 a13 a12 a11 a10 a9 a8“,
” a7 a6 a5 a4 a3 a2 a1 a0“,
” oooooooo“;
loadpage_lo =“ 0 1 0 0 0 0 0 0 0”,
“ 0 0 0 xxxxx”,
“ xx a5 a4 a3 a2 a1 a0a”,
“ iiiiiiii”;
loadpage_hi =“ 0 1 0 0 1 0 0 0 0”,
“ 0 0 0 xxxxx”,
“ xx a5 a4 a3 a2 a1 a0”,
“ iiiiiiii”;
writepage =“ 0 1 0 0 1 1 0 0”,
“ 0 0 a13 a12 a11 a10 a9 a8”,
“ a7 a6 xxxxxx”,
“ xxxxxxxx”;
模式= 0x41;
延迟= 6;
块大小= 128;
读取大小= 256 ;
;
内存“ lfuse”
size = 1;
min_write_delay = 4500;
max_write_delay = 4500;
读取=“ 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0”,
“ xxxxxxxxoooooooo”;
写入=“ 1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0”,
“ xxxxxxxxiiiiiiii”;
;
内存“ hfuse”
size = 1;
min_write_delay = 4500;
max_write_delay = 4500;
read =“ 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0“,
” xxxxxxxxoooooooo“;
写=” 1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0“,
“ xxxxxxxxiiiiiiii”;
;
内存“浪费”
size = 1;
min_write_delay = 4500;
max_write_delay = 4500;
读取=“ 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0”,
“ xxxxxxxxxxxxxooo “;
写入=” 1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0 0“,
” xxxxxxxxxxxxxiii“;
;
内存“锁定”
size = 1;
min_write_delay = 4500;
max_write_delay = 4500;
REA d =“ 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0”,
“ xxxxxxxxxxoooooo”;
写入=“ 1 0 1 0 1 1 0 0 1 1 1 xxxxx“,
” xxxxxxxx 1 1 iiiiii“;
;
内存“校准”
size = 1;
读取=“ 0 0 1 1 1 0 0 0 0 0 0 xxxxx”,
“ 0 0 0 0 0 0 0 0 oooooooo”;
;
内存“签名”
size = 3;
读取=“ 0 0 1 1 0 0 0 0 0 0 0 xxxxx”,
“ xxxxxx a1 a0 oooooooo”;
;
;
部分父级“ m328”
id =“ m328p “;
desc =” ATmega328P“;
#signature = 0x1e 0x95 0x0F; #将其更改为:
签名= 0x1e 0x95 0x14;
ocdrev = 1;
;
#--------------- -------------------------------------------------- -----------------------------
#------------- -------------------------------------------------- -------------------------------
我给您最初的 avrdude.conf ,然后将修改后的文件保存到2个存档中。
3-运行ARDUINO 1.0.6
4-板Arduino Duemilanove或Diecemilia
5-选择合适的处理器:Atmega328
6-选择Arduino的ISP
7-刻录引导程序
8-关闭ARDUINO 1.0.6,将avrdude替换为您备份的原始文件。
9-,现在您必须更改文件arduino/hardware/arduino/avr/boards.txt,以使用这种电路显示新的电路板名称。我叫它: Arduino Uno w/ATmega328(非P)
您必须在其中插入的文本:
### ################################################## #########
uno328.name = Arduino Uno带ATmega328(非P)
uno328.upload.tool = avrdude
uno328.upload.protocol = Arduino的
uno328.upload.maximum_size = 32256
uno328.upload.speed = 115200
uno328.bootloader.low_fuses = 0xff的
uno328.bootloader.high_fuses =写0xDE
uno328.bootloader.extended_fuses = 0×05
uno328.bootloader.path = optiboot
uno328 .bootloader.file = optiboot_atmega328.hex
uno328.bootloader.unlock_bits = 0x3F的
uno328.bootloader.lock_bits =为0x0F
uno328.build.mcu = atmega328
uno328.build.f_cpu = 16000000L
uno328.build.core = Arduino的
uno328.build.variant =标准
保存
我将文件放在提供的存档中。
10-现在,您可以使用ARDUINO 1.0.6对带有Arduino uno的UNO板进行编程卡或atmega328-pu/16MHz具有在我的示例中,带有USBasp的 Arduino Uno带ATmega328(非P)卡。
步骤3:示意图克隆示例的实例:由Atmega328-PU Non P制成!课程
此卡用于我的一个项目:6轴机器人。它需要强大的5V DC电源电压。
在图片上,我很容易在克隆的顶部安装了一个ETHERNET屏蔽,您可以看到USBasp下载相应的程序。
第4步:结论:
我希望它会帮助一些购买了错误但最便宜的atmega328-PU non P的人!
责任编辑:wv
-
Arduino
+关注
关注
187文章
6462浏览量
186615 -
Atmega328P
+关注
关注
4文章
56浏览量
17199
发布评论请先 登录
相关推荐
评论