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

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

3天内不再提示

如何为ATmega328P刷bootloader?

科技观察员 来源:八色木 作者:八色木 2022-03-31 17:03 次阅读

在RX5808分集接收机制作的文章中,我参考开源的资料制作了RX5808分集接收机电路板,另外使用USP-ISP编程器通过ArduinoIDE给电路板了写程序,详见使用USB-ISP编程器向Mega328p写程序,在实际使用中发现这种写程序的方式存在一些不足,这种方式在擦除Atmega328P的FLASH和EEPROM时感觉不彻底,同时不能修改熔丝位,会导致代码实际运行效率变低,在RX5808分集接收机上反应为菜单的响应时间过长,操作不灵敏。因此催生了今天这篇文章。

使用USBtinyISP编程器通过ArduinoIDE写程序

poYBAGJFbmaAPHyhAALdgL0v6uY493.png

USBtinyISP编程器接口定义

在使用USP-ISP编程器向Mega328p写程序文中,我用USBtinyISP编程器直接通过ArduinoIDE写程序,这样的好处是便捷,同时可以随时通过IDE对程序进行调整操作比较直观,但奇怪的是程序写入328P后,RX5808分集接收机的菜单响应时间很长,操作起来非常不便,开始以为是源代码延迟时间设置的问题,多次调整收效甚微,于是开始尝试其它的写程序的方式。

AVRUSB编程器向ATmega328P写程序

使用AVRUSB编程器向ATmega328P写程序步骤如下:

pYYBAGJFbmGAXrhYAAToVd5bzF4539.png

AVRUSB编程器向ATmega328P写程序

progisp程序有一个特点,当AVRUSB编程器未连接或连接不成功时,它的“PRGISP”图标是灰色的,连接成功后它是彩色的,如上图黑色向右箭头所指方向。AVRUSB编程器写程序的步骤,首先在PROGISP程序打开后,在上图1所示位置选择目标芯片,然后点击上图2所示的“RD”按钮测试芯片读取是否成功,状态栏会显示芯片连接状态;然后在上图3所示位置点击进入熔丝位编辑窗口:

poYBAGJFblyASL_VAAWvsajjiUI433.png

Atmega328P熔丝位

根据芯片型号编辑熔丝位;接着在上一张图的4的位置导入HEX文件;最后点击“自动”按钮将程序写入芯片。注意图中的勾选项“芯片擦除”、“编程FLASH”、“编程熔丝”等选项要勾选,否则代码运行效率和“使用USBtinyISP编程器直接通过ArduinoIDE写程序”效率一样。

使用USBtinyISP编程器通过AVRDUDESS写程序

Avrdudess是一款类似于Avrdude-GUI的AVR系列单片机下载与烧录工具

pYYBAGJFblaAJbUvAAS6V9WZKOM174.png

USBtinyISP编程器通过AVRDUDESS写程序

本着不断折腾的原则,本次在尝试使用USBtinyISP编程器通过AVRDUDESS向ATmega328P写程序。AVRDUDESS可通过网络下载绿色版的即可。连接USBtinyISP编程器,打开AVRDUDESS软件,如上图选择“USBtinysimpleUSBprogrammer,…。。”,MCU选择“ATmega328P”,然后点击“自动侦测”,在上图黑色状态框会显示“侦测到1e950f=ATmega328P”表示编程器与芯片连接成功。然后和AVRUSB编程器一样我们也需要设置熔丝位和一些选项。熔丝位设置点击右侧“手动熔丝选择器”弹出窗口如下,可手动设置熔丝位:

poYBAGJFblGAQ9bKAAO6Y8NE8Ns251.png

ATmega328P熔丝位设置

确定后回到主界面,按下图再次确认设置项

pYYBAGJFbkyALO8nAAY106nseuU807.png

AVRDUDESS为ATmega328P写bootloader

通过“Flash”地址栏后“…”按钮选择需要写入的HEX文件,点击“开始编程”,状态栏会对应给出写入状态指示,待完成后写入完成。测试过程中发现,如果不选择“擦除flash和EEPROM”,代码运行效率与直接通过ArduinoIDE通过编程器写的方式一致,慢就一个字!

三种编程方式的比较

细心地朋友会发现后两种方式写入的文件是HEX文件,它可以通过ArduinoIDE的菜单“项目”–“导出已编译的二进制文件”的方式得到。曾经怀疑代码的运行效率是否与写入文件格式有关,仔细分析后我认为不管哪种方式写程序写入芯片的都只会是二进制文件,只是通过ArduinoIDE编程器写入的方式文件转换的过程不可见而已。

因此,正如前面反复提到的,在三种给328P写程序的方式中,直接通过ArduinoIDE写程序,无法判断写程序过程中是否对芯片的Flash和EEPROM进行了完全的擦除。后面通过PROGISP和AVRDUDESS写程序的两种方式差异不大,仅是程序设置界面的差异,两种方式如不选择“擦除flash和EEPROM”,代码的运行效率与第一种通过ArduinoIDE写程序的效率一致。据此判断它是导致代码写入后运行效率不高的主要原因。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电路板
    +关注

    关注

    140

    文章

    4622

    浏览量

    92519
  • bootloader
    +关注

    关注

    2

    文章

    230

    浏览量

    45050
  • Atmega328P
    +关注

    关注

    4

    文章

    56

    浏览量

    17091
收藏 人收藏

    评论

    相关推荐

    atmega328p 外部中断standby休眠唤不醒

    atmega328p 外部中断standby休眠唤不醒
    发表于 11-29 19:17

    ATmega328P中文翻译资料

    ATmega328P中文翻译资料
    发表于 07-16 15:54

    ATmega328P中文翻译资料

    ATmega328P中文翻译资料
    发表于 03-29 16:42

    atmega328p外部中断standby休眠唤不醒的原因?

    atmega328p 外部中断standby休眠唤不醒
    发表于 07-08 09:28

    Atmega328P单片机烧录Arduino引导程序的方法

    用USBISP/USBasp编程器给Atmega328P下载Arduino bootloader引导程序bootloader引导程序是什么Arduino UNO引导程序下载接口几种常见的下载器和6
    发表于 11-24 08:01

    采用ATmega328P芯片设计的水库水泵控制器

    描述带Arduino的水库水泵控制器采用ATmega328P芯片设计的水库水泵控制器,通过LED显示水库水位的5个位置。
    发表于 08-03 07:18

    用于无线电发射器HC-12的带有ATmega328p的PCB

    描述用于无线电发射器 HC-12 的带有 ATmega328p 的 PCB该 PCB 可替代 Arduino。当您需要制作原型设备并且 Arduino 功能不够用时,它会很有用。电路板
    发表于 09-05 07:21

    基于ATMEGA328P的PLC

    描述采用ATMEGA328P的PLC与西门子的PLC类似你有没有想过建立自己的PLC(可编程逻辑控制器)原型?我敢肯定,作为电子产品,我们一直想创造一个,因为不要再等待时机的到来,我们将使用我们在
    发表于 09-06 06:16

    Arduino Atmega328P开发板软件下载与安装

    Arduino duemilanove2009 Atmega328P 开发板安装步骤,2011给力板!Arduino duemilanove2009 Atmega328P开发板轼软件下载与安装
    发表于 11-17 18:16 128次下载

    atmega328P的芯片详细介绍手册

    atmega328P的芯片详细介绍手册,需要看寄存器的可以借鉴
    发表于 01-15 15:28 2175次下载

    基于Atmega328P的PWM控制器卡

    电子发烧友网站提供《基于Atmega328P的PWM控制器卡.zip》资料免费下载
    发表于 08-15 09:21 2次下载
    基于<b class='flag-5'>Atmega328P</b>的PWM控制器卡

    使用ATmega328p的迷你示波器

    电子发烧友网站提供《使用ATmega328p的迷你示波器.zip》资料免费下载
    发表于 11-01 11:02 8次下载
    使用<b class='flag-5'>ATmega328p</b>的迷你示波器

    基于ATmega328P的电感计

    这是一个电感计的项目,基于著名的 Arduino 微控制器。这个项目的主要目的还能够突出两个微控制器之间的区别:STM32 和 ATmega328P
    发表于 12-08 10:17 4次下载

    ATMEGA328P的定制LoRa基础模块

    电子发烧友网站提供《带ATMEGA328P的定制LoRa基础模块.zip》资料免费下载
    发表于 02-08 10:04 0次下载
    带<b class='flag-5'>ATMEGA328P</b>的定制LoRa基础模块

    基于ATmega328P的DIY macropad

    电子发烧友网站提供《基于ATmega328P的DIY macropad.zip》资料免费下载
    发表于 06-12 14:47 0次下载
    基于<b class='flag-5'>ATmega328P</b>的DIY macropad