0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何為ATmega328P刷bootloader?

科技觀察員 ? 來源:八色木 ? 作者:八色木 ? 2022-03-31 17:03 ? 次閱讀

在RX5808分集接收機制作的文章中,我參考開源的資料制作了RX5808分集接收機電路板,另外使用USP-ISP編程器通過ArduinoIDE給電路板了寫程序,詳見使用USB-ISP編程器向Mega328p寫程序,在實際使用中發(fā)現(xiàn)這種寫程序的方式存在一些不足,這種方式在擦除Atmega328P的FLASH和EEPROM時感覺不徹底,同時不能修改熔絲位,會導致代碼實際運行效率變低,在RX5808分集接收機上反應(yīng)為菜單的響應(yīng)時間過長,操作不靈敏。因此催生了今天這篇文章。

使用USBtinyISP編程器通過ArduinoIDE寫程序

poYBAGJFbmaAPHyhAALdgL0v6uY493.png

USBtinyISP編程器接口定義

在使用USP-ISP編程器向Mega328p寫程序文中,我用USBtinyISP編程器直接通過ArduinoIDE寫程序,這樣的好處是便捷,同時可以隨時通過IDE對程序進行調(diào)整操作比較直觀,但奇怪的是程序?qū)懭?28P后,RX5808分集接收機的菜單響應(yīng)時間很長,操作起來非常不便,開始以為是源代碼延遲時間設(shè)置的問題,多次調(diào)整收效甚微,于是開始嘗試其它的寫程序的方式。

AVRUSB編程器向ATmega328P寫程序

使用AVRUSB編程器向ATmega328P寫程序步驟如下:

pYYBAGJFbmGAXrhYAAToVd5bzF4539.png

AVRUSB編程器向ATmega328P寫程序

progisp程序有一個特點,當AVRUSB編程器未連接或連接不成功時,它的“PRGISP”圖標是灰色的,連接成功后它是彩色的,如上圖黑色向右箭頭所指方向。AVRUSB編程器寫程序的步驟,首先在PROGISP程序打開后,在上圖1所示位置選擇目標芯片,然后點擊上圖2所示的“RD”按鈕測試芯片讀取是否成功,狀態(tài)欄會顯示芯片連接狀態(tài);然后在上圖3所示位置點擊進入熔絲位編輯窗口:

poYBAGJFblyASL_VAAWvsajjiUI433.png

Atmega328P熔絲位

根據(jù)芯片型號編輯熔絲位;接著在上一張圖的4的位置導入HEX文件;最后點擊“自動”按鈕將程序?qū)懭胄酒?。注意圖中的勾選項“芯片擦除”、“編程FLASH”、“編程熔絲”等選項要勾選,否則代碼運行效率和“使用USBtinyISP編程器直接通過ArduinoIDE寫程序”效率一樣。

使用USBtinyISP編程器通過AVRDUDESS寫程序

Avrdudess是一款類似于Avrdude-GUI的AVR系列單片機下載與燒錄工具

pYYBAGJFblaAJbUvAAS6V9WZKOM174.png

USBtinyISP編程器通過AVRDUDESS寫程序

本著不斷折騰的原則,本次在嘗試使用USBtinyISP編程器通過AVRDUDESS向ATmega328P寫程序。AVRDUDESS可通過網(wǎng)絡(luò)下載綠色版的即可。連接USBtinyISP編程器,打開AVRDUDESS軟件,如上圖選擇“USBtinysimpleUSBprogrammer,…。?!保?a target="_blank">MCU選擇“ATmega328P”,然后點擊“自動偵測”,在上圖黑色狀態(tài)框會顯示“偵測到1e950f=ATmega328P”表示編程器與芯片連接成功。然后和AVRUSB編程器一樣我們也需要設(shè)置熔絲位和一些選項。熔絲位設(shè)置點擊右側(cè)“手動熔絲選擇器”彈出窗口如下,可手動設(shè)置熔絲位:

poYBAGJFblGAQ9bKAAO6Y8NE8Ns251.png

ATmega328P熔絲位設(shè)置

確定后回到主界面,按下圖再次確認設(shè)置項

pYYBAGJFbkyALO8nAAY106nseuU807.png

AVRDUDESS為ATmega328P寫bootloader

通過“Flash”地址欄后“…”按鈕選擇需要寫入的HEX文件,點擊“開始編程”,狀態(tài)欄會對應(yīng)給出寫入狀態(tài)指示,待完成后寫入完成。測試過程中發(fā)現(xiàn),如果不選擇“擦除flash和EEPROM”,代碼運行效率與直接通過ArduinoIDE通過編程器寫的方式一致,慢就一個字!

三種編程方式的比較

細心地朋友會發(fā)現(xiàn)后兩種方式寫入的文件是HEX文件,它可以通過ArduinoIDE的菜單“項目”–“導出已編譯的二進制文件”的方式得到。曾經(jīng)懷疑代碼的運行效率是否與寫入文件格式有關(guān),仔細分析后我認為不管哪種方式寫程序?qū)懭胄酒亩贾粫嵌M制文件,只是通過ArduinoIDE編程器寫入的方式文件轉(zhuǎn)換的過程不可見而已。

因此,正如前面反復提到的,在三種給328P寫程序的方式中,直接通過ArduinoIDE寫程序,無法判斷寫程序過程中是否對芯片的Flash和EEPROM進行了完全的擦除。后面通過PROGISP和AVRDUDESS寫程序的兩種方式差異不大,僅是程序設(shè)置界面的差異,兩種方式如不選擇“擦除flash和EEPROM”,代碼的運行效率與第一種通過ArduinoIDE寫程序的效率一致。據(jù)此判斷它是導致代碼寫入后運行效率不高的主要原因。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 電路板
    +關(guān)注

    關(guān)注

    140

    文章

    4810

    瀏覽量

    96089
  • bootloader
    +關(guān)注

    關(guān)注

    2

    文章

    232

    瀏覽量

    45366
  • Atmega328P
    +關(guān)注

    關(guān)注

    4

    文章

    56

    瀏覽量

    17174
收藏 人收藏

    評論

    相關(guān)推薦

    基于ATMEGA328P的PLC

    描述采用ATMEGA328P的PLC與西門子的PLC類似你有沒有想過建立自己的PLC(可編程邏輯控制器)原型?我敢肯定,作為電子產(chǎn)品,我們一直想創(chuàng)造一個,因為不要再等待時機的到來,我們將使用我們在
    發(fā)表于 09-06 06:16

    atmega328P的芯片詳細介紹手冊

    atmega328P的芯片詳細介紹手冊,需要看寄存器的可以借鑒
    發(fā)表于 01-15 15:28 ?2184次下載

    Atmega328P不帶Arduino PCB設(shè)計

    電子發(fā)燒友網(wǎng)站提供《Atmega328P不帶Arduino PCB設(shè)計.zip》資料免費下載
    發(fā)表于 07-06 14:34 ?12次下載
    <b class='flag-5'>Atmega328P</b>不帶Arduino PCB設(shè)計

    最低系統(tǒng)ATmega328p開源

    電子發(fā)燒友網(wǎng)站提供《最低系統(tǒng)ATmega328p開源.zip》資料免費下載
    發(fā)表于 08-02 10:36 ?19次下載
    最低系統(tǒng)<b class='flag-5'>ATmega328p</b>開源

    具有集成LoRa和CAN總線的ATMEGA328P模塊

    電子發(fā)燒友網(wǎng)站提供《具有集成LoRa和CAN總線的ATMEGA328P模塊.zip》資料免費下載
    發(fā)表于 08-04 14:30 ?1次下載
    具有集成LoRa和CAN總線的<b class='flag-5'>ATMEGA328P</b>模塊

    基于Atmega328P的PWM控制器卡

    電子發(fā)燒友網(wǎng)站提供《基于Atmega328P的PWM控制器卡.zip》資料免費下載
    發(fā)表于 08-15 09:21 ?3次下載
    基于<b class='flag-5'>Atmega328P</b>的PWM控制器卡

    使用ATmega328p的迷你示波器

    電子發(fā)燒友網(wǎng)站提供《使用ATmega328p的迷你示波器.zip》資料免費下載
    發(fā)表于 11-01 11:02 ?12次下載
    使用<b class='flag-5'>ATmega328p</b>的迷你示波器

    帶有ATMEGA328P設(shè)備的Arduino Uno門鈴項目

    電子發(fā)燒友網(wǎng)站提供《帶有ATMEGA328P設(shè)備的Arduino Uno門鈴項目.zip》資料免費下載
    發(fā)表于 11-30 09:28 ?3次下載
    帶有<b class='flag-5'>ATMEGA328P</b>設(shè)備的Arduino Uno門鈴項目

    基于ATmega328P的電感計

    這是一個電感計的項目,基于著名的 Arduino 微控制器。這個項目的主要目的還能夠突出兩個微控制器之間的區(qū)別:STM32 和 ATmega328P
    發(fā)表于 12-08 10:17 ?6次下載

    Atmega328P脈寬調(diào)制控制器

    電子發(fā)燒友網(wǎng)站提供《Atmega328P脈寬調(diào)制控制器.zip》資料免費下載
    發(fā)表于 02-03 09:52 ?1次下載
    <b class='flag-5'>Atmega328P</b>脈寬調(diào)制控制器

    ATMEGA328P的定制LoRa基礎(chǔ)模塊

    電子發(fā)燒友網(wǎng)站提供《帶ATMEGA328P的定制LoRa基礎(chǔ)模塊.zip》資料免費下載
    發(fā)表于 02-08 10:04 ?1次下載
    帶<b class='flag-5'>ATMEGA328P</b>的定制LoRa基礎(chǔ)模塊

    如何通過ATMEGA328P AU(SMD)制作廣告面板

    電子發(fā)燒友網(wǎng)站提供《如何通過ATMEGA328P AU(SMD)制作廣告面板.zip》資料免費下載
    發(fā)表于 02-09 09:48 ?0次下載
    如何通過<b class='flag-5'>ATMEGA328P</b> AU(SMD)制作廣告面板

    簡單的獨立ATMega328p微控制器

    電子發(fā)燒友網(wǎng)站提供《簡單的獨立ATMega328p微控制器.zip》資料免費下載
    發(fā)表于 06-12 10:57 ?1次下載
    簡單的獨立<b class='flag-5'>ATMega328p</b>微控制器

    基于ATmega328P的DIY macropad

    電子發(fā)燒友網(wǎng)站提供《基于ATmega328P的DIY macropad.zip》資料免費下載
    發(fā)表于 06-12 14:47 ?2次下載
    基于<b class='flag-5'>ATmega328P</b>的DIY macropad

    基于ATmega328P微控制器的Ardu鍵盤

    電子發(fā)燒友網(wǎng)站提供《基于ATmega328P微控制器的Ardu鍵盤.zip》資料免費下載
    發(fā)表于 06-19 14:47 ?4次下載
    基于<b class='flag-5'>ATmega328P</b>微控制器的Ardu鍵盤