AVR和arduino阶段性学习总结

最近买了一个AVR的下载线usbtinyisp, 用于AVR和arduino, 有了电脑和控制电路的沟通渠道.

以下分为几个部分

1. 装配usbtinyisp和测试

2. 使用usbtiny烧录avr程序

3. 使用usbtiny烧录arduino bootloader至atmega芯片

4. 使用usbtiny烧录arduino sketch至已装好arduino bootloader的芯片上, 并应用

5. Hex code和arduino sketch的上传和制作

verycd下了一些avr的教程看, 发现国内国外的使用方式完全是两样. 有好有坏, 但是还是喜欢国际通用的.


 

使用的主要材料 usbtinyisp, atmega 168 , attiny13a, arduino 的板子, 晶振和对应电容.

不同的avr芯片配置 可以参考

https://idehe.com/w/index.php?title=AVR_specification

1. 装配usbtiny

国外买来的usbtinyisp下载线是散装的, 正好可以锻炼一下焊接. 基本还是可以一次成功的.

如图, 电阻, 电容, 二极管, 2个led, 一个attiny2313, 一个74hc什么的, 10针和6针接口, jumper, usb接口.

这里有一些注意事项

1. 电阻r4, r7直接用线连就可以,

2. 跳线根据图片接不供电  当跳线全部接上两个接口则供电, 例如供给电路板

3. 注意排线的方向. 红线指向pin 1

完成之后接入usb, 绿灯亮表示成功, 传输数据的时候红灯亮  . 需要安装驱动程序


2. 使用usbtiny烧录avr程序

以下是使用attiny13a 最小的avr芯片, 从usbtinyisp接来6个pin 分别接在芯片上, 一个led直接从pin3接到地.

usbtiny改跳线, 变成usbtiny供电

参考pin引脚 连接6引脚usbtiny的header至avr芯片

接好线以后就可以开始烧录了

picplz_upload

 

使用avrdude检测和烧录

 

安装avrdude, 安装win avr, 或者avr studio都带, 不过win avr好像比较好

avrdude –p t13 –c usbtiny 测试是否能检测到usbtiny

检测成功显示device signature和fuses ok

典型上传命令

avrdude -P usb -c usbtiny -p m168 -U flash:w:main.hex

制作hex文件参考后面部分

所有PB 全部设为高电平

测试代码 – 亮灯

https://github.com/szczys/had_AVRtut_2/archives/master

更多烧录命令请看

https://idehe.com/w/index.php?title=Avrdude

picplz_upload 

接口电平全部为高, 都可以点亮led

picplz_upload

连接ATmega168

参考下图接法即可, 比较复杂.但既可以用atmega168 的avr程序上传也可以用于arduino sketch 上传.

2组VC和GND, 外加SCK, MISO, MOSI, RESET, 和LED测试灯.

如果是arduino, 则需要外接16 mhz的晶振和负载电容才可以工作

既可以上传avr程序也可以烧录sketch

picplz_upload


 

3. 烧录bootloader

usbtiny连接电脑, 6pin header 连接arduino板子的ICSP6脚接口, 板子额外供电,

开启arduino IDE, 选择board – diecilema …. 168, 因为使用的atmega, 而arduino板子是duemelanove atmega 328的, 所以烧录完以后atmega直接在这块板子上面通用, 可以看见烧完以后led闪烁.

选择bootloader  – w/ bootloader 即可 15秒之后显示 done

这种连接也可以上传sketch

picplz_upload

这里也可以用命令行, 参考

https://idehe.com/w/index.php?title=Bootloader

arduino 最小系统

avr烧录了bootloader加工作中的sketch

这里只连接了 pin 7 , pin8, led和晶振, 晶振需要负载内容的.

供电+晶振就是arduino的最小系统了

picplz_upload


 

5. 使用avr studio制作hex烧录程序 / 和上传arduino sketch

 

avr程序

 

在avr studio建立新项目, 选择目录, 选择 simulation , 选择合适的芯片, atmega13a 或者atmega168, 然后撰写程序, build, 再用avrdude上传hex程序至芯片即可

 

arduino sketch 到breadboard

https://idehe.com/w/index.php?title=USBtinyISP

1, 接usbtinyisp 6个脚接口到avr芯片

2. 用arduino 生成hex文件, 找到这个hex所在目录

3. 运行avrdude命令, 参考例子

 

谨记

  • 必须使用arduino IDE里面的 avrdude版本 和avrdude.conf配置 不匹配则出错 not in sync
  • hex文件指向 c:\用户\[my name]\app data\local\temp\buildXXXXXXXXXXXXX.tmp目录下的hex文件
  • -P com4 //电脑端口
  • -p m168  //芯片
  • -C // avrdude配置文件conf
  • -b 19200 // 用于m16, m328p 应该为 57600
  • -c usbtinyisp // programmer

例如 E:\Engineering\Arduino\arduino-0022\arduino-0022\hardware\tools\avr\bin\avrdude.exe -V -F -C E:\Engineering\Arduino\arduino-0022\arduino-0022\hardware\tools\avr\etc\avrdude.conf -p m168 -c usbtiny -P com4 -b 19200 -U flash:w:blink.cpp.hex