Introduction

简介

为了展示了AVR微控制器的优点和主要特色，我们设计了AVR Butterfly 评估板。AVR微控制器是卓越的微控制器，您可以在许多应用中使用该系列微控制器。

图 1.1 AVR Butterfly

AVR Butterfly 展示了：

  • 一般的AVR体系结构和ATmega169的特殊应用

  • 低功耗设计

  • MLF封装形式

  • 外围设备：LCD控制器、存储器、Flash、EEPROM、SRAM、外部的DataFlash

  • 通讯接口: UART、SPI、USI。

  • 编程方法：自编程/引导装入、SPI、并行、JTAG

  • 模数转换器（ADC）

  • 定时器/计数器：实时时钟（RTC）、脉冲宽度调制（PWM）

  • AVR Butterfly 也可以做为ATmega169的实验开发评估板，您可以像玩搭积木一样，将其与其他实验板组合使用

在AVR Butterfly 评估板上可以使用的资源

下面列出了在 Butterfly 评估板上已有的资源。

  • ATmega169 (MLF封装)

  • 有120个点阵的液晶显示器 ，用来展示ATmega169的LCD控制

  • 操纵杆 ，作为用户的输入，可以向4个方向推动，中间还可以按下

  • 蜂鸣器 元件，用来发声

  • 给RTC使用的32kHz晶振

  • 4 Mbit DataFlash ，用作数据存储

  • RS-232 电平变换器，用于跟板外器件通信

  • 负温度系数（NTC）传感器 ，用来测量温度

  • 光敏电阻 (LDR)，用来测量光的亮度

  • 3V扣式电池 (600mAh) 提供工作电压

  • JTAG 仿真，用于调试

  • USI接口 ，额外的通信接口

  • AVR Studio 4支持

  • 预先编程写入了 示范应用程序 ，包括引导装入代码

  • 不需要其他外部硬件就可以对AVR Butterfly 重复编程

评估板上的ATmega169 控制着外围设备，您可以使用AVR Butterfly 测量0~5V之间的电压。该评估板可以通过好几种不同的方法进行再编程，其中包括使用JTAG接口进行串行编程。或许大多数使用者更喜欢使用AVR Studio，利用已经写好的引导装入程序下载新的代码。

更多有关ATmega169的信息，请参阅 www.atmel.com上的ATmega 169数据手册。

在 www.atmel.com 上您还可以找到介绍AVR Butterfly 的产品页面，上面有完整的电原理图和材料清单供您参考。


Included Firmware

所包含的固件（Firmware）

AVR Butterfly中已经预先编程的模块如下：

  • 引导装入代码

  • 应用程序代码

  • 状态机

  • 功能有

    • 姓名-标签

    • 时钟（日期）

    • 温度测量

    • 光亮度测量

    • 电压测量

    • 播放音乐

    • 自动省电模式

    • LCD亮度可调

  • 今后可以增加的功能

    • 计算器

    • 提醒功能

    • 闹钟（日常的闹钟，厨房计时器，其它）

    • 播放悦耳的音乐和显示歌词(卡啦OK功能)

    • 4Mbit的dataflash可以存储大量的数据。一些例子：

      • AVR信息银行（所有AVR器件的基本功能)

      • 您所在地区的公共汽车时刻表

      • 悦耳的音乐

      • +++

注意：

由于有完整的电平转换器和自编程功能，可以在没有任何外部器件的情况下下载更新应用程序。

首页


How to operate

如何操作预先编好的程序

AVR Butterfly带有预先编好的应用程序，这些都是基本的应用。您也可以从AVR Butterfly的网页 http://www.atmel.com/products/AVR/butterfly下载到该固件。

  • 操纵杆

  • 菜单系统


Joystick input

操纵杆输入

用户可以使用操纵杆作来控制使用AVR Butterfly。它可以向5个方向转动，其中包括中间按下，见图 2.1。

图 2.1 操纵杆输入

您可以使用操纵杆，按照图2.2所示的菜单操纵AVR Butterfly，进行数值编辑，输入姓名等操作。下面的例子将教您如何输入您的姓名。

使用操纵杆输入您的姓名：

  1. 向上推操纵杆（“SCROLL UP”）来唤醒AVR Butterfly。 如果 “AVR BUTTERFLY”仍然没有显示，向左推操纵杆（“EXIT SUB-MENU”），直到唤醒AVR Butterfly。

  2. 向下推操纵杆（“SCROLL DOWN”）三次，这时LCD屏幕上显示“NAME”。

  3. 向右推操纵杆(“ENTER SUB-MENU”）。这时如果是第一次输入姓名，屏幕上会显示“ENTER NAME”；如果不是第一次，屏幕上会显示已经输入的姓名，您需要再向右推操纵杆一次（“ENTER SUB-MENU”）。

  4. 在屏幕上显示“ENTER NAME”的情况下，按下操纵杆（ENTER）。如果这是您第一次输入姓名，屏幕的最右边会显示一个闪烁的字符“A”。如果不是第一次，那么闪烁的将是已经输入的名字的最后一个字符。

  5. 通过向上（“SCROLL UP）”或者向下推动（“SCROLL DOWN”）推操纵杆，可以获得您想要的字母。通过向右推操纵杆（“ENTER SUB-MENU”），可以增加一个新的字符。通过向左推操纵杆（“EXIT SUB-MENU”），可以移除前一个字符。

  6. 当您输入了全部的字符（最多25个），通过向下按操纵杆（“ENTER”），可以保存这个名字。现在这个名字就会显示在屏幕上了。如果名字的长度大于6个字符，它会在显示的时候向左移动，否则显示的是静态的。

使用终端设备输入您的姓名：

  1. 按照3.7中与个人电脑连接中的描述，使用一个串行连接线将个人电脑与AVR Butterfly连接起来。在您的个人电脑上开一个终端（例如 HyperTerminal），如下配置这个终端：波特率19200，8位数据位，无奇偶校验和1位停止位。设置无流控制。

  2. 按照上面的1、2、3点进行操作。

  3. 当屏幕上显示“ENTER NAME”时，向下推动操纵杆“SCROLL DOWN”，这时屏幕上会显示“LOAD NAME”。

  4. 按下操纵杆（“ENTER”）来激活UART， 这时屏幕上会显示“WAITING FOR INPUT ON RS232”。

  5. 在电脑终端窗口输入您的姓名（最多25个字符），在电脑键盘上按下回车键保存姓名。这时您输入的名字会在AVR Butterfly屏幕上显示。

注意：

自动关机功能在缺省设置下是打开的。缺省状态下会在30分钟后关闭LCD显示。这个自动关机时间可以改变，也可以取消自动关机功能。只需向上推动操纵杆就可以将AVR Butterfly从睡眠状态唤醒。


Menu system

菜单系统

为了更方便地在各个不同应用模块之间切换，我们建立了如下所示的菜单系统。

图 2.2 菜单系统

图2.2向我们展示了AVR Butterfly中应用程序的菜单系统。 最左边的一列是主菜单：“AVR Butterfly”、“Time”、“Music”以及其它……向上或者向下推动操纵杆，可以在两个主菜单之间进行选择。向右推动操纵杆可以进入子菜单。向左推动操纵杆可以返回上一级菜单。如果您想输入/调整某个数值，可以按下操纵杆。例如：当屏幕上显示“Adjust clock”时，您可以通过按下操纵杆（ENTER），来进入调整功能。


Bootloader

引导装入

介绍

AVR Butterfly上的ATmega169使用了自编程功能，所以AVR Butterfly带有引导装入功能。由于引导装入整合了完整的RS-232电平转换器，使得AVR Butterfly可以在没有其它任何外部硬件的情况下进行更新。参阅操作说明书AVR109：自编程AVR器件，为了获得更加有效的数据下载，使用了新的缓存装载模式。AVR Studio4提供了AVR Prog这个面向个人电脑的操作软件。数据通过RS-232接口传输。按照 3.7与个人电脑连接 中的描述使用一个串行连接线连接AVR Butterfly和电脑。

图 2.3 AVRStudio4中的AVR Prog

升级ATmega169

参见图 2.2 ，通过“ Options>Bootloader>Jump to Bootloader”，可以在程序执行过程中跳转到引导部分；或者将J403 ISP连接接口的引脚5与引脚6短路复位ATmega169，（在复位后，ATmega169会从自动引导部分开始）。ISP连接接口的引脚配置参见 图 3.3 。当程序在引导部分中执行时，屏幕上不会显示任何东西。在保持操纵杆处处于按下状态的同时启动AVR Prog。当AVR Prog开始后，释放操纵杆。点击“ Browse ”按钮，设置您要编程写入的*.hex 文件路径，然后点击“ Program ”。您将会看到电脑自动依次执行“Erasing Device” 、“Programing”和“Verifying”。在更新了应用程序后，在AVR Prog中 按下 “Exit”按钮，可以使ATmega169离开引导装入的编程模式。

图 2.4 AVR prog

跳转到应用程序部分

向上推动操纵杆就可以使得AVR器件从引导部分跳转到应用程序部分。

熔丝位和锁定位

为了固件的正常工作，只需对以下所列的ATmega169熔丝位和锁定位进行编程：

扩展熔丝位（0xFF）

  • 无

熔丝位高字节（0x98）

  • JTAGEN （使能JTAG接口）

  • SPIEN （使能串行编程）

  • BOOTSZ1 （Boot区大小1024字）

  • BOOTSZ0

  • BOOTRST （使能Boot复位向量）

熔丝位低字节（0xE2）

  • SUT0 （65 ms启动时间）

  • CKSEL3 （内部RC振荡器）

  • CKSEL2

  • CKSEL0

锁定位（0xEF）

  • BLB11 （不允许SPM指令写Boot Loader区）

注意：

对于所有的熔丝位，“1”表示没有编程，“0”表示编过程了。


Connectors

连接接口

ATmega169的一部分I/O引脚被用作AVR Butterfly的连接接口引脚。这些连接接口用于通信、编程和ATmega169中ADC的输入。

图 3.1 连接接口


Programming

编程

除了使用AVR Studio利用已经编程好的引导装入外，您还可以使用SPI、高电压编程模式以及JTAG接口对AVR Butterfly上的ATmega169进行编程。

在系统编程

图 3.2 在系统编程

使用ISP编程模式对ATmega169 进行编程时，按照图3.2所示，用一根6-芯转接线将STK500实验开发板上的ISP6PIN 连接接口和AVR Butterfly 上的J403（ISP连接接口）连接起来。您可以使用AVR Studio4 STK500软件，通过串行编程模式对该器件进行编程。不需要焊接一个ISP插头，您只需将插头插入孔中。确保STK500上的引脚1与AVR Butterfly上的引脚1相连，两个插头上相对应的引脚连接在一起，没有连错。ISP连接接口的引脚说明如图3.3所示。

图 3.3 ISP连接接口，J403

注意： 您可以在STK500用户向导中找到更多有关STK500的信息，或者您也访问Atmel的网页www.atmel.com 查找相关信息。您也可以参阅STK500用户向导，获得有关在ISP编程时如何使用STK500配套软件的信息。

注意： 不要在在线编程时使用AVRISP，除非评估板由外部电源供电。

高电压并行编程

您可以通过高电压并行接口对ATmega169进行编程。但是这需要移动PCB板上的两个电阻。一般只有在比较糟糕的情况下（SPI和JTAG口都失效了）才使用高电压并行编程。

要想在并行编程模式下工作，如图3.4，需要将R203移到R204的位置，将R404移到R403的位置。您可以参阅7幅完整的电原理图。

图 3.4 0-Ohm电阻

将STK500实验开发板上的RESET、BSEL2 和XTAL与AVR Butterfly上的JTAG（J402）接口的引脚6、引脚8和引脚10一一连接。见图3.5。必须从AVR Butterfly背面与JTAG口连接。

图 3.5 Reset、BSEL2 和 XTAL1连接线

分别将STK500实验开发板上的PROG DATA和PROG CTRL与AVR Butterfly上的PORTB和PORTD连接。确保连接正确，对应的引脚连接在了一起。

图 3.6 PORTB和PORTD

更多细节信息，请参考7幅完整电原理图中的电原理图和装配简图。

现在您可以通过高电压编程模式，使用AVR Studio STK500软件对该设备进行编程

在编程过程中，蜂鸣器会有噪音发出，LCD屏幕上也会有一些闪烁，这是因为PORTB和PORTD与这些模块有连接。

I/O部分PORTB和PORTD的接口引脚如图3.7所示。

图3.7 PORT B和PORT D

注意：当AVR Butterfly设置在高电压并行编程模式时，JTAG接口不会工作，这时候外部晶振也不能正常工作，会导致AVR Butterfly内预先编程好的应用程序不能正常运转执行。

注意：您可以在STK500用户向导中找到更多有关STK500的信息，您也可以访问Atmel的网页www.atmel.com 查找相关信息。您还可以参阅STK500用户向导，获得有关在高电压编程模式时如何使用STK500配套软件的信息。


JTAG

图3.8向我们展示了如何将JTAG ICE连接器与AVR Butterfly连接起来。

图 3.8 JTAG 连接器

注意： 必须在AVR Butterfly的背面进行JTAG连接器的连接。

JTAG连接器是给内建有JTAG接口的ATmega169使用的。连接器的引脚说明如图3.9所示，它和Atmel提供的JTAG ICE的引脚是兼容的。如果您将JTAG ICE 和这个连接接口相连，您就可以进行ATmega169的片上调试。

更多有关JTAG ICE和片上调试的信息，请参阅Atmel网站 www.atmel.com 上的AVR JTAG用户向导。

注意：

引脚7，NC（VCC）是JTAG的供电引脚。这个引脚不能连接，因为如果连接了，JTAG会使用AVR Butterfly上电池的电源。

在高电压并行编程时，引脚8，NC（BS2）和引脚10，GND（XTAL1）可以用作BS2和XTAL1引脚。更多信息请参阅3.2.2高电压并行编程。

图 3.9 JTAG 连接接口

注意：当使用JTAG时，为了节省电池的电能，需要外部提供电源（3.1—4.5V）。如何连接外部电源请看图3.10。 由于电源的消耗，请确保在调试之后，将OCD熔丝位关闭。在断开JTAG ICE和AVR Butterfly之前，按下 AvrStudio4中的“Stop Debugging”按钮，就可以将OCD熔丝位关闭。

图 3.10 外部电源

PORTB或是PORTD的第9、第10引脚可以用作外部电源的输入，见 图 3.7 的引脚说明。

如果没有使用JTAG，那么JTAG的4个引脚可以用作ADC通道ADC[4:7]的输入。您可以访问 www.atmel.com ，参阅ATmega169的数据使用手册以便获得更多信息


LCD Display

LCD显示器

在AVR Butterfly上的LCD显示器与STK502上使用的是一样的，都是由Atmel公司提供的。ATmega169和LCD之间的连接也是一样的。如果您想获得更多有关LCD显示和LCD位映射的信息，您可以参阅 www.atmel.com 网站上的STK502用户向导手册。

如果您想更深入地了解怎样编写LCD显示的软件，请参阅“AVR064: STK502—A Temperature Monitoring System with LCD Output”和“AVR065: LCD Driver for the STK502 LCD”操作说明书。

注意：触摸LCD的引脚会影响LCD部分的显示。

您可以从下面的网站订购STK502上的LCD显示器：

ACTE 挪威（Norway） www.acte.no

电话号码：+47 63 89 89 00

传真：+47 63 87 90 00

电子邮件： info@acte.no

价格： 99,- NOK

订购型号： H4042-DL DE5156/L.


Joystick

操纵杆

AVR Butterfly提供了一个迷你的操纵杆给用户用作输入。它可以向5个方向转动，其中包括中间按下。所有方向的公有连接线是GND。这意味着ATmega169必须使用内部上拉电阻，这样才能获得操纵杆的输入。

图 3.11 操纵杆电原理图


Sensors

传感器

AVR Butterfly上有两个传感器，分别用于温度和光亮度的测量。另外还有一个分压器用于测量0~5V的电压。

温度传感器

您可以在AVR Butterfly的背面找到这个温度传感器。见图3.12.

图 3.12 温度传感器

AVR Butterfly使用了一个负温度系数（NTC，Negative Temperature Coefficient）电热传感器来测量温度。NTC的工作原理是：当温度下降时，NTC电热传感器的阻值会变大。使用一个分压器，通过ATmega169上的ADC通道读出电热传感器上的电压值，然后通过计算就可以获得温度值。温度计算公式如图3.13所示。

图3.13 温度计算公式

= 4250

ADC = ATmega169中的ADC里的数据寄存器里（ADCL和ADCH）中的数值

= 273°K

= 298°K （ 273°+ 25°）

华氏温度值可以通过图3.14中的公式算得。

图 3.14 华氏温度（F）转为摄氏温度（C）

AVR Butterfly可以测量－10℃/+14oF 到 +60℃/140oF之间的温度，精度为±1℃。

光敏元件

光敏元件在AVR Butterfly的正面，LCD的上方。见图3.15。

图 3.15 光敏元件

AVR Butterfly使用了一个光敏电阻（LDR，Light Dependent Resistor）来测量光亮度。LDR的工作原理是：当光亮度变暗时，LDR的电阻值会变大。使用一个分压器，通过ATmega169上的ADC通道读出LDR上的电压值，然后通过计算就可以获得光亮度值。

电压测量

AVR Butterfly可以测量0V到5V间的电压。电压的输入引脚必须按照图3.16所示连接。使用一个分压器，通过ATmega169上的ADC读出电阻上的电压值，然后通过计算就可以获得所测量的电压值。测量精度大约是0.1V。

图 3.16 电压测量

注意：不要输入超过10V的电压


Connect to PC

与个人电脑连接

AVR Butterfly带有一个电平转换器提供给RS-232接口使用。这意味着可以在不使用任何外部硬件的情况上，使用ATmega169的自编程功能，对AVR Butterfly进行编程。使用串行连接线将AVR Butterfly于电脑连接如图3.17所示。 完整的RS232电平转换器将供电转换到2,0V以下。


USI

USI接口

AVR Butterfly提供有一个USI的连接接口。该USI接口的引脚配置如图3.18所示。通过USI接口，可以使用其他的模式连接AVR Butterfly ，这样就可以将AVR Butterfly用作扩展模块。

图 3.18 USI 连接接口

AVR Butterfly USI 连接器：

  • Pin 1 （USCK/SCL）

  • Pin 2 （DI/SDA）

  • Pin 3 （DO）

  • Pin 4 （GND）


Dataflash

AVR Butterfly上提供了一个外部的Dataflash。这是Atmel生产的4-megabit串行DataFlash，型号为AT45DB041B。 您可以访问Atmel网站获得有关DataFlash的更多信息：

http://www.atmel.com/products/DataFlash/

这个DataFlash是通过SPI接口连接的。这意味着当和AVR Butterfly上的ATmega169进行通信时，可以通过ISP连接器从外部访问这个DataFlash。

注意：如果通过外部连接访问DataFlash，AVR Butterfly 上的ATmega169必须要关闭自己的SPI接口，以免与DataFlash争用接口。

图 3.19 DataFlash

图 3.20 DataFlash电原理图


Piezo Element

蜂鸣器

AVR Butterfly提供了一个蜂鸣器来播放音乐。这个蜂鸣器与ATmega169的PORTB5引脚相连.。通过使用PWM，可以得到播放音调所需的不同频率。

图 3.21 蜂鸣器


Battery

电池

型号：CR2450

标准电压：3.0 V

标准容量：550mAh (@0.2mA 放电电流, +23℃)

标准放电电流：0.2mAh

在连续放电情况下，推荐的最大电流：3mA

在有电流脉冲的情况下，推荐的最大电流：15mA

注意：不要对电池进行以下操作：充电、短路、分解、变形、加热、

将电池放在靠近火的地方。该电池battery含有易燃的物质，像锂、

有机溶剂，如果进行了以上的操作，会引起电池着火、爆炸、损坏。

电池由一个二极管保护，如果外部有电流加到了AVR Butterfly的PORTB 或者 PORTD，这个二极管会阻止电流对电池充电。


Troubleshooting

问题解决向导

问题 | 起因 | 解决方案
LCD上没有显示 | AVR 设备中的LCD模块没有被使能 | 检查LCD的初始化 *
LCD上没有显示 | 校正频率不正确 | 确认使用了正确的时钟源 *及分频系数
LCD上没有显示 | 电池没电了 | 换电池
LCD屏幕上有些部分不显示 | 您的手指触摸到了LCD的引脚或是PORTD引脚 | 把手放在AVR Butterfly的PCB板的边缘部分，不要触摸到LCD引脚。
串行编程不工作 | ISP连接线没有适当地连接到ISP孔 | 按照 图 3.2连接好ISP连接线
串行编程不工作 | STK500目标电压错误 | 请参考ATmega169的数据手册上的串行编程电压限制，从而调整STK500上的目标电压。
并行编程不工作 | 连接线没有适当正确的连接 | 请参考 高电压并行编程 ，正确连接设置并行编程。
并行编程不工作 | STK500目标电压错误 | 请参考ATmega169的数据手册上的串行编程电压限制。从而调整STK500上的目标电压。

*如果您想知道如何控制LCD显示，请参阅“AVR065 LCD driver for the STK502 LCD”和“AVR064 STK502—A temperature monitoring system with LCD output”操作说明书，或者您也可以参阅AVR Butterfly中的应用程序代码。


Technical Specifications

技术规范说明书

系统单元

体积......................................45 x 67 x 14 mm

重量.............................28 g

工作环境

温度.................................0℃—50℃

可使用的外部电源..............................3.1V—4.5V

温度测量精度...................±1℃

电压测量精度.......................±0.1V


Technical Support

技术支持

寻求技术支持，请联系 avr@atmel.com 。当您需要技术支持时，请您提供以下信息：

  • 您使用的AVR设备型号（完整型号）

  • 目标电压和速度

  • 时钟源和AVR设备熔丝位的设置

  • 编程方法

  • AVR工具的硬件版本，可以在PCB上找到

  • AVR Studio的版本，您可以点击 AVR studio 菜单“Help->About”获得该信息

  • 您使用的电脑的操作系统及版本

  • 您使用的电脑的处理器型号和速度

  • 一份详细的问题说明


Bill Of Materials

元器件清单

下面是一张简单的元器件清单，您也可以在 AVR Butterfly开发评估板的 产品 页面找到相同的元器件清单。


Schematics Page 1

电原理图1


Schematics Page 2

电原理图2


Schematics Page 3

电原理图3


Schematics Page 4

电原理图4


Schematics Page 5

电原理图5