AVR入门.docx
《AVR入门.docx》由会员分享,可在线阅读,更多相关《AVR入门.docx(61页珍藏版)》请在冰豆网上搜索。
AVR入门
AVR性能简介
AVR单片机是ATMEL公司研制开发的一种新型单片机,它与51单片机、PIC单片机相比具有一系列的优点:
1:
在相同的系统时钟下AVR运行速度最快;
2:
芯片内部的Flsah、EEPROM、SRAM容量较大;
3:
所有型号的Flash、EEPROM都可以反复烧写、全部支持在线编程烧写(ISP);
4:
多种频率的内部RC振荡器、上电自动复位、看门狗、启动延时等功能,零外围电路也可以工作;
5:
每个IO口都可以以推换驱动的方式输出高、低电平,驱动能力强;
6:
内部资源丰富,一般都集成AD、DA模数器;PWM;SPI、USART、TWI、I2C通信口;丰富的中断源等。
目前支持AVR单片机编译器的语言主要有汇编语言、C语言、BASIC语言等。
其中C编译器主要有CodeVisionAVR、AVRGCC、IAR、ICCAVR等,C语言编译器由于它具有功能强大、运用灵活、代码小、运行速度快等先天性的优点,使得它在专业程序设计上具有不可代替的地位。
AVR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(ReducedInstructionSetCPU)精简指令集高速8位单片机。
AVR的单片机可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。
AVR的主要特性
高可靠性、功能强、高速度、低功耗和低价位,一直是衡量单片机性能的重要指标,也是单片机占领市场、赖以生存的必要条件。
早期单片机主要由于工艺及设计水平不高、功耗高和抗干扰性能差等原因,所以采取稳妥方案:
即采用较高的分频系数对时钟分频,使得指令周期长,执行速度慢。
以后的CMOS单片机虽然采用提高时钟频率和缩小分频系数等措施,但这种状态并未被彻底改观(51以及51兼容)。
此间虽有某些精简指令集单片机(RISC)问世,但依然沿袭对时钟分频的作法。
AVR单片机的推出,彻底打破这种旧设计格局,废除了机器周期,抛弃复杂指令计算机(CISC)追求指令完备的做法;采用精简指令集,以字作为指令长度单位,将内容丰富的操作数与操作码安排在一字之中(指令集中占大多数的单周期指令都是如此),取指周期短,又可预取指令,实现流水作业,故可高速执行指令。
当然这种速度上的升跃,是以高可靠性为其后盾的。
AVR单片机硬件结构采取8位机与16位机的折中策略,即采用局部寄存器存堆(32个寄存器文件)和单体高速输入/输出的方案(即输入捕获寄存器、输出比较匹配寄存器及相应控制逻辑)。
提高了指令执行速度(1Mips/MHz),克服了瓶颈现象,增强了功能;同时又减少了对外设管理的开销,相对简化了硬件结构,降低了成本。
故AVR单片机在软/硬件开销、速度、性能和成本诸多方面取得了优化平衡,是高性价比的单片机。
AVR单片机内嵌高质量的Flash程序存储器,擦写方便,支持ISP和IAP,便于产品的调试、开发、生产、更新。
内嵌长寿命的EEProm可长期保存关键数据,避免断电丢失。
片内大容量的RAM不仅能满足一般场合的使用,同时也更有效的支持使用高级语言开发系统程序,并可像MCS-51单片机那样扩展外部RAM。
AVR单片机的I/O线全部带可设置的上拉电阻、可单独设定为输入/输出、可设定(初始)高阻输入、驱动能力强(可省去功率驱动器件)等特性,使的得I/O口资源灵活、功能强大、可充分利用。
AVR单片机片内具备多种独立的时钟分频器,分别供URAT、I2C、SPI使用。
其中与8/16位定时器配合的具有多达10位的预分频器,可通过软件设定分频系数提供多种档次的定时时间。
AVR单片机独有的“以定时器/计数器(单)双向计数形成三角波,再与输出比较匹配寄存器配合,生成占空比可变、频率可变、相位可变方波的设计方法(即脉宽调制输出PWM)”更是令人耳目一新。
增强性的高速同/异步串口,具有硬件产生校验码、硬件检测和校验侦错、两级接收缓冲、波特率自动调整定位(接收时)、屏蔽数据帧等功能,提高了通信的可靠性,方便程序编写,更便于组成分布式网络和实现多机通信系统的复杂应用,串口功能大大超过MCS-51/96单片机的串口,加之AVR单片机高速,中断服务时间短,故可实现高波特率通讯。
面向字节的高速硬件串行接口TWI、SPI。
TWI与I2C接口兼容,具备ACK信号硬件发送与识别、地址识别、总线仲裁等功能,能实现主/从机的收/发全部4种组合的多机通信。
SPI支持主/从机等4种组合的多机通信。
AVR单片机有自动上电复位电路、独立的看门狗电路、低电压检测电路BOD,多个复位源(自动上下电复位、外部复位、看门狗复位、BOD复位),可设置的启动后延时运行程序,增强了嵌入式系统的可靠性。
AVR单片机具有多种省电休眠模式,且可宽电压运行(5-2.7V),抗干扰能力强,可降低一般8位机中的软件抗干扰设计工作量和硬件的使用量。
AVR单片机技术体现了单片机集多种器件(包括FLASH程序存储器、看门狗、EEPROM、同/异步串行口、TWI、SPI、A/D模数转换器、定时器/计数器等)和多种功能(增强可靠性的复位系统、降低功耗抗干扰的休眠模式、品种多门类全的中断系统、具输入捕获和比较匹配输出等多样化功能的定时器/计数器、具替换功能的I/O端口……)于一身,充分体现了单片机技术的从“片自为战”向“片上系统SoC”过渡的发展方向。
综上所述,AVR单片机博采众长,又具独特技术,不愧为8位机中的佼佼者。
AVR系列单片机的选型
AVR单片机系列齐全,可适用于各种不同场合的要求。
AVR单片机有3个档次:
低档Tiny系列AVR单片机:
主要有Tiny11/12/13/15/26/28等;
中档AT90S系列AVR单片机:
主要有AT90S1200/2313/8515/8535等;(正在淘汰或转型到Mega中)
高档ATmega系列AVR单片机:
主要有ATmega8/16/32/64/128(存储容量为8/16/32/64/128KB)以及ATmega8515/8535等。
AVR器件引脚从8脚到64脚,还有各种不同封装供选择。
详细的选型信息可以参考本网站的AVR单片机全系列性能参数表。
AVR芯片入门知识
ATmel挪威设计中心的A先生与V先生,于97年设计出一款使用RISC指令集的8位单片机,起名为AVR。
AVR芯片的主要特性,及与其它单片机比较的优点,相信我不用多说了,大家随便找一本参考书就可以看到洋洋洒洒的十几页的介绍。
如果你想看到只有一页的介绍,可以参考我们网站上的资料:
AVR单片机性能简介。
我就AVR单片机分3个档次,四种封装做一个介绍。
AVR单片机系列齐全,可适用于各种不同场合的要求。
AVR单片机有3个档次:
低档Tiny系列AVR单片机:
主要有Tiny11/12/13/15/26/28等;
中档AT90S系列AVR单片机:
主要有AT90S1200/2313/8515/8535等;(正在淘汰或转型到Mega中)查看详细情况
高档ATmega系列AVR单片机:
主要有ATmega8/16/32/64/128(存储容量为8/16/32/64/128KB)以及ATmega8515/8535。
新的型号还有ATmega48/88/168(存储容量为4/8/16K)等。
如果你想获得最新的AVR芯片资料,可以下载:
2006-11AVR芯片选型指南,包含所有AVR芯片的参数信息。
AVR器件引脚从8脚到64脚(新的芯片高达100脚),还有各种不同封装供选择。
FLASH,RAM及配置的不同,形成比较宽的产品线系列。
详细的选型信息可以参考本网站的AVR单片机全系列性能参数表。
AVR前几年已经显示了进军中国市场的决心。
几乎所有的AVR主流芯片,都已经有了官方正规翻译的中文DataSheet(数据手册)。
我们网站整理了国内最完整的中文datasheet供大家下载学习:
点击打开AVR数据手册下载界面。
虽然我们网站也收录了双龙翻译的一些旧芯片资料,但建议大家不要使用,错误较多,并且严重的偷工减料。
官方翻译的中文手册比较严谨,但仍可能存在一些小缺陷。
有需要时,请参考英文版本:
点击打开AVR数据手册下载界面。
AVR芯片型号的解释,以ATmega48V-10AI为例:
ATmega48代表产品.
V代表低/宽电压版本。
新出的AVR(M48/88/168,Tiny13/2313......)产品系列来说,-V是1.8-5.5V工作范围。
不带"V"是2.7-5.5V工作范围。
老的系列以L表示,2.7-5.5V工作范围,不带"L"是4.5-5.5V工作范围。
-10,表示最高工作频率,10MHz
A,表示封装。
AVR芯片有四种封装:
(如果你不熟悉封装,请参考我们为你准备的资料:
AVR封装图例)
1.A:
TQFP
2.P:
PDIP
3.S:
SOIC
4.M:
MLF
I,表示温度范围,将来还表示ROHS
1.I,工业级
2.C,商业级
3.A,汽车级
4.E,扩展级(-40--105C)
5.U,符合ROHS,工业级,将来会以这个后缀为主,商业级不作新的标示
AVRICC使用快速入门菜单解释下一页:
新手的第一个程序,实现红绿灯不断闪烁。
ICCAVR是一款非常好用的AVR编译软件,官方网站:
目前最新版为7.0,本站的所有例程都以ICCAVR为开发平台。
如果你还没有配置好开发环境,请参看:
AVR开发环境ICC+AVRstudio配置。
如果你有时间看很多理论的没有实际操作价值的说明,请下载ICCavr中文使用说明。
如果你想快速进入使用,请参看本文档。
1、关于窗口设置:
[如图]
如上图:
这是ICCavr6.31版本的窗口,分为5大区。
1.菜单项
1.文件
▪新建,打开,打印文件等常规选项。
很别扭的一件事关闭文件在菜单里。
2.编辑
▪复制,粘贴,删除,撤销,重做等常规操作,一看就明白。
3.搜索
▪搜索功能,书签功能,可以使用添加标签,删除标签,下一个标签,转到标签。
你可以直接点击左侧快速添加或删除标签。
▪
4.视图
▪对新手几乎没有用处,你可以用它显示或者隐藏工程文件窗口,编译状态窗口。
查看输出文件,makefile文件,Map文件。
5.ProjectMenu工程菜单
▪New...–创建一个新的工程文件
▪Open–打开一个已经存在的工程文件
▪OpenAllFiles...–打开工程的全部源文件
▪CloseAllFiles–关闭全部打开的文件
▪Reopen...–重新打开一个最近打开过的工程文件
▪MakeProject–解释和编译已经修改的文件为输出文件*注意与7RebuildAll的区别
▪RebuildAll–重新构筑全部文件注意在版本升级后对原有工程最好全部重新构筑*
▪AddFile(s)–添加一个文件到工程中这个文件可以是非源文件
▪RemoveSelectedFiles–从工程中删除选择的文件
▪Option...–打开工程编译选项对话框
▪Close–关闭工程
▪SaveAs...–将工程换一个名称存盘
▪
6.ToolsMenu工具菜单
▪EnvironmentOptions–打开环境和终端仿真器选项对话框
▪EditorandPrintOptions–打开编辑和打印选项对话框
▪AVRCalc–打开AVR计算器可以计算
▪UART的波特率定时器的定时常数
▪ApplicationBuilder–打开应用向导程序生成硬件的初始化代码cool,对新手非常有用
▪ConfigureTools–允许你添加自己的内容到工具菜单
▪Run–以命令行方式运行一个程序
7.Terminal电脑终端
▪使用很少,串口调试终端
8.Help帮助不用我说了。
▪快捷菜单图标
▪从左到右依次为:
新建,打开,保存,打印,剪切,复制,粘贴,查找,编译,停止,工程属性,到第一个错误,下一个错误,应用向导程序ApplicationBuilder,ISP对话框。
o程序编辑区
▪所有的程序编辑工作在这里完成。
▪点右键有快捷菜单,最常用的事新建一个文件编辑之后,加入到工程。
▪
o编译状态显示栏[图中为报错的情况]
▪显示编译状态,查看报错情况进行相应修改。
o文件列表框
▪文件分类管理查看,这里的分类只是为了方便管理,并没有实际的分开。
▪文件分为.c程序文件,.h头文件,说明文档。
下一页:
新手的第一个程序,实现红绿灯不断闪烁。
上一页:
ICCavr的菜单与界面解释新手的第一个程序下一页:
ICCavr生成程序文件解释
论坛链接:
ICC+avrstudio下的第一个程序。
本页和论坛内容相同,欢迎你到论坛参与讨论。
本例实现红绿灯不断闪烁的效果。
如果你还没有配置好开发环境,请首先看:
avr开发环境配置【icc+AVRStudio】
第一步:
运行iccavr,运行project>>new,新建一个工程,保存为main.prj,保存在新文件夹avr_first下。
第二步:
运行Tools>>ApplicationBuilder建立工程的工具。
看到如下图的设置界面。
icc建立avr工程属性设置
将TargatCPU改为M16,因为我们使用的芯片是mega16
将Xtalspeed改为1.0000,我们使用内部晶振,内部晶振频率为1Mhz。
切换到Ports选项,作如下图所示的更改。
Ports选项
意思是使用单片机的端口A,使用0和1两个脚输出高电平,因为我们所用二极管是低电平驱动的。
其他项不做更改,点OK完成。
第三步:
File>>Saveas保存到你刚才第一步建立的工程的文件夹中。
注意:
保存的文件名必须输入后缀名,形式如main.c。
第四步:
右键>>addtoproject
你将看到如下效果:
工程建立完成
第五步:
在编辑区添加如下程序代码,
CODE:
voidDelay(void)
{
unsignedchari,j;
for(i=200;i>0;i--)
{
for(j=200;j>0;j--)
;
}
}
voidmain(void)
{
init_devices(); //初始化
while
(1)
{
PORTA=0x02; //1脚为高,0脚为低,0脚灯亮
Delay(); //延时
PORTA=0x01; //0脚为高,1脚为低,1脚灯亮
Delay(); //延时
}
}
其中Delay为延时程序,main为主程序,保存程序。
第六步:
Project>>options,将Deviceconfiguration改为ATmega16,其他不变,点击ok,如下图
编译器环境配置
第七步:
Project>>rebuildall或者直接使用快捷键shift+f9 ,编译工程。
成功即可看到下图所示的样子。
编译完成
在状态区看到这样的代码:
D:
\ProgramFiles\icc\bin\imakew-fmain.mak
iccavr-c-ID:
\PROGRA~1\icc\include\-e-DATMEGA-DATMega16-l-g-Mavr_enhancedD:
\桌面\avr_first\main.c
iccavr-omain-LD:
\PROGRA~1\icc\lib\-g-ucrtatmega.o-bfunc_lit:
0x54.0x4000-dram_end:
0x45f-bdata:
0x60.0x45f-dhwstk_size:
16-beeprom:
1.512-fihx_coff-S2@main.lk -lcatmega
Device0%full.
Done.
第八步:
此时打开第一步建立工程的文件夹,可以看到如下文件。
文件列表
至此,在ICCAVR下的工作完成,请继续下一步,ICCavr生成程序文件解释。
上一页:
使用ICC+AVRstudio编写第一个程序ICCavr生成程序文件解释
ICCavr编译成功后会生成很多文件,对我们普通用户以及新手,有用的只有一个文件,*.cof调试用,*.hex机器码。
首先看图:
1.main._cmain.c修改并保存时,程序自动备份的文件,如果确认main.c没有问题了,可以删除。
2.main.c主程序文件
3.main.cofCOFF格式输出文件用于在ATMEL的AvrStudio环境下进行程序调试<记住这个文件>
4.main.dbgImageCraft调试命令文件
5.main.dp2
6.main.hexINTELHEX格式文件其中包含了程序的机器代码
7.main.lis
8.main.lk
9.main.lst列表文件在这个文件中列举出了目标代码对应的最终地址
10.main.mak
11.main.mp内存映象文件它包含了您程序中有关符号及其所占内存大小的信息
12.main.o由汇编文件汇编产生的目标文件多个目标文件可以链接成一个可执行文件
13.main.prj工程文件
14.main.s表示是汇编语言源文件
15.MAIN.SRC工程配置记录
16.main_cof.aps使用AvrStudio调试后保存的调试环境相关信息。
下一步,要把程序写到芯片里面去了:
1.如果你用的是本站的豪华版JTAG&ISP二合一(AVRJTAG&ISPv3.0)或者是企业版JTAG&ISP二合一(AVRJTAG&ISPv3.0),请查看使用说明书:
2.只是下载程序,你可以:
STK500/ISP JTAG 烧录快速入门
3.要使用JTAG仿真:
AVRJTAG在线访真调试快速入门
4.或者使用ICC和并口ISP下载线下载程序
AVRstudio快速入门
AVRstudio是Atmel官方发行的免费软件,其强大的功能和正中的血统,使其成为绝大部分AVR开发者必不可少的工具。
如果你还想了解其他的开发软件,请参考:
AVR开发软件的介绍,如果你没有配置好开发环境,请看ICCavr+AVRstudio开发环境的配置。
按照本站提供的方法,安装好AVRstudio后可以看到如下界面:
功能介绍:
工程功能一:
编写、编译汇编工程项目。
(不推荐使用)
操作方法:
在菜单Project-->NewProject打开如下界面。
输入项目名按Fishish后出现汇编代码的编辑窗口。
注意:
由于本功能仅适合于汇编语言。
我们不推荐使用汇编开发AVR,故不推荐大家使用这个功能。
为何开发AVR使用C而不是使用汇编?
1、直观,可读性强:
这点很重要。
对于一个产品,周期是很长的,即使出第一台产品之后,还有很长的维护时间。
这中间维护人员可能经常变动,如果可读性强,将给维护工作省下很大的成本。
即使是在开发,可读性强的程序也便于查错。
2、模块化可以做的很好:
这点也是很重要的。
模块化做得好,当然程序得重用性就高。
对于公司来说,这一点是关系到公司长远发展的。
程序可以重用,说明下一次开发的投入就可以减少,时间也可以加快,多好的事呀。
团队合作也需要用模块化的程序去快速融合。
功能二:
使用STK500、JTAG或JTAGmkII下载
Connect与AutoConnect的区别,是每次都会提示选择的设备名称与连接端口。
AutoConect会自动使用上一次的设置,提高操作效率。
使用Connect会弹出如下的界面:
Port口为硬件连接端口,如果使用本站的下载器,usb设备会默认模拟到com3,如果你不清楚,选择Auto即可。
如果你没有连接STK500、JTAG、mkII等设备,可以使用DisconnectedMode(脱机模式)进入查看操作界面。
详细的下载方法,请参考本网站新手入门范例的有关介绍:
AVR下载烧录快速入门。
功能三:
仿真调试
可以使用软件仿真、JTAG仿真或JTAGmkII仿真三种方式。
论坛文章链接:
【icc+AVRStudio】下的第一个程序【三】——用【AVR-stdio】下载程序
可以在线仿真是AVR的一大优势,开发成本低,方便,快捷。
详细的仿真方法,请参考本网站新手入门范例的有关介绍:
JTAG在线仿真调试快速入门。
STK500JTAG下载烧录快速入门
导读:
本文介绍AVR官方唯一推荐的下载方法:
STK500。
也介绍了AVRStudio同时支持的JTAG下载,如果要仿真的话,还是少不了JTAG,所以JTAG下载也很常用。
并口下载由于速度很慢,AVRStudio也不支持并口下载,(仅能使用第三方的软件下载)故我们不推荐使用。
我们的感觉:
用过STK500下载后,就不会再使用并口下载了。
感觉是两种完全不同档次的方式,不过并口下载成本要低很多。
如果你没有配置好开发环境,请看ICCavr+AVRstudio开发环境的配置。
请确保你已经了解AVRStudio:
AVRStudio快速入门。
一:
STK500下载
支持的芯片:
支持全系列的AVR芯片。
并且,支持未来的AVR新芯片。
实际生产过程中,很多情况下是不留JTAG电路的,因为JTAG电路要占用IO口,并且并不是所有的芯片都支持JTAG下载,所以使用STK500下载很重要。
操作方法:
打开AVRStudio软件,按下图操作。
Connect与AutoConnect的区别,是每次都会提示选择的设备名称与连接端口。
AutoConect会自动使用上一次的设置,提高操作效率。
使用Connect会弹出如下的界面:
Port口为硬件连接端口,如果使用本站的下载器,usb设备会默认模拟到com3,如果你不清楚,选择Auto即可。
如果你没有连接STK500、JTAG、mkII等设备,可以使用DisconnectedMode(脱机模式)进入查看操作界面。
如果你已经按下图连接好,就能按Connect进行连接了:
(注意:
JTAG下载时接JTAG,ISP下载时接ISP,普通的编程器如果接错了,有可能会烧坏芯片或者丢失程序,本战的编程器有极强的保护功能,不会有这个危险。
)
连接成功后,进入如下的界面:
存储器锁定位(从上到下,一一对应)
保护类型
lb模式
lb2
lb