BASCOM-AVR初级入门实例教程—第二讲 认识AVR单片机

BASCOM-AVR初级入门实例教程—第二讲 认识AVR单片机
BASCOM-AVR初级入门实例教程—第二讲 认识AVR单片机

第二讲认识AVR单片机

关于AVR单片机的资料,网上一搜一大堆,这里就不细讲了。

这里主要介绍一下AVR单片机的基本电路和熔丝位设置,熔丝对于初学者来说可能比较头疼。

芯片的说明书(DATASHEET)是最好的老师,尤其初学者,一定要多看,反复看,初级问题一般会在上面找到答案。AVR的说明书编得非常详细,多数常用芯片还提供中文版,这也降低了初学者的入门门槛。

MEGA8和MEGA16是比较常用的AVR芯片,本教程主要以这两款芯片为例。

2.1外部复位电路

外部复位由外加于RESET 引脚的低电平产生,按下SW,触发复位动作,MCU重新启动。

C1的作用是为了稳定可靠,按键按下后电容被迅速放电,按键松开后,通过电阻向电容充电,以保证足够长的复位时间确保稳定复位。

D1的作用有两个:一是将复位输入的最高电压钳在Vcc+0.5V 左右;二是当断电时,将R1电阻短路,让C1快速放电,下一次来电时,能产生有效的复位。

实际应用电路中,可以省掉D1、C1。若不需要外部复位,SW也可省掉,RESET 引脚只接10K电阻到VCC。MCU上电后,RESET引脚内部上拉为高电平,悬空不接任何电路,MCU也能正常工作。

2.2振荡电路

AVR系统时钟源可由外部晶体、内部RC振荡器、外部RC振荡器、外部时钟提供,通过配置熔丝位进行选择。

通常使用外部晶体和内部RC两种方式之一。如果熔丝配置成外部RC或外部时钟,会造成芯片不能通过ISP(串行编程)进行正常编程,这就是所谓的芯片被锁,后面有较详细介绍。

MEGA16晶振连接电路

MEGA16外部RC电路

MEGA系列AVR单片机使用外部晶振时,C1、C2这两只电容不接也能正常工作,规范的电路一般还是接上。如果不需要太高精度的时钟,可以使用内部RC 振荡,即不需要接任何外围零件。

当进行串口通讯时,一般需要接适合串口数据传输的特殊频率晶振,比如常用的3.6864MHz、7.3728MHz、11.0592MHz等。

下表列出了不同波特率和不同晶振频率下,实际产生的波特率与目标波特率的偏差。一般偏差不超过0.5%是可以接受的,但偏差较大时发送器的抗噪性会降低。特别是需要传输大量数据时,应选择偏差小的波特率和晶振频率组合。

波特率

3.6864MHz

4.0000MHz 7.3728MHz8.0000MHz11.0592MHz14.7456MHz 16.0000MHz

(bps)

2400 0.0% 0.2% 0.0% -0.1% 0.0% 0.0% 0.0% 4800 0.0% 0.2% 0.0% 0.2% 0.0% 0.0% -0.1% 9600 0.0% 0.2% 0.0% 0.2% 0.0% 0.0% 0.2% 14.4k 0.0% -0.8% 0.0% 0.6% 0.0% 0.0% -0.1% 19.2k 0.0% 0.2% 0.0% 0.2% 0.0% 0.0% 0.2% 28.8k 0.0% 2.1% 0.0% -0.8% 0.0% 0.0% 0.6% 38.4k 0.0% 0.2% 0.0% 0.2% 0.0% 0.0% 0.2% 57.6k 0.0% -3.5% 0.0% 2.1% 0.0% 0.0% -0.8% 76.8k 0.0% -7.0% 0.0% 0.2% 0.0% 0.0% 0.2% 115.2k 0.0% 8.5% 0.0% -3.5% 0.0% 0.0% 2.1% 230.4k 0.0% 8.5% 0.0% 8.5% 0.0% 0.0% -3.5% 250k -7.8% 0.0% -7.8% 0.0% -7.8% 5.3% 0.0%

0.5M -7.8% 0.0% -7.8% 0.0% -7.8% -7.8% 0.0%

1M – – -7.8% 0.0% – -7.8% 0.0%

2.2ISP下载口电路

2.2.1ISP是一种通用的程序下载方式,所有AVR单片机都有ISP下载接口。ISP下载线成本低廉,制作简单,可以使用ISP编程软件通过ISP下载线对AVR 单片机进行读写操作。

标准ISP_10PIN接口 标准ISP_6PIN接口

大部分AVR的ISP接口使用SCK、MOSI、MISO引脚,如Ttiny13/24/2313、Mega48/88/16、Mega8/16/32/162、Mega8515/8535等。

少部分使用SCK、PDI、PDO引脚,如Mega64/128/1281等。对应引脚如下表所示。

ISP下载器端口Mega8等Mega128等

MISO MISO PDO

VCC VCC VCC

SCK SCK SCK

MOSI MOSI PDI

RESET RESET RESET

GND GND GND

Mega16-P ISP接口示意图

2.2.2下载线种类很多,只简单讲一下最常用的两种,并口和USBASP下载线。并口下载线顾名思义接电脑的并口(打印口),制作简单,价格便宜,可用SLISP 软件(双龙)进行操作。USBASP下载线是一位德国人开发的,接电脑的USB口,用一片Mega8做控制芯片,使用方便,可用PROGISP软件(智峰)进行操作。

并口下载线USBASP下载线

AVR ISP并口下载线电路

AVR ISP简易并口下载线电路

USBASP官方电路图

USBASP为开源项目,从官方网站上可以下载所有资料。注意的一点是电路中的D1、D2稳压二极管不能省略,USB数据传输线电气电平为3.3V,若省略,可能造成电脑不能正确识别USBASP设备。

BASCOM-AVR支持很多种下载工具,其中包括并口和USBASP下载线,帮助里有详细说明。当使用BASCOM下载程序时,需要在

2.3AVR单片机熔丝设置

2.3.1熔丝位是AVR单片机比较独到的特征,在每一种型号的AVR单片机内部都有一些特定含义的熔丝位,其特性表现为多次擦写的E2PROM。用户通过配置(编程)这些熔丝位,可以设置AVR的一些特性,参数以及I/O配置等,也可对片内运行代码锁定(加密)。对于初学者来说,AVR的熔丝位是“高深莫测”,稍不注意,单片机就“锁死”了。

每个熔丝位有两种状态,已编程(Programmed)和未编程(Unprogrammed)。熔丝位状态为“0”时表示已编程(Programmed),状态为“1”时表示未编程(Unprogrammed)。

Mega8默认熔丝位状态

通过设置单个或者组合熔丝位来配置AVR单片机特性。以Mega8为例。

BODLEVEL BOD电平选择1:2.7V;0:4.0V

RSTDISBL 禁用或允许PC6作为外部复位引脚 1:允许 0:禁用SPIEN SPI下载允许1:SPI下载禁止 0:SPI下载使能EESAVE擦除芯片时保留EEPROM数据1:不保留;0:保留

SUT1和SUT0这2个熔丝位选择复位启动时间

CKDEL3~0这4个熔丝位选择单片机的时钟源

熔丝位的详细解释及其代表的意义,请仔细阅读DATASHEET,上面有非常详尽的说明。

2.3.2“锁死”AVR芯片,就是配置的熔丝位使单片机状态与所处的运用环境不一致,使之不能正常工作或进行程序下载。

常见的几种熔丝设置不当“锁死”芯片情况:

① SPIEN设置为1,即禁止ISP下载。一些ISP软件将此位设为不可编辑。

② RSTDISBL设置为0,即禁止外部RESET复位,将RESET复位脚用作I/O使用(PC6)。按照ISP下载时序,需要将RESET拉低进入编程模式,将此引脚设置为I/O后,已失去了RESET功能,因而无法进行ISP下载。

③ CKDEL3~0设置为0000,即配置为外部时钟。初学者往往弄不清外部时钟和外部晶振,外部时钟能够自主为单片机提供时钟脉冲,例如有源晶振,外部晶振一般指无源振荡晶体。若此项设置为外部时钟而锁了芯片,可将XTAL1脚接有源晶振、信号发生器、或者用其它关单片机产生的振荡源,写回熔丝位。

④ CKDEL3~0设置为0101、0110、0111、1000,即配置为外部RC。这种情况需要搭个简单的RC电路进行解锁,频率可以通过方程f = 1/(3RC) 进行粗略估计,电容C 至少要22pF

⑤ CKDEL3~0设置为1001,即配置为外部低频晶振,如32.768KHz手表晶振。在这个低速率下,ISP下载线一般不能正常工作,造成对芯片无法再读写。

所谓的“锁死”,只是对于普通ISP编程操作而言,使用高压编程,可以任意配置熔丝,不存在锁死的问题。

笔者设计的AVR高压并行、高压串行编程器,可以对MEGA和TINY系列单片机进行任意编程。经过断断续续的改进,具备了比较完善的功能,已有很多AVR 单片机爱好者使用。AVR高压并行编程器、可脱机高压并行编程器的制作资料已经公布,也有很多AVR单片机爱好者自行制作,反映很好。

高压并行https://www.360docs.net/doc/902871620.html,/forum.php?mod=viewthread&tid=212

高压串行https://www.360docs.net/doc/902871620.html,/forum.php?mod=viewthread&tid=189

2.3.3MEGA16、32等芯片的JTAGEN熔丝位。经常有初学者问:我的MEGA16坏了,PC口不好用。这个问题往往是因为JTAGEN熔丝位。一些AVR 单片机具备JTAG 接口,可以通过JTAG 接口对Flash、EEPROM、熔丝位和锁定位进行编程,可以仿真调试程序,接口使用TMS、TCK、TDI、TDO引脚。M16的这4个引脚在PORTC口上,芯片出厂默认为JTAG使能,即JTAGEN熔丝位为0,引脚作为JTAG端口,所以无法进行I/O控制。将JTAGEN熔丝位为1时,禁止JTAG使能,这4个引脚就可以作为普通I/O使用了。

加密位是为了保护芯片内的程序代码而设置,并行和串行方式无法读出加密芯片内的正确数据。加密位写入后,再进行写操作无效,只有执行擦除芯片操作,加密位才能恢复为1。

相关主题
相关文档
最新文档