ATmega128单片机IAP功能的应用

合集下载

ATmega128在开发应用中应注意的问题

ATmega128在开发应用中应注意的问题

ATmega128在开发应用中应注意的问题摘要: ATmega128是一种与51系列不同的单片机,本文应用ICCAVR和pony prog2000作为主要开发工具,通过分析其在开发过程中特殊的开发方法,从而达到更好地掌握和使用ATmega128的目的。

关键词: ATmega128 单片机ATmega128是AVR系列中功能最强的单片机,具有如下主要特点:(1)先进的RISC精简指令集结构:ATmega128具有133条功能强大的指令,大部分指令在单时钟周期内执行;有32b×8个通用工作寄存器;片内带有执行时间为2个时钟周期的硬件乘法器。

(2)非易失性程序和数据存储器:ATmega128具有128KB在线可重复编程Flash、4KB的E2PROM以及4KB内部SRAM。

在其BOOT区具有独立的加密位,可通过片内的引导程序实现在系统编程,写操作时真正可读。

(3)具有JTAG接口:通过JTAG接口对Flash、E2PROM熔丝位和加密位编程。

(4)增强的硬件功能:ATmega128具有2个带预分频器和一种比较模式的8位定时/计数器;2个扩充的带预分频器和比较模式、捕获模式的16位定时/计数器;独立振荡器的实时计数器;2通道8位PWM;6通道2~16位精度PWM;8通道10位A/D转换;输出比较调节器;8个单端通道;7个微分通道;2个增益为1x、10x或200x的微分通道;二线(I2C)串行接口;2路可编程串行UART接口;主/从SPI串行接口;带内部振荡器的可编程看门狗定时器等。

(5)独有的特点:上电复位和可编程的低电压检测;内部可校准的RC振荡器;5种睡眠模式,即空闲模式、ADC噪声抑制模式、省电模式、掉电模式、待命模式和扩展待命模式;可通过软件选择时钟频率;通过1个熔丝选定ATmega103兼容模式;全局上拉禁止。

笔者通过使用ATmega128单片机,总结出在使用ATmega128过程中应注意的问题,希望能给即将使用该单片机的读者提供有用的信息。

ATmega128的外部并行接口器件扩展应用

ATmega128的外部并行接口器件扩展应用

ATmega128的外部并行接口器件扩展应用ATmega128片内的RAM有4K字节,这在8位单片机中算佼佼者。

因此,设计一般的应用系统,应尽量不采用外部扩展并行器件的设计。

这样不仅方便PCB板的设计,减少PCB板的面积,同时也提高了系统的抗干扰性。

对于必须采用外部并行器件扩展的设计,ATmega128的PORTA(低8位地址线和8位数据线复用)、PORAC(高8位地址线)口提供了并行扩展接口。

尽管并行接口的基本使用原理同一般的单片机相同,但由于ATmega128的结构上的特点,以及其使用了增强型的并行接口,因此在使用并行扩展接口时还需要仔细的设计。

其主要特性有:*外部并行扩展的地址从0x1100开始;*使用外部并行扩展时,应将MCUCR寄存器中的SRE位置“1”,允许外部并行扩展;*可将PORTC口高位不用的地址线释放,作为普通的I/O口使用;*可设置对不同区域采用不同的读写操作时序(加等待),用于配合扩展使用不同时序操作的外部并行器件。

5.5.1 外部扩展RAM存储器的设计下图给出一个外部扩展32K的RAM(6264)的译码参考电路。

图中使用了一片74HC138和与门,与门的输出作为6264的片选信号,其地址空间为0x0000 –0x8FFF。

74HC138其它7个引脚输出用于在地址大于0x9000以上空间扩展其它更多的并行接口器件,每根线选通的地址空间为4K。

由于ATmega128的RAM空间前4352个字节分配给芯片内部的通用寄存器、I/O寄存器和4K 字节的内部SRAM,所以外部并行扩展器件的起始地址是从0x1100开始的(见第二章内容)。

当MCU在对0X0000-0X10FF范围的SRAM地址空间操作时,实际是对芯片内部的SRAM或寄存器操作,尽管会影响地址总线、数据总线和ALE,但此时和不受影响,因此对相应的处在这段地址范围的外部扩展的存储器没有影响。

在图5.6的设计中,实际上已经把6264中地址范围在0x0000-0x0FFF的一段存储单元“移”到ATmega128的RAM地址空间高端0x8000-0x8FFF处。

基于Atmega128单片机设计的嵌入式控制器

基于Atmega128单片机设计的嵌入式控制器

基于Atmega128单片机设计的嵌入式控制器
 采用Atmega128单片机设计的嵌入式控制器,模拟量输入通道用
Atmega128片内A/D转换器,输出用AD421D/A转换器,数字量I/O通道配
置高速先耦器件.用LCCavr编译器修改OSTaskStklnit()函数及其相关文件,
定义数据类型等以实现MICroC/OS-Ⅱ的移植.
1 引言
 嵌入式控制器是机电设备实现自动化的核心部件。

故以大型机电设备为控制对象,利用高性能Atmega 128微处理器,设计了具有现场总线(CANBUS)网络通信和一定通用性的多功能嵌入式智能控制器。

2 硬件设计
 系统的硬件结构如图1。

 本控制器的核心采用64管脚TQFP封装的Atmega128芯片,具有53个
可编程的I/O引脚,片内集成有128KB闪存、4KB EEPROM 和
4KBSRAM,适合I/O通道和存储空间的需求。

ATmega128 单片机硬件电路设计

ATmega128 单片机硬件电路设计

ATmega128 单片机硬件电路设计在本系统中,本小节主要讲ATmega128 单片机的内部资源、工作原理和硬件电路设计等。

2.5.1 ATmega128 芯片介绍ATmega128 为基于AVR RISC 结构的8 位低功耗CMOS 微处理器。

片内ISP Flash 可以通过SPI 接口、通用编程器,或引导程序多次编程。

引导程序可以使用任何接口来下载应用程序到应用Flash 存储器。

通过将8 位RISC CPU 与系统内可编程的Flash 集成在一个芯片内,ATmega128 为许多嵌入式控制应用提供了灵活而低成本的方案。

ATmega128 单片机的功能特点如下:(1)高性能、低功耗的AVR 8 位微处理器(2)先进的RISC 结构①133 条指令大多数可以在一个时钟周期内完成② 32x8 个通用工作寄存器+外设控制寄存器③全静态工作④工作于16 MHz 时性能高达16 MIPS ⑤只需两个时钟周期的硬件乘法器(3)非易失性的程序和数据存储器① 128K 字节的系统内可编程Flash ②寿命: 10,000 次写/ 擦除周期③具有独立锁定位、可选择的启动代码区(4)通过片内的启动程序实现系统内编程① 4K 字节的EEPROM ② 4K 字节的内部SRAM ③多达64K 字节的优化的外部存储器空间④可以对锁定位进行编程以实现软件加密⑤可以通过SPI 实现系统内编程(5)JTAG 接口(与IEEE 1149.1 标准兼容)①遵循JTAG 标准的边界扫描功能②支持扩展的片内调试③通过JTAG 接口实现对Flash,EEPROM,熔丝位和锁定位的编程(6)外设特点①两个具有独立的预分频器和比较器功能的8 位定时器/ 计数器②两个具有预分频器、比较功能和捕捉功能的16 位定时器/ 计数器③具有独立预分频器的实时时钟计数器④两路8 位PWM ⑤ 6 路分辨率可编程(2 到16 位)的PWM ⑥输出比较调制器⑦ 8 路10 位ADC ⑧面向字节的两线接口⑨两个可编程的串行USART ⑩可工作于主机/ 从机模式的SPI 串行接口(7)特殊的处理器特点①上电复位以及可编程的掉电检测②片内经过标定的RC 振荡器③片内/ 片外中断源④ 6 种睡眠模式: 空闲模式、ADC 噪声抑制模式、省电模式、掉电模式、Standby 模式以及扩展的Standby 模式⑤可以通过软件进行选择的时钟频率⑥通过熔丝位可以选择ATmega103 兼容模式⑦全局上拉禁止功能ATmega128 芯片有64 个引脚,其中60 个引脚具有I/O 口功能,资源比较丰富,下面对ATmega128 的各个引脚做简单介绍:VCC:数字电路的电源。

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单片机概述、系统结构解析知识讲解
1)AVR单片机废除机器周期,采用RISC,以字为指令 长度单位,取指周期短,可预取指令,实现流水作业, 可高速执行指令。有高可靠性为后盾。
2)AVR单片机在软/硬件开销、速度、性能和成本多方 面取得优化平衡,是高性价比的单片机。
3)内嵌高质量的 Flash程序存储器,擦写方便,支持 ISP和IAP,便于产品 的调试、开发、生产、更新。
AT90S1200/2313/8515/8535 AT89C51
高档ATmega系列单片机
ATmega8/16/32/64/128 存储容量为8/16/32/64/128KB ATmega8515/8535
64脚
6/78 导航、制导与控制
内容
1、AVR单片机简介
AVR单片机主要特性 AVR系列单片机的选型
ATmega128单片机 概述、系统结构
夏洁 2009年3月
1
内容
一、 ATmega128单片机概述系统结构
1、AVR单片机简介(主要特性、选型) 2、ATmega128单片机
二、 ATmega128单片机系统结构
2/78 导航、制导与控制
1、AVR单片机简介
ATMEL公司介绍
是世界上著名的高性能、低功耗、非易失性存 储器和数字集成电路的一流半导体制造公司。
1997年,ATMEL公司出于市场需求,推出 了全新配置的精简指令集RISC单片机高速 8位单片机,简称为AVR。
广泛应用于计算机外设、工业实时控制, 仪器仪表、通信设备、家用电器等各个领 域。
3/78 导航、制导与控制
1.1 AVR单片机主要特性
衡量单片机性能的重要指标
高可靠性、功能强、高速度、低功耗、低价位
ATmega128单片机结构框图

ATMEGA128单片机的软件远程升级.

ATMEGA128单片机的软件远程升级.

ATMEGA128单片机的软件远程升级2008-01-20摘要:介绍了ATMEGA128单片机应用中的在线编程方法。

给出了软件IAP升级设计中应注意的一些关键技术,结合某市地铁调度系统对IAP升级的可靠性和保密性等问题进行了简单的论述。

关键词:IAP Flash bootloader存储器远程升级在线升级闪速程序存储器的编程方法常见的有以下几种:(1)传统的并行编程方法;(2)通过串行口进行在线编程ISP?InSystemProgrammability?:对器件或电路甚至整个系统进行现场升级或功能重构;(3)在运行中,应用程序控制下的应用在线编程IAP?InApplicationProgramming?;IAP模式简单地说就是在某一个section中运行程序,同时对另一个section进行擦除、读取、写入等操作。

ISP方式相对于传统方式有了极大的进步,它不需要将芯片从电路板上卸下就可对芯片进行编程,减少了开发时间,简化了产品制造流程,并大大降低了现场升级的困难。

而IAP方式是对芯片的编程处于应用程序控制之下,对芯片的编程融入在通信系统当中,通过INTERNET网络来升级指定目标芯片的软件。

图1 某城市地铁调度指挥系统的网络结构随着芯片技术的高速发展,各厂家相继推出了自己的支持ISP/IAP编程模式的芯片,如美国ATMEL公司的ATMEGA128、ATMEGA169,SiliconStorageTechnology公司的SST89C54/58j等。

其中美国ATMEL公司推出的ATMEGA128是基于AVRRISC的低功耗8位单片机,最高工作频率可达16MHz,具有128KBFLASH内部存储应用器、4KBEEPROM和SRAM数据存储空间,最大可达4096字节的独立加密位的可选bootloader程序代码区,以及相应的'专门用来支持(IAP)操作的操作控制寄存器SPMCR。

近年来该型单片机以其优良而稳定的性能广泛应用于各种电子产品中。

ATMEGA128单片机的数据实时采集系统

ATMEGA128单片机的数据实时采集系统

摘要随着电子科技的不断发展与进步,电压测量成为广大电子领域中必须掌握的过程,并且对测量的精度和采集功能的要求也越来越高,而电压的测量与显示系统甚为重要。

本文介绍的重点是电压数据的采集与显示系统,数据采集与通信控制采用了单片机ATMEGA128来实现,硬件部分是以单片机为核心,还包括ISP下载模块,显示模块,复位和晶振部分,还有一些简单的外围电路。

8路被测电压通过ATMEGA128自带的模-数转换,实现对采集到的数据进行模拟量到数字量的转换,由单片机对数据进行处理,用LED 数码管模块来显示所采集的结果,由相关控制器完成数据接收和显示,c程序编写了更加明了化数据显示界面。

本系统主要包括四大模块:数据采集模块、控制模块、显示模块、A/D转换模块。

绘制电路原理图与工作流程图,并进行调试,最终设计完成了该系统的硬件电路。

在软件编程上,采用了C语言进行编程,开发环境使用相关集成开发环境。

开发了显示模块程序、通道切换程序、A/D转换程序。

关键词:单片机;LED;A/D转换;模块显示;电压测量AbstractAlong with the development of electronic technology progress, voltage measurement of electronic fields become broad must grasp of the process, and the accuracy of measurement and collection function requirements, and more and more is also high voltage measurement and display system is very important. This paper focuses on voltage data acquisition and display system, data collection and communication control using modular design, data collection and communication control adopted MCU ATMEGA128, hardware part is, still include singlechip mode - several module, ISP download module, display module, Reset and part of vibration, and some simple outer circuit. 8 and the voltage to be measured by ATMEGA128 own mode - and to count the collected data for analog to digital, by SCM processing of data, using a digital display module to show the tube, the related results of collecting data receiving and display controller, C programming and the data showed that the interface. This system mainly including four modules: the data acquisition module, control module, display module, A/D conversion module. Draw circuit principle diagram and the work flow, and debugging, finally completed the system design of hardware circuit. In software programming, the C language program development environment, use the integrated development environment. Develop A display module procedures, channel switching procedures, A/D conversion program..Key words: SCM, LED, A/D conversion, module display voltage measurements.目录引言 (1)1绪论 (2)1.1 研究背景及其目的意义 (2)1.2 国内外研究现状 (3)1.3 该课题研究的主要内容 (3)2 数据采集总体设计 (5)2.1 系统设计的基本要求 (5)2.2 数据采集系统结构功能及简介 (5)2.3 硬件开发工具 (6)2.3.1 Altium Designer6.9简介 (6)2.3.2 Altium Designer6.9设计理念 (6)2.3.3 Altium Designer6.9特点 (7)2.4 软件开发工具 (8)2.4.1 ICCA VR (8)2.5 SLISP软件 (9)2.5.1 软件特点 (10)2.5.2 软件使用步骤 (10)3硬件设计 (12)3.1 CUP选型 (12)3.1.1 ATmega128L简介...................................................................................... .123.1.2 ATmega128L特点...................................................................................... .123.1.3 定时器\计数器 ............................................................. 错误!未定义书签。

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

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

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

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

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

目前已用于批量生产。

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

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

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

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

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

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

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

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

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

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

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

ATmega128单片机概述、系统结构解析

ATmega128单片机概述、系统结构解析
端口C 数据寄存器 端口C方向 数据寄存器
内部晶振 晶振 JTAG接口 编程计数器 堆栈指针 晶振 时序控制
在线调试
编程Flash
边界扫描
指令寄存器
通用 寄存器 中断单元
编程逻辑
指令译码器
控制线
状态寄存器
两线接口
模 拟 比 较 器
端口E 数据寄存器
端口E方向 数据寄存器
端口B 数据寄存器
端口B方向 数据寄存器
ATmega128单片机概述 ATmega128单片机引脚功能
导航、制导与控制
7/78
2.1 ATmega128单片机概述
基于AVR低功耗CMOS 8位微控制器,近1MIPS/MHz。 6种省电模式: 空闲模式Idle:CPU 停止工作,其他子系统继续工作;


ADC 噪声抑制模式:CPU 和所有的I/O 模块停止运行, 而异步定时器和ADC 继续工作;
导航、制导与控制 18/78
二、ATmega128单片机的 系统结构
19
ATmega128单片机的系统结构 主要内容
1、ATmega128的CPU内核
2、ATmega128 存储器 3、系统时钟及其选项 4、系统控制和复位 5、ATmega128 的中断向量 6、I/O端口 7、定时器/ 计数器(T/C) 8、模数转换器 A/D
AVR 中断响应时间最少为4个时钟周期。 若中断发生时MCU 处于睡眠模式,中断响应时间增加 到8个时钟周期。 中断返回亦需4个时钟。
导航、制导与控制 27/78
1.6.2 ATmega128的中断响应时间

内容
1、ATmega128的CPU内核
2、ATmega128 存储器

基于ATmega128单片机的自动投切开关电源设计

基于ATmega128单片机的自动投切开关电源设计

A T me g a l 2 8单 片机 为核 心 , 实 现 大 电 流 时 自动 由单 电 源供 电投 切 到 双 电 源 并联 均 流供 电 , 增 强 了开 关 电源 的 带 负载 能 力
和提 高 电 源 的供 电效 率 。 关键词 : 开关电源, 投切 , T L 4 9 4, AT me g a l 2 8
1 2 6
基于A T me g a l 2 8单 片机 的 自动 投切 开 关 电源 设 计
基于 A T m e g a l 2 8 单片机的 自动投切开关电源设计
王 建 ( 华南农业大学工程学院, 广东 广州 5 1 0 6 4 2 )
赖 奕佳 ( 深圳芯海科技有限公司, 广东 深圳 5 1 8 0 0 0 )
Abs t r ac t Th e N+I r e du n da n t f au l t t ol e r a n t a n d r e dun da n t p ower , a s we l as l mod ul ar p ower di s t r i bu t i on s y s t em t h e t ot al l o ad c ur —

1 . 1 D C — D C 变 换 器 电 路拓 扑 结 构
本设计 选 择 了 斩 波 电路 , 其 电路 原理 图 如 图 1
所 示 。选 择 升 压 轨 波 电路 作 为 D C— DC 变 换 的 主 拓 扑 结构 。 1 . 2 系 统性 能指 标 图1 升压斩 波电路原理
摘 要
电 源技 术 的发 展 方 向 之 一 是 并 联 运 行 分 布 电 源 系统 , 以便 通 过 N+ I冗 余 获 得 故 障 容 错 及 冗余 功 率 , 并 且 建 立 模 块 式

ATmega128单片机概述、系统结构

ATmega128单片机概述、系统结构
导航、制导与控制 16/78
11)端口F(PF7~PF0):
为ADC的模拟输入引脚或作为8位双向I/O 端口,并具有可编程的内部上拉电阻。 输出缓冲器具有对称的驱动特性,可以输 出和吸收大电流。 作为输入使用时,若内部上拉电阻使能, 则端口被外部电路拉低时将输出电流。 复位发生时该端口为三态。 可以作为JTAG接口
省电模式Power-save:异步定时器继续运行,器件的其 他部分则处于睡眠状态; 掉电模式Power-down:除了中断和硬件复位之外都停止 工作
Standby 模式:振荡器工作而其他部分睡眠;
扩展Standby 模式:允许振荡器和异步定时器继续工作。
导航、制导与控制 8/机 概述、系统结构
夏洁 2009年3月
1
内容
一、 ATmega128单片机概述系统结构
1、AVR单片机简介(主要特性、选型) 2、ATmega128单片机
二、 ATmega128单片机系统结构
导航、制导与控制
2/78
1、AVR单片机简介

ATMEL公司介绍
是世界上著名的高性能、低功耗、非易失性存
导航、制导与控制 18/78
二、ATmega128单片机的 系统结构
19
ATmega128单片机的系统结构 主要内容
1、ATmega128的CPU内核
2、ATmega128 存储器 3、系统时钟及其选项 4、系统控制和复位 5、ATmega128 的中断向量 6、I/O端口 7、定时器/ 计数器(T/C) 8、模数转换器 A/D
导航、制导与控制 15/78
9)端口A(PA7~PA0):
为8位双向I/O端口,并具有可编程的内部上拉
电阻。 输出缓冲器具有对称的驱动特性,可以输出和 吸收大电流。 作为输入使用时,若内部上拉电阻使能,则端 口被外部电路拉低时将输出电流。 复位发生时该端口为三态。

ATmega128 ATmega128L 介绍

ATmega128 ATmega128L 介绍
ATmega128 具有一整套的编程和系统开发工具 C编译器 宏汇编器 调试/模拟器 JTAG ICE 在线仿真器和SL-MEGA128评估板 二 ATmega103 和 ATmega128 的兼容性
ATmega128 是一种很复杂的微控制器 它的 I/O 地址取代了保留在AVR指令集中的 64 个 I/O地 址 为确保向后兼容 ATmega103 ATmega103上所有I/O的位置与ATmega128上的相同 很多附加的 I/O 地址被加到一个从$60到$FF的扩展外部I/O空间中(例如 在ATmega103 的内部 RAM 空间中) 这些地址只能用 LD/LDS/LDD 和 ST/STS/STD 指令访问 而不能用 IN 和 OUT 指令 内部 RAM 空 间的重定位对于ATmega103用户来说可能仍是一个问题 同样 如果代码使用绝对地址那么增加的中 断向量也是一个问题 要解决这些问题 可以通过编程一个熔丝M103C来选择 ATmega103 兼容模式 在这一模式下 不能使用扩展I/O空间中的程序 所以内部 RAM象ATmega103一样定位 同时 扩展 中断向量被去除 ATmega128 百分之百与 ATmega103引脚兼容 在PCB上可以替代ATmega103 应用笔记 “用ATmega128 替换 ATmega103” 中说明了用户在用ATmega128 替换 ATmega103时应 注意的事项 三 ATmega103 兼容模式
– 53个可编程的I/O 脚
– 64脚TQFP封装 (7) 工作电压
– 2.7 - 5.5V ATmega128L
– 4.5 - 5.5V ATmega128 (8) 速度等级
– 0 - 8 MHz ATmega128L
– 0 - 16 MHz ATmega128

Atmegal128单片机寄存器

Atmegal128单片机寄存器

ATMEGAL128二、寄存器I=1:允许全局中断C=0:禁止全局中断(2)T:位复制存储将寄存器某一位复制到T,或将T复制到寄存器某一位(3)H:半进位标志位H=1:低4位向高4位有进位H=0:低4位向高4位无进位(4)S:符号位S=N异或V(5)V:2进制补码溢出标志V=1:2进制补码有溢出V=0:2进制补码无溢出(6)N:负数标志位N=1:结果是负数N=0:结果是正数(7)Z:零标志Z=1:结果是零Z=0:结果不是零(二、三)SPH,SPL:堆栈指针堆栈区的初地址,SPL是低8位,SPH是高8位(1)SRE:外部扩展时能SRE=1:允许外部扩展,三总线扩展SRE=0:禁止外部扩展(2)SE休眠模式使能SE=1:允许休眠模式SE=0:禁止休眠模式(3)SM2,SM1,SM0:休眠模式选择(4)IVSEL:中断向量选择IVSEL=1:中断向量地址选择Boot区起始地址IVSEL=0:中断向量地址选择Flash区起始地址(5)IVCE:中断向量选择使能IVCE=1:使能中断向量选择IVCE=0:禁止中断向量选择(五)XMCRA:外部存储器控制A低地址(六)XMCRB:外部存储器控制B(1)XMBK外部存储器总线保持使能:XMBK=1:总线AD0~AD7口线上的总线保持功能XMBK=0:禁止总线保持使能(七)MCUCSR:复位标志(1)JTD:JTAG测试使能JTD=1:JTAG测试使能JTD=0:禁止JTAG测试(2)JTRF:JTAG测试复位标志JTRF=1:JTAG复位JTRF=0:JTAG没复位(3)WDRF:看门狗复位标志WDRF=1:看门狗复位WDRF=0:看门狗没复位(4)BORF:掉电检测复位标志BORF=1:掉电检测复位BORF=0:没掉电(5)EXTRF:外部引脚复位标志EXTRF=1:外部引脚复位EXTRF=0:外部引脚没复位(6)PORF:上电复位标志PORF=1:上电复位PORF=0:没上电复位TMS=1:寄存器PSR0和PSR321保持其数据直到被更新。

ATMEGA 128单片机定时器应用大全

ATMEGA 128单片机定时器应用大全

#include <iom128v.h>#include <macros.h>#include"delay.h"#include"usart.h"unsigned char Count1 = 0;unsigned char Count2 = 0;unsigned char count = 0;void port_init(void){PORTA = 0x00;DDRA = 0xFF;PORTB = 0x00;DDRB = 0xFF;PORTC = 0x00; //m103 output onlyDDRC = 0xFF;PORTD = 0x00;DDRD = 0x00;PORTE = 0x00;DDRE = 0xFF;PORTF = 0x00;DDRF = 0x00;PORTG = 0x00;DDRG = 0x00;}//call this routine to initialize all peripheralsvoid init_devices(void){//stop errant interrupts until set upCLI(); //disable all interruptsXDIV = 0x00; //xtal dividerXMCRA = 0x00; //external memoryport_init();//uart0_init();MCUCR = 0x00;EICRA = 0x00; //extended ext intsEICRB = 0x00; //extended ext intsEIMSK = 0x00;TIMSK = 0x00; //timer interrupt sources ETIMSK = 0x00; //extended timer interrupt sources SEI(); //re-enable interrupts//all peripherals are now initialized}//void PWM10(void)/*在10位相位修正PWM模式下,产生PWM波*///TCCR1A = 0X83;TCCR1A = (1<<COM1A1)|(1<<COM1B1)|(1<<COM1C1)|(1<<WGM11)|(1<<WGM10);TCCR1B = (1<<CS10);//|(1<<WGM13)|(1<<WGM12);//没有预分频OCR1AH = 0X0F;OCR1AL = 0X01;OCR1BH = 0X1F;OCR1BL = 0X01;OCR1CH = 0X2A;OCR1CL = 0X01;}void PWM20MS_Servo(void){//舵机常用//top值为ICRn时产生PWMTCCR1A = (1<<COM1A1)|(1<<COM1B1)|(1<<COM1C1)|(1<<WGM11);TCCR1B = (1<<CS11)|(1<<WGM13);//8分频,相位修正ICR1 = 18432;//周期为20MS//ICR1H = 0X48;//周期为20MS//ICR1L = 0X00;OCR1A = 360;//OCR1AH = 0X01;//脉宽0.5十进制360//OCR1AL = 0XCC;//OCR1B = 2300;//OCR1BH = 0X08;//脉宽2.5十进制2300//OCR1BL = 0XFC;OCR1CH = 0X1A;OCR1CL = 0X01;}void PWM_T1_0XFF(void){//两路PWM波TCCR1A =(1<<COM1A1)|(1<<COM1B1)|(1<<COM1C1)|(1<<WGM10);TCCR1B = (1<<CS11);//|(1<<WGM13);//8分频,相位修正OCR1A = 200;OCR1B = 22;OCR1C = 100;}void PWM_T3_0XFF(void){//两路PWM波TCCR3A =(1<<COM3A1)|(1<<COM3B1)|(1<<COM3C1)|(1<<WGM30);TCCR3B = (1<<CS31);//|(1<<WGM13);//8分频,相位修正OCR3A = 200;OCR3B = 22;OCR3C = 100;void InPut_Init(void){DDRD &= ~(1<<4);PORTD |= (1<<4);SREG = 0X80;TCNT1 = 0;TCCR1B = (1<<ICNC1)|(1<<CS11);//(1<<ICES1)|下降沿触发//ICES1输入捕捉触发沿选择位,CS11 8分频TIMSK = (1<<TICIE1);//}//对16位的寄存器写值void Write_r16Register(unsigned int k){TCNT1H = (unsigned char)(k>>8);TCNT1L = (unsigned char)k;}//对16位的寄存器读值unsigned int Read_r16Register(void){unsigned int k;k = TCNT1L;k += (unsigned int)(TCNT1H<<8);return k;}//CTC模式,外部计数void CTC_Init_T1(void){DDRD &= ~(1<<6);PORTD |= (1<<6);TCCR1A = 0X00;TCCR1B = (1<<WGM12)|(1<<CS12)|(1<<CS11);//|(1<<CS10);//下降沿驱动|(1<<CS10);TCNT1H = 0;TCNT1L = 0;OCR1AH = 0XFF;OCR1AL = 0XFF;//0X0005;// TIMSK = (1<<OCIE1A);//SREG = 0X80;}//CTC模式,T2,外部计数void CTC_Init_T2(void){DDRD &= ~(1<<7);PORTD |= (1<<7);TCCR2 = (1 << WGM21)|(1 << CS22)|(1 << CS21);TCNT2 = 0X00;OCR2 = 0XFF;}void T3_Over_init(void){//TCNT3H=(65536-50000)/256;//50ms溢出中断//TCNT3L=(65536-50000)%256;TCNT3H = 0X1E;TCNT3L = 0XFF;//0XEA;//TCNT3L=0;//X8C;TCCR3B=0X04;//(1<<CS32)|(1<<CS30);//0x02;//8分频,8MHz晶振,1us cs101 1024分频ETIMSK = (1<<TOIE3);SREG=0x80;}//定时器0,溢出中断,初始化void T0_Over_Init(void){TCNT0 = 0x0F;TCCR0 = 0X07;TIMSK = (1 << TOIE0);SREG=0x80;}//使用外部中断,下降沿触发,中断0,1void External_Interrupt_Init(void){DDRD &= ~(1<<0);PORTD |= (1<<0);DDRD &= ~(1<<1);PORTD |= (1<<1);EICRA = (1<<ISC11)|(1<<ISC01);EIMSK = (1<<INT1)|(1<<INT0);SREG=0x80;}//计算电机编码器的值,通过定时器0,读取T1做时钟,TCNT1的值void main(void){init_devices();//External_Interrupt_Init();T0_Over_Init();//T3_Over_init();//CTC_Init_T1();//CTC_Init_T2();PWM_T1_0XFF();PWM_T3_0XFF();//uart0_init();while(1)//uart0_init();//PORTA = PORTA^0X01;// DelayMs(5);}}//外部中断函数0#pragma interrupt_handler INT0_Interrupt:02 void INT0_Interrupt(void){Count1++;PORTA = PORTA^0X01;}#pragma interrupt_handler INT1_Interrupt:03 void INT1_Interrupt(void){Count2++;PORTA = PORTA^0X01;}//T0溢出中断函数#pragma#pragma interrupt_handler T0_Over_Interrupt:17 void T0_Over_Interrupt(void){TCNT0 = 0x0F;count++;if(count==60){count = 0;PORTA = PORTA^0X01;}// USART0_Transmit(TCNT1H);// USART0_Transmit(TCNT1L);// TCNT1H = 0;// TCNT1L = 0;}//T3溢出中断函数#pragma interrupt_handler T3_Over_Interrupt:30 void T3_Over_Interrupt(void){TCNT3H = 0X1E;TCNT3L = 0XFF;//DelayMs(30);USART0_Transmit(Count1);USART0_Transmit(Count2);Count1 = 0;Count2 = 0;//TCNT1H = 0;//TCNT1L = 0;//USART0_Transmit(TCNT2);//TCNT2 = 0;//PORTA = PORTA^0X01;}//CTC#pragma interrupt_handler T1:13 void T1(void){USART0_Transmit(TCNT1L);PORTA = 0X0F;//PORTA^0X01;}//捕捉中断,向量编号12#pragma interrupt_handler input1:12 void input1(void){//ICNT1H =// count = TCNT1;// USART0_Transmit(TCNT1H);//count++;USART0_Transmit(ICR1H);USART0_Transmit(ICR1L);Delay_1us(100);/*if(count == 200){//TCNT1 = 0;PORTA = 0X0F;}if(count == 400){count = 0;// TCNT1 = 0;PORTA = 0X00;}*/}。

ATmega128单片机IAP功能的应用

ATmega128单片机IAP功能的应用

ATmega128具备引导加载支持的用户程序自编程功能(In-Sysytem Programming by On-chip Boot Program),它提供了一个真正的由MCU本身自动下载和更新(采用读/写同时"Read-While-Write"进行的方式)程序代码的系统程序自编程更新的机制。

利用AVR的这个功能,可以实现在应用编程(IAP)以及实现系统程序的远程自动更新的应用。

IAP的本质就是,MCU可以灵活地运行一个常驻Flash的引导加载程序(Boot Loader Program),实现对用户应用程序的在线自编程更新。

引导加载程序的设计可以使用任何的可用的数据接口和相关的协议读取代码,或者从程序存储器中读取代码,然后将代码写入(编程)到Flash存储器中。

引导加载程序有能力读写整个Flash存储器,包括引导加载程序所在的引导加载区本身。

引导加载程序还可以对自身进行更新修改,甚至可以将自身删除,使系统的自编程能力消失。

引导加载程序区的大小可以由芯片的熔丝位设置,该段程序区还提供两组锁定位,以便用户选择对该段程序区的不同级别的保护。

本节将给出一个实际的的Boot Loader程序,它可以配合Windows中的超级终端程序,采用Xmodem 传输协议,通过RS232接口下载更新用户的应用程序。

5.2.1 基本设计思想1.Boot Loader程序的设计要点Boot Loader程序的设计是实现IAP的关键,它必须能过通过一个通信接口,采用某种协议正确的接收数据,再将完整的数据写入到用户程序区中。

本例Boot Loader程序的设计要点有:l 采用ATmega128的USART口实现与PC之间的简易RS232三线通信;l 采用Xmodem通信协议完成与PC机之间的数据交换;l 用户程序更新完成后自动转入用户程序执行;l Boot Loader程序采用C语言内嵌AVR汇编方式编写,阅读理解方便,可移植性强,代码小于1K字。

广大ATmega128单片机实验报告实验二 1x8键盘和LED显示实验

广大ATmega128单片机实验报告实验二 1x8键盘和LED显示实验

广州大学学生实验报告开课学院及实验室:计机楼503 2014年 05月 08日学院机械与电气工程学院年级、专业、班电信122 姓名王健学号1207400051实验课程名称信号与系统成绩实验项目名称实验2 1×8键盘和LED显示实验指导老师庞志一、实验项目利用连接在PE口的8个按键分别控制连接在PB口的8盏LED 的亮灭。

二、实验类型验证性。

三、计划学时2学时。

四、实验目的1、熟悉A VR单片机的I/O口配置方法。

2、掌握A VR单片机I/O口控制LED显示的方法。

3、掌握A VR单片机I/O口检测按键的方法。

五、实验设备与平台1、实验设备:计算机(PC),AVR Mega128学习板,AVR下载/仿真器。

2、软件平台:ICCA VR C语言程序开发软件,AVR STUDIO软件调试平台。

六、涉及的知识点A VR单片机I/O口的原理及其配置、LED亮灭控制、读按键。

七、实验相关知识1、电路原理图2.1 8个按键和8盏LED位置示意图图2.28个按键和8盏LED电路图2、与I/O口相关的寄存器8个按键8盏LED表2.1 端口A数据寄存器PORTAPORTA 位功能描述初始值PORTA[7:0] [7:0] 当引脚配置为输出时,若PORTAn为“1”,引脚输出高电平,否则输出低电平。

当引脚配置为输入时,若PORTAn 为“1”,上拉电阻将使能。

如果需要关闭这个上拉电阻,可以将PORTAn清零,或者将这个引脚配置为输出。

三态PORTA寄存器地址:0x3B表2.2 端口A数据方向寄存器DDRADDRA 位功能描述初始值DDRA7 [7] 1=输出0=输入0 DDRA6 [6] 1=输出0=输入0 DDRA5 [5] 1=输出0=输入0 DDRA4 [4] 1=输出0=输入0 DDRA3 [3] 1=输出0=输入0 DDRA2 [2] 1=输出0=输入0 DDRA1 [1] 1=输出0=输入0 DDRA0 [0] 1=输出0=输入0寄存器DDRA地址:0x3A表2.3 端口A输入引脚寄存器PINAPINA 位功能描述初始值PINA[7:0] [7:0] 通过读取PINAn可获得端口A各引脚电平:0=低电平1=高电平不定寄存器PINA地址:0x39表2.4 端口B数据寄存器PORTBPORTB 位功能描述初始值PORTB[7:0] [7:0] 当引脚配置为输出时,若PORTBn为“1”,引脚输出高电平,否则输出低电平。

基于ATmega128的时间触发嵌入式系统的设计与应用

基于ATmega128的时间触发嵌入式系统的设计与应用

基于ATmega128的时间触发嵌入式系统的设计与应用【摘要】针对51单片机速度慢、驱动能力差、抗干扰能力低及事件触发往往带来不确定性和不稳定性等问题,提出了A VR微控制器与时间触发方式相结合的嵌入式系统。

该系统结合了A VR的硬件优势及时间触发的调度理念将系统精度有效的控制在ms级,具有占存储单元少,可靠性好,可预测性强,安全性高的特点。

实验表明,该系统适用于中小型实时控制系统,并可靠稳定运行。

【关键词】A VR;微控制器;时间触发;嵌入式系统;混合式调度器1.引言近年来,嵌入式发展迅速,采用51单片机死循环的事件触发编程方式已逐渐不能满足企业对产品稳定性和安全性的要求。

目前,嵌入式系统软件有VxWork、Linux、WinCE、μC/OS-II等,可出于成本和技术上的考虑,微控制器往往不会选取其进行设计。

在实际应用中,往往会面临同时应付多外设、多任务的情况,则对它们的相互调度必不可少。

时间触发嵌入式系统就是这样的简单实用的操作系统。

本文设计了基于A VR微控制器的时间触发多任务调度器并应用于实际。

该调度器使用传递消息(message)的方式使得微控制器在多个任务及设备间切换。

2.A VR微控制器的结构特点A VR是目前使用以该系列的ATmega128为例说明,它采用哈佛结构,RISC 指令集、低功耗、片上资源丰富的特点,极大简化了外围电路,使系统更加稳定可靠。

其特点为嵌入式系统设计提供了良好的硬件保证。

3.嵌入式两种触发方式的对比在嵌入式系统中,通常采用两种本质上不同的调度方式:事件触发和时间触发。

事件触发方式往往使用多级中断来实现,其发生时间具有随机性;而时间触发方式由一个全局时钟驱动,系统的行为在功能与时间上都是确定的,即具有可预测性。

3.1 事件触发方式存在的问题嵌入式系统开发人员有一种中断事件绝不会丢失的错误观念,这往往给开发的产品带来灾难性的后果。

中断事件丢失在实际应用中是一个不争的事实,产生的原因有多方面,但无外乎内因和外因两种。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
char data[DATA_BUFFER_SIZE];
long address = 0;
file://擦除(code=0x03)和写入(code=0x05)一个Flash页
void boot_page_ew(long p_address,char code)
{
传输协议,通过RS232接口下载更新用户的应用程序。
5.2.1 基本设计思想
1.Boot Loader程序的设计要点
Boot Loader程序的设计是实现IAP的关键,它必须能过通过一个通信接口,采用某种协议正确的接
收数据,再将完整的数据写入到用户程序区中。本例Boot Loader程序的设计要点有:
l 校验方式采用16位CRC校验(X^16 + X^12 + X^5 + 1)。
5.2.2 源程序代码
下面给出的源程序是在ICCAVR中实现的。
/*****************************************************
采用串行接口实现Boot_load应用的实例
boot_page_ew(address,0x05); file://将缓冲页数据写入一个Flash页
wait_page_rw_ok(); file://等待写入完成
}
SPMCSR = 0x11;
asm("spm\n");
}
}
file://更新一个Flash页的完整处理
void write_one_page(void)
{
int i;
boot_page_ew(address,0x03); file://擦除一个Flash页
为数据块编号字节,每次加一;<255-packNO>是前一字节的反码;接下来是长度为128字节的数据块;
最后的是128字节数据的CRC校验码,长度为2个字节。
l 接收端收到一个数据块并校验正确时,回送;接收错误回送;而回送表示要发送端停止发送。
l 发送端收到后,可继续发送下一个数据块(packNO+1);而收到则可再次重发上一个数据块。
wait_page_rw_ok(); file://等待擦除完成
for(i=0;i {
boot_page_fill(i, data[i]+(data[i+1]<<8));
}
#define BAUD_L (unsigned char)BAUD_SETTING
#define DATA_BUFFER_SIZE SPM_PAGESIZE file://定义接收缓冲区长度
file://定义Xmoden控制字符
#define XMODEM_NUL 0x00
#define XMODEM_EOF 0x1A
#define XMODEM_RECIEVING_WAIT_CHAR 'C'
file://定义全局变量
const char startupString[]="Type 'd' download, Others run app.\n\r\0";
引导加载程序有能力读写整个Flash存储器,包括引导加载程序所在的引导加载区本身。引导加载程序还
可以对自身进行更新修改,甚至可以将自身删除,使系统的自编程能力消失。引导加载程序区的大小可以
由芯片的熔丝位设置,该段程序区还提供两组锁定位,以便用户选择对该段程序区的不同级别的保护。
本节将给出一个实际的的Boot Loader程序,它可以配合Windows中的超级终端程序,采用Xmodem
asm("mov r30,r16\n"
"mov r31,r17\n"
"out 0x3b,r18\n"); file://将页地址放入Z寄存器和RAMPZ的Bit0中
SPMCSR = code; file://寄存器SPMCSR中为操作码
file://计算和定义M128的波特率设置参数
#define BAUD_SETTING (unsigned char)((unsigned long)CRYSTAL/(16*(unsigned
long)BAUD)-1)
#define BAUD_H (unsigned char)(BAUD_SETTING>>8)
#i nclude
#define SPM_PAGESIZE 256 file://M128的一个Flash页为256字节(128字)
#define BAUD 38400 file://波特率采用38400bps
#define CRYSTAL 16000000 file://系统时钟16MHz
l 发送端发送表示全部数据发送完成。如果最后需要发送的数据不足128个字节,用填满一个数据块。
l 控制字符"C"有特殊的作用,当发送端收到"C"控制字符时,它回重新开始以CRC校验方式发送数据块
(packNO = 1)。
l 每发送一个新的数据块加1,加到OxFF后下一个数据块的为零。
2.Xmodem通信协议
Xmodem协议是一种使用拨号调制解调器的个人计算机通信中广泛使用的异步文件运输协议。这种协
议以128字节块的形式传输数据,并且每个块都使用一个校验和过程来进行错误检测。如果接收方关于一
个块的校验和与它在发送方的校验和相同时,接收方就向发送方发送一个认可字节。为了便于读者阅读程
if (status & 0x1c) return -1; // If error, return -1
return res;
}
file://等待从RS232接收一个有效的字节
char uart_waitchar(void)
{
asm("spm\n"); file://对指定Flash页进行操作
}
file://填充Flash缓冲页中的一个字
void boot_page_fill(unsigned int address,int data)
crc = crc << 1 ^ 0x1021;
else
file://从RS232发送一个字节
void uart_putchar(char c)
{
while(!(UCSR0A & 0x20));
UDR0 = c;
}
file://从RS232接收一个字节
int uart_getchar(void)
{
unsigned char status,res;
if(!(UCSR0A & 0x80)) return -1; file://no data to be received
status = UCSR0A;
res = UDR0;
#define XMODEM_SOH 0x01
#define XMODEM_STX 0x02
#define XMODEM_EOT 0x04
#define XMODEM_ACK 0x06
#define XMODEM_NAK 0x15
#define XMODEM_CAN 0x18
int c;
while((c=uart_getchar())==-1);
return (char)c;
}
file://计算CRC
int calcrc(char *ptr, int count)
{
int crc = 0;
华东师大电子系 马 潮 2004.07
Compiler: ICC-AVR 6.31
Target: Mega128
Crystal: 16Mhz
Used: T/C0,USART0
*****************************************************/
序,下面简要说明该协议的主要特点,有关Xmoden的完整的协议请参考其它相关的资料。
l Xmodem的控制字符: 01H、 04H、 06H、 15H、 18H、 1AH。
l Xmodem传输数据块格式:" <255-packNO> <...128个字节的数据块...> "。其中为起始字节;
{
asm("mov r30,r16\n"
"mov r31,r17\n" file://Z寄存器中为填冲页内地址
"mov r0,r18\n"
"mov r1,r19\n"); file://R0R1中为一个指令字
l 采用ATmega128的USART口实现与PC之间的简易RS232三线通信;
l 采用Xmodem通信协议完成与PC机之间的数据交换;
l 用户程序更新完成后自动转入用户程序执行;
l Boot Loader程序采用C语言内嵌AVR汇编方式编写,阅读理解方便,可移植性强,代码小于1K字。
char i;
while (--count >= 0)
{
crc = crc ^ (int) *ptr++ << 8;
i = 8;
do
{
if (crc & 0x8000)
SPMCSR = 0x01;
asm("spm\n");
}
file://等待一个Flash页的写完成
相关文档
最新文档