搜索
bottom↓
回复: 11

现玩AVR 8Bit 单片机,是不用下载线或什么开发工具,超简单

[复制链接]

出0入104汤圆

发表于 2016-10-30 09:10:01 | 显示全部楼层 |阅读模式
本帖最后由 andy 于 2016-10-30 13:47 编辑

现玩AVR 8Bit 单片机,是不用下载线或什么开发工具,超简单。

只须要购买1个Mini328P Arduino 迷你小板,就可将其变身为下载线或作为编程器了。

只要这个Mini328P Arduino 迷你小板在 Arduino IDE 玩到下载到程序到Mini328P Arduino 迷你小板,证明了Mini328P Arduino 迷你小板本身已有了Bootload程式,就可将Mini328P Arduino 迷你小板为其他新AVR 8Bit 单片机编程或下载了。

大家留意一下, Arduino IDE 内藏了可将本身Mini328P Arduino 迷你小板,先变身为编程器,之后为其他新AVR 8Bit 单片机编程写入Bootload程式,超简单。

我本身就将Mini328P Arduino 迷你小板,变作STK500V2 AVR 8Bit 单片机 下载线,在本论坛很多STK500V2编程器原程序。


详细视频教程可到以下查看
https://www.youtube.com/watch?v=muP1dp73Mdg

*****************************************************************************************************************
1 > 以下是文字教程
http://arduino169.blogspot.hk/2015/01/bootloader.html

我的 Arduino 學習筆記

2015年1月30日 星期五
重燒 Bootloader
無事無幹, 無端端燒乜鬼 Bootloader 喎. 不過衰起上黎, 避都避唔到既.
為免次次都要四圍搵番點燒, 不如自己記低佢, 方便搵.

為免攪錯, 用兩塊唔同既板, 由 UNO 幫 Pro Mini 燒 Bootloader.

(1) 首先, 將 UNO 變身成為 Programmer.

將 UNO 連接電腦, 打開 Arduino IDE, 選好有關既 Port 同 UNO 連接既 Port
打開 ArduinoISP 的 sketch
File->Examples->ArduinoISP

當然係將 ArduinoISP 既 sketch upload 去 UNO 度喇.



(2) 當 UNO 裝左 ArduinoISP 後, 就可以同 ProMini 連接 (連線前最好先拔走 USB 線斷電)
再提醒一次, 唔好攪錯, 呢個例子係當 Pro Mini 死左 Bootloader, 由 UNO 幫佢燒.

接腳: (記住 check 清楚比人燒果張係用 3.3V 定係 5V, 自己執生)

UNO        Pro Mini
D10        RST
D11        D11
D12        D12
D13        D13
3.3V / 5V        VCC
GND        GND




(3) 可以同 UNO 接番 USB 線 (唔好接錯, 係接 UNO, 即係 Programmer), 然後選 Board.
注意, 今次係選要燒 Bootloader 果塊, 所以今次係 ProMini 而唔係 UNO.

Tools->Board->Arduino Pro or Pro Mini

有 D board 可能要選埋 Processor 既, 例如 ProMini 就係了, 我果塊要再選

Tools->Processor->ATmega328 (5V, 16MHz)


之後再選 Programmer

Tools->Programmer->Arduino as ISP


(4) 一切準備好, 就可以開始燒 Bootloader 了:

Tools->Burn Bootloader


見到呢句就攪掂哂了.


2 > 以下另一个教程
*********************************************************************************************************
http://yehnan.blogspot.hk/2013/0 ... ketchatmega328.html


2013/02/01

將Arduino Uno當做一台ISP線上燒錄器,燒錄bootloader或sketch到麵包板上的ATmega328P-PU晶片
我買了一顆ATmega328P-PU晶片,裡頭空空的,沒有Arduino的bootloader也沒有任何sketch。但我有一塊Arduino Uno R3板子,它可化身成一台ISP燒錄器;把ATmega328P-PU放上麵包板,再接上一些電子元件與線材後,便可從主機電腦透過Arduino Uno R3板、將bootloader或sketch燒錄到麵包板的ATmega328P-PU晶片裡。

我的板子是Arduino Uno R3,Arduino軟體開發環境是1.0.3 Windows版,燒錄對象是ATmega328P-PU。

本篇介紹的內容,應該也可套用到其他Arduino板子與其他型號的AVR晶片,但我也沒試過,所以此篇內容皆以我的環境為準。(我另一篇是燒錄到ATtiny85-20PU。)

若不清楚ISP是什麼意思,若想知道ATmega328P-PU的P與PU之意,請參考我寫的:Arduino與AVR微控制器相關詞彙。

底下是我的板子Arduino Uno R3,其微控制器晶片是ATmega328P-PU,屬於PDIP封裝。(另有SMD版本。)


首先,要讓Uno板變成一台ISP燒錄器。很簡單,請開啟Arduino軟體開發環境,然後選File - Examples - ArduinoISP,將這支sketch,Upload(上傳、燒錄)進Uno板,如此即可,ArduinoISP這支sketch的功能就是讓Arduino板子變成一台ISP燒錄器。

底下是單獨的ATmega328P-PU晶片。


接下來,我們想要將bootloader燒錄到麵包板的ATmega328P-PU晶片裡,需要一些硬體線路,所需電子元件如下:
16 MHz crystal石英晶體
10K ohm電阻
18~22 pF陶瓷電容,2個

也可以燒錄一般的sketch,之後將會燒錄Blink範例(閃爍LED),所以還需要底下的元件:
LED
220 ohm電阻

底下是ATmega328晶片的腳位功能對照(328與168是一樣的),對照這張圖進行接線。


Arduino板的5V與GND接到麵包板。
ATmega328P-PU的腳位7(VCC)、20(AVCC)接到5V。
ATmega328P-PU的腳位8(GND)、22(GND)接地。





然後是16 MHz石英晶體(不分極性),兩隻腳分別接一個18~22 pF陶瓷電容後,接地。陶瓷電容不分極性。

ATmega328P-PU的腳位9(XTAL1)、10(XTAL2)接到石英晶體的兩隻腳。




然後根據ArduinoISP這支sketch定義的ISP腳位接線,

ATmega328P-PU的腳位1(RESET)接5V。

Arduino Uno板腳位10,接ATmega328P-PU的腳位1(RESET)。
Arduino Uno板腳位11,接ATmega328P-PU的腳位17(MOSI)。
Arduino Uno板腳位12,接ATmega328P-PU的腳位18(MISO)。
Arduino Uno板腳位13,接ATmega328P-PU的腳位19(SCK)。




如此便完成硬體線路了,接下來要燒錄bootloader。

Arduino Uno板以USB線連接主機電腦後,開啟Arduino軟體開發環境,先做一些設定:
設定Tools - Board選為Uno。這個設定的意思是「被燒錄的對象」,但我們並不是要燒錄到Uno板子,因為Uno板使用的晶片跟麵包板上的ATmega328P-PU相同,所以選此設定,但選Arduino Duemilanove w/ ATmega328也是可行的,不過會有些差異,譬如說將燒錄不同版本的bootloader,詳情請見Arduino軟體開發環境目錄\hardware\arduino\boards.txt。如果要燒錄別的型號的晶片,就要選別的選項,甚至要動手修改boards.txt自己新增。
設定Tools-Serial Port。這是Uno板連接到電腦的序列埠號。
設定Tools - Programmer,選為Arduino as ISP。

然後執行Tools - Burn Bootloader,便可將bootloader透過Arduino Uno板(扮演一台ISP線上燒錄器),燒錄到麵包板上的ATmega328P-PU晶片裡。

會顯示訊息Burning bootloader to I/O Board (this may take a minute)...,會花一點時間,以我的環境來說不到1分鐘。

之後會顯示Done burning bootloader.,代表成功了。只要再加上USB轉TTL序列訊號的電路(譬如SparkFun的Breakout Board for FT232RL USB to Serial),就幾乎等同於一塊普通的Arduino板子了。

相關參考資料請看Physical Computing at ITP的教學文章Setting up an Arduino on a breadboard、swf.com.tw的用麵包板組裝Arduino微電腦實驗板、Dale Wheat的How to Build an Arduino-compatible Physical Computing Platform on a Solderless Breadboard。

接下來要把一般的sketch燒錄到麵包板上的ATmega328P-PU晶片裡。

有一個作法是,拔除Uno板的晶片,然後修改接線(板子的0 RX接到晶片的2、板子的1 TX接到晶片的3),這麼一來,就能跟平常一樣,Upload(上傳、燒錄)一般的sketch了。這種作法就好像是以麵包板的晶片取代Uno板的晶片。詳情請見Arduino官方網站的From Arduino to a Microcontroller on a Breadboard。

上述作法,bootloader與sketch共存,就跟平常使用Arduino板子時一樣。

底下介紹的作法,燒錄sketch會蓋掉先前的bootloader。

原先的接線維持不變,Arduino Uno板仍然扮演ISP燒錄器的角色。

讓我們試著燒錄閃爍LED的sketch,先接好硬體線路,麵包板的ATmega328P-PU晶片的腳位4(就是Arduino數位腳位2),接220 ohm電阻後、接LED長腳,LED短腳接地。




開啟File-Examples-01.Basics-Blink,將sketch裡頭設定的腳位13改為2,然後執行File - Upload Using Programmer,便能將sketch透過Arduino Uno板(扮演ISP線上燒錄器)燒錄到麵包板的ATmega328P-PU晶片裡,成功的話,就能看到LED閃爍。


參考資料:
Arduino官方文件,Using an Arduino as an AVR ISP (In-System Programmer),From Arduino to a Microcontroller on a Breadboard。
Open Electronics的Arduino ISP (In System Programming) and stand-alone circuits,提到如何修改boards.txt新增板子。
Flashgamer的Using your Arduino as an ISP,碰到晶片型號不同的問題(328-P與328P-PU)、碰到stk500_recv(): programmer is not responding的問題。
Cooper Maa的把 Arduino 當成一個 AVR ISP(In-System Programmer) 使用(1)、把 Arduino 當成一個 AVR ISP(In-System Programmer) 使用(2)、使用 Arduino 燒錄 ATtiny。
High-Low Tech的Programming an ATtiny w/ Arduino 1.0。
GROBO: DIY Arduino - 將Bootloader寫進ATMega晶片!(3)。
Boarduino, Solderless Breadboard Arduino Clone。
AVRDUDE。


3 > Arduino當ISP燒入Sketch code
************************************************************************************************************

http://ykarduino.blogspot.hk/

Arduino

2015年1月13日 星期二
Arduino當ISP燒入Sketch code
在開發案子的時候,為了要能夠省電而在電路上做了一個電晶體開關電路,在工作結束後讓Arduino以I/O切斷電晶體開關,讓整個電源電路關閉,也直接讓Arduino斷電。

但是卻意外發現原來Arduino bootloader的boot時間需要3~7秒,這點讓在操作產品時的使用者體驗是非常難以接受的,因此上網找了如何直接將sketch code燒入到Atmega 328。
我的環境架設為:
1. Arduino Nano *1 當ISP
2. 空白的Atmega * 1 當Target
3. mac pro-book retina OX X
4. Arduino IDE 1.0.6


如果有用過一塊Arduino當ISP燒過Arduino bootloader的人,一定知道線該怎麼接,因此我把流程分為兩塊,一將Arduino設定為ISP工具,二燒入sketch code到target。


將Arduino nano設定為ISP programmer
1. 將Arduino Nano與PC連接。
2. 開啟Arduino IDE->file->Example->ArduinoISP。
3. tool->board->Arduino Nano w/ Atmega328。
4. tool->Serial Port->(選擇Arduino Nano的port)。
5. tool->Programmer-> AVR ISP。
6. upload ArduinoISP程式到Arduino Nano板子上。

將sketch code燒入到空白的Atmega328
1. 修改arduino的preferences.txt(路徑為Users/[User Name]/Library/Arduino/preferences.txt)檔中的upload.using=bootload變為upload.using=arduinoisp或是修改hareware/boards.txt(Users/[User name]/Applications/Arduino/Contents/Resources/Java/hardware/arduino/boards.txt)中新增一個borad name並在該board name中加入[board name].upload.using=Arduino as ISP,選擇第二個的好處是不用每次在bootloader與arduinoisp間切換,而是若要直接燒入code的時候選擇你定義的板子。
2. 接線方式為(Programmer -> Target) VDD->VDD, D10->RST, D11->D11, D12->D12, D13->D13, GND->GND
3. tool->board->你定義的board。
4. tool->Serial Port->(選擇Arduino Nano的port)。
5. tool->Programmer-> Arduino as ISP。
6. upload,就可接將code燒入到你的target中。

後續,我用mac燒入的時候遇到avrdude: stk500_getsync(): not in sync: resp=0x15的錯誤訊息,這個錯誤訊息的改善方式是要在Arduino ISP端的Reset與GND間加上一個10uF電容即可改善。
另外若是在燒入時出現verification的問題,則需重新連接Arduino與PC,並且重新開啟Arduino IDE即可。

當sketch code直接燒入atmega 328後,可以省掉5~7秒的等待時間,並且可以多出約2kbyte的rom。

4 > 最重要的部分,请大家要留意和懂得应用啊!
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

http://xloader.russemotto.com/

这部分主要针对大批量编程的AVR 8Bit单片机,因为,你们看第3个应用介绍就知道了多麻烦,用这个xloader.exe 它就解决了大批量编程AVR 8Bit单片机编程快速问题了。

到以上网站下载xloader.exe,只要你有XXX.hex就可将这个XXX.hex下载到你的目标AVR 8Bit单片机里头了,就OK,超简单的「懂得善用软件及工具来帮助自己提升工作效率」。




I’ve made a small program that can be used to upload your own *.hex files to arduino boards using the bootloader. That means you don’t need a flash programmer. I made it for my own use and found it pretty useful. So now I’ve made a more user friendly version..
To use it compile you’re code in something like AvrStudio. Then simply start XLoader.exe, pick a hex file and press upload. That’s it.
以下是电脑自动翻译的
「我做了可用于上传自己的* .HEX文件中使用的引导加载程序的Arduino板的小程序。这意味着你不需要闪存编程器。我做到了我自己用的,发现它非常有用。所以,现在我已经有了一个更加用户友好的版本..
要使用它编译你喜欢的东西AVRSTUDIO是代码。然后,只需启动XLoader.exe,挑一个十六进制文件,并按下上传。而已。」





出0入0汤圆

发表于 2016-10-30 10:01:00 | 显示全部楼层
恭喜楼主入门arduino!这都是好几年前就出来的东西了,另外这能称作不用下载线?你只不过先做了下载线而已!

出0入0汤圆

发表于 2016-10-30 13:32:26 | 显示全部楼层
ljy99731 发表于 2016-10-30 10:01
恭喜楼主入门arduino!这都是好几年前就出来的东西了,另外这能称作不用下载线?你只不过先做了下载线而已 ...

是啊,我现在也不用买,因为我有下载线

出0入0汤圆

发表于 2016-10-30 14:45:12 来自手机 | 显示全部楼层
下载器十块八块的,买一个最便宜的就好了。

出0入0汤圆

发表于 2016-10-30 15:47:58 | 显示全部楼层
arduino IDE中能不能随便选AVR系列的型号

出0入104汤圆

 楼主| 发表于 2016-10-30 15:53:29 | 显示全部楼层
miscell 发表于 2016-10-30 15:47
arduino IDE中能不能随便选AVR系列的型号


你没有注意楼主位以下这句,针对任何 AVR 8Bit 单片机 都可编程了。

我本身就将Mini328P Arduino 迷你小板,变作STK500V2 AVR 8Bit 单片机 下载线,在本论坛很多STK500V2编程器原程序。

出0入0汤圆

发表于 2016-10-30 15:55:56 | 显示全部楼层
miscell 发表于 2016-10-30 15:47
arduino IDE中能不能随便选AVR系列的型号

这个不能的,要有对应的固件才可以直接用arduino IDE开发

出0入17汤圆

发表于 2016-10-30 16:59:12 | 显示全部楼层
AVR 8位机,说都不想去说了

出0入0汤圆

发表于 2016-10-30 17:38:52 | 显示全部楼层
这样局限于个别的型号才行了,还以为与别的IDE一样,支持所有的系列型号。

出0入0汤圆

发表于 2016-10-30 17:49:59 | 显示全部楼层
红日回来了?

出0入0汤圆

发表于 2016-11-25 14:37:44 | 显示全部楼层
学习一下!

出0入0汤圆

发表于 2016-11-26 11:30:28 来自手机 | 显示全部楼层
玩阿杜罗是可以不用阿杜罗的,只要一个avr芯片与十几块的isp下载线
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-5 18:31

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表