ATMEGA128--AVR教程

合集下载

AVR_atmega128里程仪

AVR_atmega128里程仪

通信与信息工程学院2015 /2016 学年第一学期课程设计实验报告模块名称A VR单片机课程设计专业学生班级学生学号学生姓名指导教师A VR单片机课程设计报告1.1设计课题与要求设计课题:基于LCD12864的里程仪的设计设计要求:1、由处理器ATmega128的定时器/计数器1生成0-20Hz的方波信号,由引脚OC1A输出,作为模拟测速传感器生成的信号;生成的方波信号作为定时/计数器3的输入捕捉信号,由引脚ICP3输入。

2、使用板载4个按键,其中的两个分别作为加速按键及减速按键,频率步进值为1Hz,另外两个作为开始行驶键和停止行驶键。

3、假定开始行驶后生成的方波信号每个脉冲对应的行驶距离为2米,通过测量脉冲个数计算总行车里程。

通过本次行车时间及总行车里程计算平均速度,当按下停止行驶键,模拟测速传感器的信号停止生成,本次行驶时间结束。

4、使用发光二极管作为超速告警指示灯,当即时速度超过90km/h时,告警指示灯闪烁报警,闪烁周期为1秒,正常行驶状态下,告警指示灯熄灭。

5、使用液晶屏显示主要参数:即时速度、平均速度、行车时间、行车里程。

1.2 硬件设计图1单片机PE端口图图2 LED图图3单片机PB端口图图4 四个按键图本次课程设计中相关的硬件部分见图1-图4,用到了PE0口的I/O口功能,控制LED灯的亮灭作为超速告警,PE7口定时器3的输入捕捉功能(ICP3),PB5口的比较匹配输出功能(OC1A),PB5口和PE7口用外接导线进行了连接,四个按键实现了改变T/C 1 的OCR1A值的功能和开始/关闭T/C 1的功能。

1.3软件设计1.3.1总体设计实现功能:定时器1在CTC模式下实现在OC1A口输出的方波频率在1~20HZ 之间,OC1A口的输出作为定时器3的输入捕捉信号,测量脉冲个数并记录下产生脉冲的周期,根据脉冲个数与行驶距离的换算关系,计算出即时速度,平均速度,行车时间和行车路程,并在LCD12864上进行实时显示。

Atmega128熔丝位设置

Atmega128熔丝位设置

Atmega128熔丝位设置ZHJ初学A VR单片机时最复杂最不容易懂的是熔丝位的设置,一旦设置错了很麻烦。

(如果已设置错了,处理见《A VR熔丝位恢复方式ZHJ》)有了本文,告别设置的不知所措吧!本文是Atmega128单片机的设置界面,下载用的是A VR Studio 4.13,下载器用的是深圳研学电子公司的ISP下载器(不是打广告,个人觉得好用)闲话少话,逐条解释吧!1.Atmega103 Compatibility Mode不勾选。

Atmega103兼容模式。

如果你用Atmega128代替Atmega103才勾选。

2.Watchdog Timer always不勾选。

看门狗始终开启。

此位勾选后软件不能关闭看门狗(除非你不想让软件可暂停看门狗工作)3.On-Chip Debug Enabled不勾选。

片上调试使能。

一般用不上4.JTAG Interface Enaled一般勾选此条小心设置!!JTAG接口使能。

如果你用的是ISP下载,且现在将来不会用JTAG下载,且想用PF4~PF7四个引脚作普通IO口使用,才不勾选。

5.Serial program downloading (SPI) enabled一般勾选此条小心设置!!SPI下载使能。

在ISP下载模式下不能更改。

在JTAG模式下可以更改为不勾选,不勾选后不能使用ISP下载。

6.Preserve EEPROM memory through the Chi Erase cycle勾选。

保护EEPROM中的数据,下载FLASH时不会被破坏。

7.Boot Flash section size=512 words Boot start address=$fe08.Boot Flash section size=1024 words Boot start address=$fe09.Boot Flash section size=2048 words Boot start address=$fe010.Boot Flash section size=4096 words Boot start address=$fe0四选一。

atmega128熔丝位配置

atmega128熔丝位配置

这几天一直在搞AVR ATmega128的程序,显示最基本的功能,但是因为用到了PORTG端口,而这个端口在ATmega128中是放在内部SRAM中的,是为了与ATmega103兼容,出厂时默认是不可以访问的。

因为这个问题,耽搁了几天。

现在看到如下文章,终于“柳暗花明”了。

转载于此,为记!对AVR熔丝位的配置是比较细致的工作,用户往往忽视其重要性,或感到不易掌握。

下面给出对AVR熔丝位的配置操作时的一些要点和需要注意的相关事项。

(1)在AVR的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态,“Unprogrammed”表示熔丝状态为“1”(禁止);“Programmed”表示熔丝状态为“0”(允许)。

因此,配置熔丝位的过程实际上是“配置熔丝位成为未编程状态“1”或成为已编程状态“0”。

(2)在使用通过选择打钩“√”方式确定熔丝位状态值的编程工具软件时,请首先仔细阅读软件的使用说明,弄清楚“√”表示设置熔丝位状态为“0”还是为“1”。

(3)使用CVAVR中的编程下载程序时应特别注意,由于CVAVR 编程下载界面初始打开时,大部分熔丝位的初始状态定义为“1”,因此不要使用其编程菜单选项中的“all”选项。

此时的“all”选项会以熔丝位的初始状态定义来配置芯片的熔丝位,而实际上其往往并不是用户所需要的配置结果。

如果要使用“all”选项,应先使用“read->fuse bits”读取芯片中熔丝位实际状态后,再使用“all”选项。

(4)新的AVR芯片在使用前,应首先查看它熔丝位的配置情况,再根据实际需要,进行熔丝位的配置,并将各个熔丝位的状态记录备案。

(5)AVR芯片加密以后仅仅是不能读取芯片内部Flash和E2PROM 中的数据,熔丝位的状态仍然可以读取但不能修改配置。

芯片擦除命令是将Flash和E2PROM中的数据清除,并同时将两位锁定位状态配置成“11”,处于无锁定状态。

ATMEGA128熔丝位配置详解

ATMEGA128熔丝位配置详解

ATMEGA128熔丝位配置详解熔丝位配置2009-07-29 11:51在配置熔丝位时应特别注意,部分熔丝位(如OCDEN、JTAGEN和SPIEN等)的配置是不可逆的2009年04月17日星期五 11:28引言AVR系列单片机在仿真调试之前,首先必须对AVR的熔丝位和锁定位进行配置。

如果配置不当,则可能造成单片机不能正常工作,严重时可能导致单片机死锁。

因此,对单片机熔丝位和锁定位的正确配置显得尤为重要。

熔丝位是对单片机具体功能和工作模式的限定,其正确配置与否直接影响到单片机能否正常工作;锁定位是对单片机的程序和数据进行加密,以防止单片机中的程序和数据被读出或写入。

在进行配置时,一般先配置熔丝位,再配置锁定位。

锁定位又分为引导程序区锁定位和程序及数据存储器锁定位两类。

对引导程序区锁定位进行编程可以实现两套保护模式,即应用区保护模式和Boot Loader区保护模式;不同的编程配置可以实现不同的加密级别。

对程序及数据存储器锁定位进行编程可以禁止对并行和SPI/JTAG串行编程模式中Flash和EEPROM进一步编程,从而对程序和存储器中的数据进行保护。

由于引导程序锁定位和程序及数据存储器锁定位的配置具有可逆性,因此可根据不同的需要多次编程,灵活改变。

但是,在配置熔丝位时应特别注意,部分熔丝位(如OCDEN、JTAGEN和SPIEN等)的配置是不可逆的。

在采用单一编程下载情况下(例如只采用JTAG下载或者只采用AVRISP并行下载),一旦配置后将不可改变。

鉴于熔丝位配置的重要性,本文以AVR系列的ATmega128单片机为例,详细介绍熔丝位的配置以及在配置过程中常出现的一些问题,并给出相应的解决办法,成功地解决了因熔丝位配置不当而引起的单片机不能正常工作和死锁等一系列问题。

1 熔丝位的配置ATmega128的熔丝位共有3个字节:熔丝位扩展字节、熔丝位高字节和熔丝位低字节。

表1、表2和表3分别描述了所有熔丝位的功能、默认值以及它们是如何映射到熔丝位字节的。

Atmega128开发板使用说明书

Atmega128开发板使用说明书

Atmega128开发板使用说明书概要介绍Atmega128开发板上硬件资源丰富,接口齐全,基本上涵盖了Atmega128单片机所能涉及到的所有功能,可以满足单片机开发工程师和电子爱好者的开发实验的需求,或者高校电子、计算机专业学生的学习实验的需要。

按照正规产品的要求设计,不纯粹是实验样品,器件选型、原理图、PCB设计的时候都充分考虑了可靠稳定性。

Atmega128的IO口资源丰富,板上所以接口都是独立使用的,不需要任何跳线进行设置, IO口外围扩展使用了2片锁存器74HC574,既可以使实验变得更加简单方便,又能让实验者掌握更多的单片机设计知识。

提供配套软件源代码,学习板的每个实验都有与其相对应的软件代码,是版主从多年的工作经验中提取出来的,并经过优化,具有较高的参考价值。

编程简单,学习板编程不需要专用烧录器,利用计算机的并口即可进行编程,速度快、操作简单。

1.产品清单Atmega128开发板的配件清单如下,当您第一次拿到产品的时候,请参照下图认真核对包装内配件是否齐全,以及各配件是否完好无损。

请按照下图安装122*32 LCD,lCD的一脚对准122*32 LCD插座的一脚,切记不要插反2.硬件布局说明步进电机接口直流电机接口数字温度传感器SD卡插座光敏电阻ADC输入电位器NTC热敏电阻JTAG接口继电器接口9V电源输入接口DAC输出接口RS485接口RS232接口红外发射管ISP编程接口LCD对比度调节电位器122 * 32点阵LCD接口16 * 2字符LCD接口红外接收管433M射频模块接口3 *4 矩阵键盘3.接口说明接口管脚顺序的确认方法●对于有卡口的接口,应对着卡口的方向看,最左边为第一个管脚,如下图所示:●对于用螺丝压线的接口,应对着入线的方向看,最左边为第一个管脚,如下图所示:特别提示:ISP下载接口与JTAG接口封装相同,下载程序时使用ISP接口,不要插到JTAG 接口上4.硬件开发环境的建立本站出售的AVR单片机学习板就是一套完整的硬件环境,它由学习板、电源、并口ISP 下载线等组成。

Mega128单片机调试与设置

Mega128单片机调试与设置

Mega128单片机调试与设置一、单片机型号为ATmega128A二、调试软件为iccavr7.22和AVRstudio4.0连调三、流程:1.在iccavr中建立工程文件。

2.在iccavr中新建一个项目,并保存。

注意保存文件名必须为.c才可以。

如下图。

3.在右上方file里面右键添加.c 文件。

4.然后编写程序。

注意一般程序包括如下库文件:#include <iom128v.h>#include <macros.h>#include <stdio.h>#include <string.h>5.在利用系统生成(build)钱,一定要进行系统相关的设置,此项非常重要,否则会出现各种问题。

特别是单片机的选取,一定要按照下图选取,选择ATmega1280是不对的。

具体设置在project -> options6.设置完毕后,建立工程。

7.无错误应该为下图8.然后打开AVRstudio,打开projectwizard -> open,然后打开后缀名为.cof 的文件,如下图所示:然后会自动生成后缀名为.aps的工程文件9.然后选择10.连接成功后直接进入到如下界面11.点击黑色的AVR进行基本的设置单片机为ATmega128,JTAG mode ,然后添加 .hex 文件。

熔丝位的设置如下,只有这几个有“√”,特别要注意将M103C 的“√”去掉。

内部1M 晶振用外部8M 晶振用注意此处要修改烧入单片机的程序名称,后缀名为 .hex ,在iccavr 建立的工程文件里添加点击program 即将程序烧写进入单片机中其他一般不要设置。

12.都设置完毕后就可以进行debug或者是烧写程序了。

Debug点击绿色按钮或者在debug里选择。

ATMEGA128熔丝位配置手册.wps

ATMEGA128熔丝位配置手册.wps

1、打钩的表明用到的功能
2、0表示允许,1表示禁止
3、BODLEVEL = 1 掉电检测2.7V 0 为4V
4、BODEN = 1 掉电检测失效,这和BODLEVEL配合使用
5、A VR芯片加密以后仅仅是不能读取Flash和E2PROM的内容,也不能重新下载进去,下载完了以后要给芯片加密,再想往里头灌程序就灌不进去了。

必须先擦除后再重新灌进去。

6、SPIEN = 0 表示允许使用SPI口下载
7、JTAGEN = 0 表示允许使用JTAG口下载
8、一般情况下不要把RESET定义成普通的I/O口,因为ISP 下载时要先拉低是芯片先进入复位状态。

9、M103C = 1 和ATMEGA103不兼容的方式运行,ATMEGA128的方式运行
10、SUT 1:0 = 1 0 以最长的延时方式启动
11、CLKSEL 3:1 = 1111以外部高频石英晶振3-8MHz或8MHz 以上,CLKSEL 3:0 = 0001 内部1MHz的RC振荡JTAGEN = 1 禁止JTAG口
12、WDTON = 1 禁止看门狗
13、EESAVE = 1 执行擦除命令时连同EEPROM的内容同FLASH的内容一同擦除
14、BOOTRST = 1 程序执行时从地址0x0000开始执行
BOOTRST = 0 程序执行时从地址BOOTLOAD起始地
址区开始执行
15、BOOTSZ1和BOOTSZ0决定了BOOTLOAD的大小和起
地址,默认为00 大小为4096字,起始地址为0xF000
16、LB 2:1 = 11 没有使能存储器使能保护功能
17、BLB02 : BLB01 = 11
18、BLB12 : BLB11 = 11。

Atmega128开发板使用说明书

Atmega128开发板使用说明书

Atmega128开发板使用说明书概要介绍Atmega128开发板上硬件资源丰富,接口齐全,基本上涵盖了Atmega128单片机所能涉及到的所有功能,可以满足单片机开发工程师和电子爱好者的开发实验的需求,或者高校电子、计算机专业学生的学习实验的需要。

按照正规产品的要求设计,不纯粹是实验样品,器件选型、原理图、PCB设计的时候都充分考虑了可靠稳定性。

Atmega128的IO口资源丰富,板上所以接口都是独立使用的,不需要任何跳线进行设置, IO口外围扩展使用了2片锁存器74HC574,既可以使实验变得更加简单方便,又能让实验者掌握更多的单片机设计知识。

提供配套软件源代码,学习板的每个实验都有与其相对应的软件代码,是版主从多年的工作经验中提取出来的,并经过优化,具有较高的参考价值。

编程简单,学习板编程不需要专用烧录器,利用计算机的并口即可进行编程,速度快、操作简单。

1.产品清单Atmega128开发板的配件清单如下,当您第一次拿到产品的时候,请参照下图认真核对包装内配件是否齐全,以及各配件是否完好无损。

请按照下图安装122*32 LCD,lCD的一脚对准122*32 LCD插座的一脚,切记不要插反2.硬件布局说明步进电机接口直流电机接口数字温度传感器SD卡插座光敏电阻ADC输入电位器NTC热敏电阻JTAG接口继电器接口9V电源输入接口DAC输出接口RS485接口RS232接口红外发射管ISP编程接口LCD对比度调节电位器122 * 32点阵LCD接口16 * 2字符LCD接口红外接收管433M射频模块接口3 *4 矩阵键盘3.接口说明接口管脚顺序的确认方法●对于有卡口的接口,应对着卡口的方向看,最左边为第一个管脚,如下图所示:●对于用螺丝压线的接口,应对着入线的方向看,最左边为第一个管脚,如下图所示:特别提示:ISP下载接口与JTAG接口封装相同,下载程序时使用ISP接口,不要插到JTAG 接口上4.硬件开发环境的建立本站出售的AVR单片机学习板就是一套完整的硬件环境,它由学习板、电源、并口ISP 下载线等组成。

ATMEGA128熔丝位配置详解

ATMEGA128熔丝位配置详解

ATMEGA128熔丝位配置详解熔丝位配置2009-07-29 11:51在配置熔丝位时应特别注意,部分熔丝位(如OCDEN、JTAGEN和SPIEN等)的配置是不可逆的2009年04月17日星期五 11:28引言AVR系列单片机在仿真调试之前,首先必须对AVR的熔丝位和锁定位进行配置。

如果配置不当,则可能造成单片机不能正常工作,严重时可能导致单片机死锁。

因此,对单片机熔丝位和锁定位的正确配置显得尤为重要。

熔丝位是对单片机具体功能和工作模式的限定,其正确配置与否直接影响到单片机能否正常工作;锁定位是对单片机的程序和数据进行加密,以防止单片机中的程序和数据被读出或写入。

在进行配置时,一般先配置熔丝位,再配置锁定位。

锁定位又分为引导程序区锁定位和程序及数据存储器锁定位两类。

对引导程序区锁定位进行编程可以实现两套保护模式,即应用区保护模式和Boot Loader区保护模式;不同的编程配置可以实现不同的加密级别。

对程序及数据存储器锁定位进行编程可以禁止对并行和SPI/JTAG串行编程模式中Flash和EEPROM进一步编程,从而对程序和存储器中的数据进行保护。

由于引导程序锁定位和程序及数据存储器锁定位的配置具有可逆性,因此可根据不同的需要多次编程,灵活改变。

但是,在配置熔丝位时应特别注意,部分熔丝位(如OCDEN、JTAGEN和SPIEN等)的配置是不可逆的。

在采用单一编程下载情况下(例如只采用JTAG下载或者只采用AVRISP并行下载),一旦配置后将不可改变。

鉴于熔丝位配置的重要性,本文以AVR系列的ATmega128单片机为例,详细介绍熔丝位的配置以及在配置过程中常出现的一些问题,并给出相应的解决办法,成功地解决了因熔丝位配置不当而引起的单片机不能正常工作和死锁等一系列问题。

1 熔丝位的配置ATmega128的熔丝位共有3个字节:熔丝位扩展字节、熔丝位高字节和熔丝位低字节。

表1、表2和表3分别描述了所有熔丝位的功能、默认值以及它们是如何映射到熔丝位字节的。

AVR ATmega128全功能工业控制器设计文档说明书

AVR ATmega128全功能工业控制器设计文档说明书

AVR单片机的全功能工业控制器设计吴焕琅深圳市中天越华自动控制科技有限公司摘要:介绍一款工业级的实用全功能控制器。

该控制器能隔离采集多种输入信号,输出多种控制信号;具有实时时钟、历史数据存储功能,彩色液晶显示界面,带有触摸屏操作和远程通信接口。

核心部分CPU采用AVR ATmega128单片机。

目前已用于批量生产。

关键词:隔离采集控制单片机彩色显示485接口ATmega128DS1642引言在自动控制产品的设计过程中,实现方案的选择常常是很矛盾的。

使用可编程逻辑控制器(PLC)和人机界面(HMI)来实现,开发速度较快,但成本太高,所开发的产品没有市场竞争力;使用单片机开发,成本低但开发周期长、开发量大且通用性不好。

用户需要的是一种成本低、开发周期较短、通用性较好的控制器,因此全功能工业控制器有很大的应用市场。

全功能工业控制器的整个电路分为信号隔离输入部分、控制器输出部分、实时时钟与历史数据存储部分、彩色液晶显示和触摸屏控制部分、通信接口等。

1信号隔离输入电路信号隔离输入电路分为开关量隔离输入、模拟量隔离输入、高速电脉冲隔离输入,电路如图1所示,开关量的隔离输入较为简单,输入信号采用光耦进行隔离后送入单片的普通I/O,单片机用查询方式进行采集。

图1信号隔离输入电路高速电脉冲的采集需要注意的是,所设计的电路必须适应高速信号采集的要求,因此隔离光耦应采用高速光耦(如6N137等)。

采用查询方式采集高速脉冲容易造成采集数据的丢失,高速脉冲应采用中断方式进行采集。

模拟量隔离采集是本控制器的一个重点和难点,笔者之前采用了线性光耦等多种方式进行模拟量的隔离采集实验,均未获满意的效果。

这里采用一种先将模拟量数字化(使用AD7705),然后通过有光耦隔离的数据口送到CPU进行模拟量隔离采集的方式,效果理想。

2控制器输出电路控制器的输出方式有继电器输出、晶体管输出、模拟电压输出,如图2所示。

继电器输出和晶体管输出电路较为简单,这里不作详细的介绍。

AVR单片机Atmega128外扩RAM

AVR单片机Atmega128外扩RAM

AVR单片机Atmega128外扩RAM关键字:AVR单片机Atmega128 外扩RAM由于AVR系列单片机采用的是内部外部RAM统一编址,ATmega128工作在非ATmega 103模式时具有4k+256B的包括寄存器文件(通用工作寄存器)、I/O寄存器、扩展I/O寄存器和内部SRAM的连续内部存储空间。

所以在扩展外部RAM时,和内部SRAM地址重叠的外部RAM地址是不能直接访问的。

也就是说扩展的外部RAM每64k要浪费掉内部SRAM那么大的空间(AT90系列如此)。

所幸的是mega系列解决了这一缺点,专门有一个寄存器XMCRB用来解决对与内部SRAM地址空间相同地址的外部RAM访问。

其低三位XMM2 、XMM1 、XMM0三位的设置,决定高位地址线PC口的哪些口线被释放为普通I/O,而不是作为高位地址。

这样就可以巧妙地屏蔽高位,就ATmega128而言,要避开内部的4k+245B空间,注意到,只要所访问的地址范围大于0X1100(且MCUCR,XMCRA设置正确),那么所访问的就是外部RAM空间。

所以在访问小于4k+245B的外部地址时,只要使地址大于0X10FF就可以访问了。

0X1100用二进制表示为:0001,0001,0000,0000,高位地址线PC5、PC6、PC7没有使用到。

在访问的时候就可设置XMCRB的XMM1、XMM0位为1,释放该三根地址线为普通I/O,将其设为输出。

并且输出0;并在外部地址加上一个虚地址以使地址超过0X1100,如此设置,就可以访问外部0X0000~0X10FF空间了。

超出这个空间,CPU就自动将其识别为外部相应的地址了,不用设置XMCRB寄存器(即不需释放任何总线),也不需加虚地址,按照正常外部RAM访问即可。

在此约定所加的虚地址为0X2000,XMCRB寄存器设置为****,*011,所释放的地址线输出0。

表10-0X10FF范围的寄存器状态和寻址范围(略)表2各寻址范围地址线和寄存器状态表(略)表3各寻址范围地址线和寄存器状态表(略)比如要访问外部0X0200地址,用二进制表示为0000,0010,0000,0000。

ATmega128单片机指导手册

ATmega128单片机指导手册

ATmega128
方框图
Figure 2. 方框图
PF0 - PF7
PA0 - PA7
PC0 - PC7
VCC GND PORTF DRIVERS PORTA DRIVERS PORTC DRIVERS
DATA REGISTER PORTF
DATA DIR. REG. PORTF
DATA REGISTER PORTA
X Y Z
TIMER/ COUNTERS
PEN
PROGRAMMING LOGIC
INSTRUCTION DECODER
INTERRUPT UNIT
CONTROL LINES
ALU
EEPROM
STATUS REGISTER
USART0
SPI
USART1
TWO-WIRE SERIAL INTERFACE
CALIB. OSC
OSCILLATOR JTAG TAP
OSCILLATOR
ON-CHIP DEBUG
PROGRAM FLASH
SRAM
MCU CONTROL REGISTER
TIMING AND CONTROL
BOUNDARYSCAN
INSTRUCTION REGISTER
GENERAL PURPOSE REGISTERS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49
48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33
PA3 (AD3) PA4 (AD4) PA5 (AD5) PA6 (AD6) PA7 (AD7) PG2(ALE) PC7 (A15) PC6 (A14) PC5 (A13) PC4 (A12) PC3 (A11) PC2 (A10) PC1 (A9) PC0 (A8) PG1(RD) PG0(WR)

AVR 单片机 串口通信 串行通讯 详细例程介绍

AVR 单片机 串口通信 串行通讯 详细例程介绍
AVR 系列单片机的串行通讯实例
Atmega128 有两个串口:USART0 与 USART1 以 USART0 为例
串口的初始化包括:
传输模式的选择:同步还是异步,默认为异步模式,可通过选择 USART 控制和状态 寄存器 UCSR0C 中的 UMSEL 位来选择,UMSEL 为 0,是异步模式. 波特率的设置:通信的双方都必须有相同的波特率,波特率可以通过设置波特率 发生寄存器 UBRR0 来确定,UBRR0 为两字节 16 位的寄存器,可分为 UBRR0H 和 UBRR0L.同时起作用的还有 UCSR0A 中的波特率加倍位 UX2,当 UX2 为 1 时设置的 波特率加倍.
3、设置 UCSR0C:
Bit6-UMSEL0:USART0 的模式选择,0 为异步模式,1 为同步模式 Bit5:4-UPM01:0:奇偶校验模式,00 禁止,01,保留,10 偶校验,11,奇校验 Bit3-USBS0:停止位的选择,0 停止位为 1bit,1 停止位为 2-bits Bit2:1-UCSZ01:0:字符长度,当 UCSZ02 为 0 时,00 表示 5 位,01 表示 6 位,10 表示 7 位,11 表示 8 位.当 UCSZ02 为 1 时,11 表示 9 位.(UCSZ02 为 UCSR0B 里的一位寄存器)
{ putchar0(*s); s++; }
putchar0(0x0a);//回车换行 putchar0(0x0d); }
/******************************************************************* ********* 函数功能:主程序 入口参数: 出口参数: ******************************************************************** ********/ void main(void) { unsigned char i;

ATMEGA128实验开发板用户手册

ATMEGA128实验开发板用户手册

ATMEGA128实验开发板用户手册V1.32011年5月E-mail: sdfdlut@1. ATMEGA128单片机概述ATMEGA128单片机是ATMEL公司推出的一款基于AVR内核,采用RISC结构,低功耗CMOS的8位单片机。

由于在一个周期内执行一条指令,ATMEGA128可以达到接近1MIPS/MHz的性能。

其内核将32个工作寄存器和丰富的指令集联结在一起,所有的工作寄存器都与ALU(逻辑单元)直接连接,实现了在一个时钟周期内执行一条指令可以同时访问两个独立的寄存器。

这种结构提高了代码效率,是AVR的运行速度比普通的CISC单片机高出10倍。

ATMEGA128单片机具有以下特点:128KB的可在系统编程/应用编程(ISP/IAP)Flash 程序存储器,4KB E2PROM,4KB SRAM,32个通用工作寄存器,53个通用I/O口,实时时钟计数器(RTC),4个带有比较模式灵活的定时器/计数器,2个可编程的USART接口,一个8为面向字节的TWI(I2C)总线接口,8通道单端或差分输入的10位ADC(其中一个差分通道为增益可调),可编程带内部振荡器的看门狗定时器,一个SPI接口,一个兼容IEEE 1149.1标准的JTAG接口(用于在线仿真调试和程序下载),6种可通过软件选择的节电模式。

2. ATMEGA128实验开发套件本实验开发套件包括:●测试通过的MEGA128实验板1块;●配套资料光盘1张;●AVR ISP并口下载线1条;●5110液晶模块1个;●遥控器1个;●USB ASP下载线(选配);●AVR JTAGICE仿真器(选配)。

其中资料光盘的内容主要包括:●ATMEGA128实验开发板用户手册.pdf(本文档);●AVR教程:⏹WINAVR 使用入门.pdf⏹AVR Studio 使用入门.pdf⏹AVR基本硬件线路设计与分析.pdf⏹芯艺的AVR_GCC教程.pdf⏹AVR的IO结构分析与范例.mht⏹AVR高速嵌入式单片机原理与应用●芯片手册(包括24C02、74HC595以及中文的I2C协议文档等内容)●开发工具软件;⏹AVR Studio V4.12;⏹WINAVR(GCC) 编译器;⏹IAR for AVR V4.10A;⏹并口下载工具PONYPROG V2.06;⏹ICCAVR 双龙提供;图3 新建工程对话框点击Next,进入第三步。

AVR ATMEGA128 串口简单好使程序

AVR ATMEGA128 串口简单好使程序
}
//以上是串口发送接收函数
int main(void)
{
//PORTE=0B01000011;//调整让单片机的发送和接收直接连到MAX3232上
//DDRE =0B11100110;
PORTE=0B01110011;//针对本电路中的相关设置RS485通信
DDRE =0B11110110;
unsigned char temp;
Usart0_init();
while(1)
{
temp=Usart0_receive();
Usart0_transmit(temp);
//Usart0_transmit(0x5f);
}
//return 0;
}
#include <avr/io.h>
#include <avr/interrupt.h>
#include<util/delay.h>
#define UDRE0 5
#define RXC0 7
void Usart0_init(void) ;
//设置波特率9.6k,8位数据位,无校验,接收发送使能,1位停止位
UCSR0B=(1<<RXEN0)|(1<<TXEN0); //发送接收使能,使用查询方式,故没有使能中断
}
void Usart0_transmit(unsigned char c) //查询方式发送接收字符函数
{
while( !(UCSR0A&(1<<UDRE0)));//等待发送缓冲区为空
UDR0=c;
void Usart0_transmit(unsigned char c);

AVR单片机ATmega128芯片BootLoader详细介绍

AVR单片机ATmega128芯片BootLoader详细介绍

TIFR = TIFR|0x02;
}
}
//每秒向 PC 机发送一个控制字符"C",等待控制字〈soh〉
while(uart_getchar()!=XMODEM_SOH) //receive the start of Xmodem
{
if(TIFR & 0x02)
//timer0 over flow
{
Target: Mega128
Crystal: 16Mhz
Used: T/C0,USART0
*****************************************************/
#include #define SPM_PAGESIZE 256
//M128的一个 Flash 页为256字节(128字)
void quit(void)
{
uart_putchar('O');uart_putchar('K');
uart_putchar(0x0d);uart_putchar(0x0a);
while(!(UCSR0A & 0x20));
//等待结束提示信息回送完成
MCUCR = 0x01;
MCUCR = 0x00;
区本身。引导加载程序还可以对自身进行更新修改,甚至可以将自身删除,使系统的自编程能力消失。引导加载程序区的大小
可以由芯片的熔丝位设置,该段程序区还提供两组锁定位,以便用户选择对该段程序区的不同级别的保护。本节将给出一个实
际的的 Boot Loader 程序,它可以配合 Windows 中的超级终端程序,采用 Xmodem 传输协议,通过 RS232接口下载更新

从ATmega328学习avrgcc库

从ATmega328学习avrgcc库

从ATmega328学习avrgcc库Arduino 底层库探索因为我使用的是arduino UNO开发板,所以就使用Arduino IDE 了。

我们的目的是探索底层的avr库,所以先去arduino的安装路径里看看文件分布。

在Arduino\\hardware\ools\\avr\\avr\\include\\avr目录下面,找到IO.H文件打开里面都是些宏定义,找到下面的代码#elif defined (__AVR_ATmega328P__)# include删除IDE中原来的代码,编写如下代码。

#define __AVR_ATmega328P__#include#includeint main(){}然后我们打开iom328p.h这个文件,里面都是些宏定义,我们这次的目标是点亮一个LED。

要点亮LED,我们就需要知道芯片的引脚图通过上图,我们确定要使用arduino的IO8即PB0来点亮LED。

接下来我们在iom328p.h#define PINB4 4#define PINB5 5#define PINB6 6#define PINB7 7#define DDRB_SFR_IO8(0x04)#define DDB0 0#define DDB1 1#define DDB2 2#define DDB3 3#define DDB4 4#define DDB5 5#define DDB6 6#define DDB7 7#define PORTB _SFR_IO8(0x05)#define PORTB0 0#define PORTB1 1#define PORTB2 2#define PORTB3 3#define PORTB4 4#define PORTB5 5#define PORTB6 6#define PORTB7 7通过查阅芯片手册可以知道,每个IO口都由3个寄存器位控制,DDxn,PORTxn,PINxn。

atmega128单片机概述-5-安装iccav

atmega128单片机概述-5-安装iccav
2. AVR编译器:
《Asmpack》—汇编开发包;
《ICCAVR》—AVRC语言开发包;
《AVR Studio》—AVR开发包;
3. 下载软件:
《Pony prog》—“马头”下载软件;
《双龙下载软件》—国内公司的下载软件;
《串口调试助手》—232口程序.
2021/7/13
3
1、初步安装“ICCAVR”
安装“ICCAVR”软件 (AVR C语言开发包)
Xiajie
2014年4月
2021/7/13
1
内容
1、初步安装“ICCAVR” 2、注册
2.1 第一次注册 2.2 第二次注册
2021/7/13
2
控制系统配套光盘简介
1. AVR控制系统资料: 控制系统说明书—本系统说明书; 控制器接线表—系统接线的全部信息; demo3.hex—系统检验程序; demo3C例程—检验程序C源码;
从运行状态进入“ICC AVR”,即可进入软件开发 平台,点击“Help/Register Software,则打开 相应的窗口1。
2021/7/13
6
2.1 第一次注册的结果
2021/7/13
7
2.2 第二次注册:
从运行状态进入“ICC AVR”,即可进入软件开发 平台,点击“Help/Register Software,则打开 相应的窗口2。
2021果
2021/7/13
9
THANKS!
2021/7/13
10
问题?
直接双击“iccavrdem.exe”即可,但安装完毕后, 只能得到一个使用45天的演示版平台软件,需要 进行相应的注册,才可能继续使用。
2021/7/13
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

AVR教程(1):AVR单片机介绍作者:微雪电子文章来源: 点击数: 478 更新时间:2008-4-1 23:58:21 AVR,它来源于:1997年,由ATMEL公司挪威设计中心的A先生与V先生利用ATMEL公司的Flash新技术,共同研发出RISC精简指令集的高速8位单片机,简称AVR。

AVR单片机特点每种MCU都有自身的优点与缺点,与其它8-bit MCU相比,AVR 8-bit MCU最大的特点是:●哈佛结构,具备1MIPS / MHz的高速运行处理能力;●超功能精简指令集(RISC),具有32个通用工作寄存器,克服了如8051 MCU采用单一ACC 进行处理造成的瓶颈现象;●快速的存取寄存器组、单周期指令系统,大大优化了目标代码的大小、执行效率,部分型号FLASH非常大,特别适用于使用高级语言进行开发;●作输出时与PIC的HI/LOW相同,可输出40mA(单一输出),作输入时可设置为三态高阻抗输入或带上拉电阻输入,具备10mA-20mA灌电流的能力;●片内集成多种频率的RC振荡器、上电自动复位、看门狗、启动延时等功能,外围电路更加简单,系统更加稳定可靠;●大部分AVR片上资源丰富:带E2PROM,PWM,RTC,SPI,UART,TWI,ISP,AD,Analog Comp arator,WDT等;●大部分AVR除了有ISP功能外,还有IAP功能,方便升级或销毁应用程序。

●性价比高。

开发AVR单片机,需要哪些编译器、调试器?软件名称类型简介官方网址AVR Studio IDE、汇编编译器ATMEL AVR Studio集成开发环境(IDE),可使用汇编语言进行开发(使用其它语言需第三方软件协助),集软硬件仿真、调试、下载编程于一体。

ATMEL官方及市面上通用的AVR开发工具都支持AVRStudio。

GCCAVR (WinAVR) C编译器GCC是Linux的唯一开发语言。

GCC的编译器优化程度可以说是目前世界上民用软件中做的最好的,另外,它有一个非常大优点是,免费!在国外,使用它的人几乎是最多的。

但,相对而言,它的缺点是,使用操作较为麻烦。

ICC AVRC编译器(集烧写程序功能)市面上(大陆)的教科书使用它作为例程的较多,集成代码生成向导,虽然它的各方面性能均不是特别突出,但使用较为方便。

虽然ICCAVR软件不是免费的,但,它有Demo版本,在45天内是完全版。

CodeVision AVRC编译器(集烧写程序功能)与KeilC51的代码风格最为相似,集成较多常用外围器件的操作函数,集成代码生成向导,有软件模块,不是免费软件,Demo版为限2KB版。

www.hpinfotech.roATman AVR C编译器支持多个模块调试(AVRStudio不支持多个模块调试)。

IAR AVR C编译器IAR实际上在国外比较多人使用,但它的价格较为昂贵,所以,中国大陆内,使用它的开发人员较少,只有习惯用IAR的工程师才会去使用它。

AVR的仿真方式一般来说,AVR有三种仿真方式:(1)JTAG仿真方式,适用于具备JTAG仿真接口的AVR。

如:Atmega16/32,At mega64/128等。

JTAG是IEEE的标准规范,通过这个标准,可对具有JTAG接口的芯片的硬件电路进行边界扫描和故障检测。

部分AVR型号带JTAG仿真调试接口,可使用JTAG仿真方式。

(2)debugWIRE仿真方式,适用于具备debugWIRE仿真接口的AVR。

如:Attin y13/24/2313,Atmega48/88/168等。

debugWIRE 是用以降低成本和调试引脚的开销,ATMEL在AVR器件上使用的新的调试接口:debugWIRE,与JTAG相比其主要区别在于仅使用一根信号线(R ESET),即可完成调试信息的交互,达到控制程序流向,执行指令以及编程熔丝位的功能。

它的总的连接图如下:这里的 RESET 信号被用于传递调试信息。

(3)采用仿真头替代AVR MCU仿真方式,适用于不带仿真接口的AVR。

如Atti ny26,Atmega8,Atmega8515等。

AVR的烧写方式一般来说,AVR的编程方式有:(1)串行编程(即ISP编程)ISP是In System Program的缩写,意思是在系统编程。

目前的AVR芯片基本上都具备ISP接口,可通过ISP接口进行编程。

它一共使用了两条电源线:V CC、GND,三条信号线:SCK、MOSI、MISO,以及复位线:RESET。

由于仅仅使用了几条数据线,所以我们亦常将其称为串行编程。

值得注意的是,虽然下载器端使用的信号线名为SCK、MOSI、MISO,但AVR MCU的信号端不一定是名为SCK、M OSI、MISO。

AVR的串行编程方式有很多种,如:(1)STK200/STK300:并口下载器多采用该烧写方式,最早期的一种烧写方式,支持型号少,烧写速度低,不支持AVR Studio。

(2)STK500:ATMEL最推荐的编程方式,由于采用ATMEL官方的STK500固件,使得它可烧写全系列AVR(若对固件进行升级亦可支持未来的AVR型号),烧写速度非常快,支持AVR Studio。

(3)AVRISP(准STK500):由于采用ATMEL官方的STK500固件,使得它可烧写大部分AVR(若对固件进行升级亦可支持未来的AVR型号),烧写速度非常快,支持AVR Studio。

(4)AVRISPmkII:由于采用ATMEL官方的AVRISPmkII固件,使得它可烧写大部分AVR(若对固件进行升级亦可支持未来的AVR型号),烧写速度非常快,支持AVR Studio。

(5)当然还有其它的ISP方式,但已经那些均不是最为常见的串行编程方式,在此不在作一一介绍。

(2)高压/并行编程AVR的高压编程/并行编程,实际上是更早出现的编程方法,它功能强大,但需要:1)连接较多的引脚(故称“并行编程”)2)使用12V电压(故称“高压编程”)联合起来一般叫高压/并行编程。

实际上,有些编程是高压/串行编程,如Attiny13。

(Attiny13端口非常少)高压/并行编程(理论上)能修复任何熔丝位,例如:1)Attiny13/24/2313、Atmega8/48/88/168等AVR的RESET端口与IO端口是共用的,由于这类AVR的引脚一般较少,(如Attiny13仅有6个IO口),经常出现IO不够用的情况,需要将RESET端口设置为IO端口使用,然而,一旦将RESET设置为IO,便无法再进行ISP编程了,更无法使用ISP恢复RESET功能,因为ISP编程需要RESET功能。

然而,这种情况下,使用高压/并行编程,可以恢复RESET功能,(注意:RESET端口与IO端口是共用的AVR,具备debugWIRE功能,“dW”熔丝位必须为启动状态)因为高压/并行编程不需要RESET功能。

2)当设置错了熔丝位导致芯片锁死,这种情况下,使用高压/并行编程,可恢复熔丝位。

(3)JTAG编程JTAG烧写方式仅适用于带JTAG接口的AVR,另外,JTAG对比ISP烧写方式主要有个缺点:必须占用JTAG对应的IO端口。

例如,ATMEGA16必须占用PC2-PC5这几个端口。

然而,有时候,缺点也是优点,因为对于IO够用的AVR来说,在产品开发过程,可以用JTAG接口来仿真调试,产品量产后,产品板预留的JT AG接口还可以用来烧写程序。

(4)IAP编程AVR MCU的ISP功能和debugWIRE功能是互斥的,也就是说,使能了AVR MC U的 debugWIRE 功能后ISP功能就无法使用,使能了ISP功能后debugWIRE功能就无法使用。

那么,怎样确定AVR的RESET引脚为ISP功能使用还是debugWIRE功能使用呢?在具备debugWIRE 的AVR 器件中,有一个可编程的熔丝位DWEN,如果该熔丝被编程(且lockbits未被编程),则debugWIRE 功能被启用,AVR的RESET引脚将被作为debugWIRE 功能使用,可与调试器进行debugWIRE仿真通信(此时,ISP 功能被禁用)。

AVR芯片出厂时,DWEN熔丝位是未编程的,也即是说I SP 功能是使能的,debugWIRE 被禁用。

使用ISP 功能时,通过调试器对debug WIRE熔丝进行编程使能,可启用debugWIRE功能;使用debugWIRE功能时,对通过调试器对debugWIRE熔丝禁止,可使能ISP 功能。

编程语言建议使用C而不是汇编开发AVR首先说说C的优点。

1、直观,可读性强:这点很重要。

对于一个产品,周期是很长的,即使出第一台产品之后,还有很长的维护时间。

这中间维护人员可能经常变动,如果可读性强,将给维护工作省下很大的成本。

即使是在开发,可读性强的程序也便于查错。

2、模块化可以做的很好:这点也是很重要的。

模块化做得好,当然程序得重用性就高。

对于公司来说,这一点是关系到公司长远发展的。

程序可以重用,说明下一次开发的投入就可以减少,时间也可以加快,多好的事呀。

还有很多有点,当然也就是高级语言相对于汇编语言的优点,这里就不一一列举了。

再来看看汇编的优点:应该来说,汇编语言操作硬件直观,对于硬件非常熟悉的人来说,直接操作很方便。

另外可能就是很多人说的效率要高了。

针对以上两点我来说说,首先“汇编语言操作硬件直观”,这是在代码编写阶段,对于整个产品周期来说,应该是要避免使用汇编语言的,这个在C语言的优点中已经说明。

对于第二点,效率问题,目前C语言的编译器优化也做的很好,对于一个汇编不是很熟练的来说,C编出来的程序应该不会效率比汇编低。

当然这样就对开发人员的要求降低了很多,人员的限制也就没有那么严格。

另外是否真的是效率问题呢。

我觉得应该是一个整体效率和局部效率的均衡问题。

需要提高的是整体的效率。

一个好的软件架构,远远比一个好的函数效率要高的多。

因此主要的精力应该放在软件的架构上。

另外现在CPU的速度不停的往上提,CPU 越来越快,这点应该也可以弥补程序的效率吧。

当然,我的意思不是不学习汇编。

汇编对于熟悉硬件有很大的好处,应此汇编语言在学习初期一定是要学习的。

在基本的硬件熟悉之后,就可以转向C了。

相关文档
最新文档