个人翻译,仅供参考kingofkings
AVR Butterfly 训练
AVRGCC / AVR Dragon
版本
Atmel Norway,
AVR Applications Group
________________________________________________________________________
介绍............................................................................................................................... 错误!未定义书签。开始............................................................................................................................... 错误!未定义书签。
软硬件要求 .............................................................................................................. 错误!未定义书签。
安装软件 .................................................................................................................. 错误!未定义书签。
安装硬件 .................................................................................................................. 错误!未定义书签。
连接AVR Butterfly (4)
AVR B UTTERFLY硬件 ............................................................................................. 错误!未定义书签。
前视图和后视图 (6)
模块图 ................................................................................................................. 错误!未定义书签。课程1:准备和运行.. (7)
介绍 .......................................................................................................................... 错误!未定义书签。
课程 .......................................................................................................................... 错误!未定义书签。课程2:断点和IO窗口.. (8)
介绍 .......................................................................................................................... 错误!未定义书签。
原理 .......................................................................................................................... 错误!未定义书签。
课程 .......................................................................................................................... 错误!未定义书签。
断点 ..................................................................................................................... 错误!未定义书签。
IO窗口 ................................................................................................................ 错误!未定义书签。课程3:ADC初始化和求平均值 .. (10)
介绍 .......................................................................................................................... 错误!未定义书签。
课程 .......................................................................................................................... 错误!未定义书签。课程4:编程:最大最小值 ........................................................................................ 错误!未定义书签。
介绍 .......................................................................................................................... 错误!未定义书签。
课程 .......................................................................................................................... 错误!未定义书签。
提示 .......................................................................................................................... 错误!未定义书签。课程5:编程:音乐播放器 (12)
介绍 .......................................................................................................................... 错误!未定义书签。
原理 .......................................................................................................................... 错误!未定义书签。
课程 .......................................................................................................................... 错误!未定义书签。
提示 .......................................................................................................................... 错误!未定义书签。
此项训练基于一块包括ATmega169 LCD微控制器的AVR Butterfly。这块板(AVR Butterfly)包括一个JTAG接口,使它非常易于作为一个开发和仿真的平台。AVR Butterfly由电池供电。但是我们在这里将取下电池,由AVR Dragon供电。
此项训练包括5个课程。前3个课程并不要要求您编写代码,只是一步一步介绍如何使用AVR Dragon和OCD(板上仿真系统)。
此项训练的课程概要
课程1:准备和运行
这里我们介绍了如何做好前期准备工作,和AVR Butterfly.的一些特点。
课程2:断点和IO 窗口
介绍简易的断点使用和如何运用IO 窗口取查看AVR内部的运行情况。
课程3:ADC初始化和求平均值
介绍如何建立ADC和使用ADC。
课程4:编程:最大最小值
增加一个函数可以存储和显示最大最小值和现在的测定值
课程5:编程:音乐播放器
把AVR Butterfly变成一个音乐播放器
此项训练基于简化版的AVR Butterfly的程序原代码和AVR064和AVR065应用笔记。这些简化代码将易于阅读和仿真。
开始
这个部分包括一些关于AVR Butterfly硬件的有用信息和如何连接到AVR Dragon。
软硬件要求
要完成此项训练,您需要以下软件和工具
?AVR Studio 4
?WinAVR
?AVR Butterfly测试板
?AVR Dragon
安装软件
完成此项训练需要安装AVRStudio 4 和WinAVR。
每个课程有它自己的文件夹命名为TASK1到TASK5,每个文件夹包含了自有的文件。在完成了一个课程后,关闭然后打开另外一个继续课程。
安装硬件
连接到AVR DRAGON
用USB线连接AVR Dragon到您的电脑。您的电脑会发现新的硬件,选择自动查找新硬件这会花费几秒钟到几分钟。
连接到AVR Butterfly
当AVR Dragon安装好,连接AVR Butterfly。JTAG接口是AVR Butterfly中间的10脚插座。连接到AVR Dragon的JTAG接口。在AVR Butterfly电路板上的第一脚是一个方形的焊盘。
连接电源
从电脑上拔下AVR Dragon,用连线连接AVR Dragon和AVR Butterfly(如图所示)我们希望从AVR Dragon上取电至AVR Butterfly (VTG线靠近LCD.)
最后安装
检查所有的连线是否正确,特别是电源线是否连接正确,然后连接AVR Dragon到您的电脑。
AVR Butterfly硬件
前试图和后视图
模块图
这是一张非常简化的原理图,表示了各种连接到Atmega169的外围模块:
介绍:
这个练习完全使用C代码,你不用做太多的修改就能编译和运行。
课程1的目标是让所有的软件和硬件运行起来,检验是否工作正常。运行后,花几分钟时间熟悉一下代码,试着去理解它是怎么工作的。
课程
根据一下的步骤来安装硬件:
1.取下AVR Butterfly的电池
2.连接AVR Dragon到AVR Butterfly
3.连接电源线AVR Dragon到AVR Butterfly
4.连接AVR Dragon到您的电脑
用AVR Studio载入课程1 (task1.aps)。检查WinAVR 器件设置是否选到ATmega169 按这个按钮打开设置菜单:
编译按F7或者在build菜单选build。
看一下编译输出对话窗口,确认编译后没有错误或者警告。输出文件默认生成在task1文件夹下。
在debug菜单下选择器件和仿真平台,确认AVR Dragon和Atmega169被选中。在debug菜单下的工具栏按“play”图标开始仿真。你应该可以看到C源代码和一个黄色的箭头停在程序开始的地方。
按F5运行程序,看一下LCD显示器,它应该显示一个数字。这个数字描述了由ADC 测量光敏电阻(LDR)的阻值产生的8个最高有效位的值。这个光敏电阻在AVR Butterfly的左上角。检验一下当光敏电阻在有光的情况下的值。
介绍
我们将在这个练习中详细看到程序是如何运行的,然后解释硬件和软件断点的区别。这个练习的目标是理解如何通过改变IO窗口的数据来影响程序的运行和断点的一些使用局限。
原理
AVR Dragon有三个通用的硬件断点可以使用。硬件断点依靠芯片内部的OCD (板上仿真系统)来运行,它包括三个有各自断点地址的通用断点寄存器。如果需要更多的断点,断点指令不得不加在代码中。这需要重新烧写一个包括停止指令的程序到FLASH。AVR Dragon支持JTAG和debugWIRE 仿真的软件断电。这最大的好处是在你的项目里可以加你所需要的任意数量的断点。缺点是这将需要额外的时间去重新烧写。
课程
在AVR Studio中打开和编译课程2(Task2)。确认没有任何的警告和错误信息。运行程序,检验是否工作正常。
按[SHIFT] | [F5] 或者在工作栏上的“Reset”键重置程序仿真。
断点
在你想让程序暂停(break)的源代码处加3到4个断点(按F9 或在“Debug”菜单的“Toggle Breakpoint”键)。断点的位置并不是很重要。按[F5] 或在“Debug”菜单的[Run]键开始程序。检验程序是否在断点处停下来。
IO窗口
我们现在使用IO窗口,看一下如何在这里操作来影响程序运行。
移除先前的所有断点(在“Debug” 菜单按“Remove breakpoints”),放置一个断点在for(;;)循环内的第一行(如图所示)。按[F5]键运行程序。程序在完成所有初始化后将在主循环停下。
在IO窗口选“I/O Atmega169”图标,然后展开“LCD” 图标。这里包含了LCD的寄存器。用你的鼠标来选取或取消一些LCDDRxx 寄存器。注意你将会点亮或熄灭AVR Butterfly上LCD的一些液晶段位即使当程序暂停的时候。
这是为什么呢?因为IO窗口的寄存器变化被立即下载到了AVR芯片上,程序按照变化现场运行。
?你能否看到LCDDR寄存器与LCD液晶段位的关系呢?
?试着改变原始设置然后观察对LCD的影响如何(比如:在LCDFRR的寄存器设置LCDPS2 = 1).
课程3:ADC初始化和求平均值
介绍
在这个练习中为了简化代码,我们将移除所有与ADC不相关的代码。这能够让我们把重点集中在ADC是如何初始化和使用的。
课程
打开课程(T ask3)然后编译。
单步调试代码,然后观察ADC在初始化的时候有哪些ADC的控制和状态寄存器被置位。使用ATmega169的数据手册找到被置位的寄存器的信息。
找一个能够观察ADC值的断点。还要试着增加一个watch窗口来观察现有值。
请仔细研读代码直到你能都够了解指令的作用和为什么我们在检测缓慢变化的模拟
介绍
在这个练习中我们将增加两个变量来存储从光敏电阻(LDR)采样出来的最大最小值。我们还要增加一个函数来读取控制杆的动作(向上,向下,向左,向右,按下)。通过这个函数我们在控制杆向上的时候显示最大值,向下的时候显示最小值,其余则显示现有值。
课程
打开课程5(T ask5),完成代码后在AVR Dragon和AVR Butterfly上测试
提示
当你感到迷惑的时候逐条阅读下面的提示,但是请不要不经思考……
1) 如果现有值大于现有最大值,那么一个新的最大值产生……以此类推。
2) 在头文件“button.h”,所有的控制杆动作已被定义。
3) 为了程序简单,可以为最大和最小值另加一个变量。
4) 在文件夹中的“solution_task5”.文件夹,由本课程的事例代码。
介绍
现在,我们将会把AVR Butterfly 变成一个音乐播放器!我们将增加一个以光敏电阻(LDR )的测量值来改变蜂鸣器音调的函数。
原理
在标准脉宽调制(PWM )模式中,我们只是改变信号的占空比。所以为了通过使用PWM 来改变频率,我们必须使用一个特殊模式:比较匹配时清零定时器 (CTC) 模式。在这个模式里TCNT1寄存器在到达OCR1A 值时被清零。通过减低这个寄存器的值TCNT1 将更快的达到设定值,那么在OC1A 管脚上将会输出更高的频率(如图)。注意 Note that the OC1A 管脚 (PB5)需要被设为输出。
课程
写一个程序:使用光敏电阻的测量值来给时钟1的
OCR1A 寄存器赋值。
? 比较匹配符合OCR1A 的值时是清零定时器
(CTC)
? 预分频器设为1
? 设 OC1A 为比较匹配 ? 上升沿声音由声音发出 ? 下升沿声音由声音关闭
通过改变光敏电阻(LDR )的光照来改变蜂鸣器的频率。
提示
(为了使用时钟,您需要设定一下寄存器:TCCR1A , TCCR1B , OCR1AH/L 和 DDRB)