步驟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
+關注
關注
188文章
6471瀏覽量
187243 -
Atmega328P
+關注
關注
4文章
56瀏覽量
17230
發布評論請先 登錄
相關推薦
評論