0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样使用ATMEGA328P-PU制作经典的Arduino克隆

454398 来源:网络整理 作者:网络整理 2019-11-20 10:15 次阅读

步骤1:开始

怎样使用ATMEGA328P-PU制作经典的Arduino克隆

上周,我决定使用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
收藏 人收藏

    评论

    相关推荐

    Atmega328P单片机的引导程序

    谁有最新的 Atmega328P TQFP-32的引导程序
    发表于 10-22 16:48

    atmega328p芯片串口输出为什么全是乱码?

    我希望用atmega328p 芯片,就是Arduino uno的芯片进行电容的测量,但是出现了一个问题。就是上传程序发现它的串口输出全是乱码,就是非常简单的打印一个数字,也打印不出。但是用它控制
    发表于 07-26 12:15

    在面包板上安装了ATmega328P芯片,AT CIPSEND回复中的字符错误怎么解决?

    我在面包板上安装了 ATmega328P 芯片,已正确连接(带有 16MHz 振荡器,并且使用微控制器旁边的 22pF 电容器过滤功率)。我正在使用 SortwareSerial 库在模拟 A1
    发表于 07-18 07:51

    atmega1824p使用AT命令遇到的疑问求解

    我正在使用物联网设备(使用 atmega1824p),并想使用 AT 命令。 它作为客户端工作。.但是,我也希望它用作服务器(例如,当我需要创建/更新 ssid 和密码时)。我正在使用 ISR 取回
    发表于 07-16 08:01

    ESP32使用Arduino启用蓝牙后编译固件过大,怎样缩减大小呢?

    ESP32使用Arduino启用蓝牙后编译固件过大,怎样缩减大小,日志级别已经最低了,分区不能动,已经是1.9M的OTA分区配置了,怎样还能缩减大小,蓝牙功能能否裁剪
    发表于 06-28 11:27

    求助,在esp-idf中使用arduino作为组件后怎样使用arduino的库?

    在esp-idf中使用arduino作为组件后怎样使用arduino的库,例如我此时需要使用arduino的第三方库blinker,怎样使用
    发表于 06-12 07:21

    支持 GPS,基于 Arduino 的墨水屏时钟(文末可下载完整文件)

    MS8607压力/湿度/温度传感器 × 1 电路板 × 1 按钮开关 × 若干 制作外壳的材料 × 若干 Atmega328P DIP 版 × 1 32768 Hz 晶体 × 1 Adafruit GPS
    发表于 05-31 11:34

    UVC上传图像时下发PU指令上位机软件崩溃的原因?

    想问下大家 标准软件 AMCAP如果不关闭图像,下发PU指令时,AMCAP会崩溃。关闭图像发PU指令,则一切正常。也就是说要下发PU指令的话必须要先关闭预览图像。图像和下发PU指令不能
    发表于 04-09 07:53

    Arduino Uno R3开发版简化

    本人小白,想把Atmega328p-AU芯片单独拿出来用来控制LED阵列,但Arduino R3开发板的原理图真看不懂!想知道除了328芯片还需要什么以及线路怎么连接,感谢各位大佬!
    发表于 04-02 08:38

    如何用Arduino制作一个简易自动喂鱼器

    如果你家里养有鱼,并想找到一种自动化喂食的方法,这个项目可能会对你有所启发。 在这个教程中,作者将展示如何制作自己的基于Arduino的自动喂鱼器,让小鱼不在饿肚子。 自动喂鱼器的工作原理非常
    发表于 03-28 11:25

    PCBA电路板克隆开发流程

    什么是克隆线路板?通常情况下有克隆线路板的需求时,往往都是针对多层板的。而多层板起始数据至少四层或四层以上才可以。 深圳市清宝科技有限公司的工程师介绍道:克隆线路板起步前大家需要合理有效地知晓一下
    的头像 发表于 03-02 11:15 1021次阅读

    如何制作自己的Arduino电容计

    在这个项目中,您将学习如何制作自己的Arduino电容计(测量电容器的值,范围从pF到1000的uF)。一般来说,电子爱好者喜欢设计自己的小工具而不是购买。在这个项目中,我们使用两种电容测量方法,即
    的头像 发表于 02-25 15:10 1454次阅读
    如何<b class='flag-5'>制作</b>自己的<b class='flag-5'>Arduino</b>电容计

    如何使用Arduino制作智能垃圾箱

    在这个项目中,我将向您展示如何使用Arduino制作智能垃圾箱,当您带着垃圾接近时,垃圾箱的盖子会自动打开。
    的头像 发表于 02-11 12:22 2841次阅读
    如何使用<b class='flag-5'>Arduino</b><b class='flag-5'>制作</b>智能垃圾箱

    ESP32与Arduino板之间的区别差异

    Arduino板包括一个ATmega328P8位微控制器,具有0至13个数字引脚。这些引脚用于数字输入和数字输出,其中数字输入用于从设备读取数据,数字输出用于将数据从Arduino发送到设备。
    的头像 发表于 02-02 14:36 6884次阅读
    ESP32与<b class='flag-5'>Arduino</b>板之间的区别差异

    Arduino制作循迹小车教程

    Arduino制作循迹小车完全教程
    发表于 01-05 11:09 7次下载