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芯片
接好线以后就可以开始烧录了
使用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
接口电平全部为高, 都可以点亮led
连接ATmega168
参考下图接法即可, 比较复杂.但既可以用atmega168 的avr程序上传也可以用于arduino sketch 上传.
2组VC和GND, 外加SCK, MISO, MOSI, RESET, 和LED测试灯.
如果是arduino, 则需要外接16 mhz的晶振和负载电容才可以工作
既可以上传avr程序也可以烧录sketch
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
这里也可以用命令行, 参考
https://idehe.com/w/index.php?title=Bootloader
arduino 最小系统
avr烧录了bootloader加工作中的sketch
这里只连接了 pin 7 , pin8, led和晶振, 晶振需要负载内容的.
供电+晶振就是arduino的最小系统了
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