注:请勿转载,如有需求请与刊登的杂志社联系.
ATMEL公司继89系列单片机之后,又在90年代推出了采用高性能RISC指令的90系列单片机,一般我们把这个系列称为AVR系列单片机。该系列单片机具有速度快、性能强、可反复编程、加密性好等优点,将逐渐取代原来的89系列单片机。这里将介绍一款AVR编程器的制作以及AVR单片机仿真调试软件。
一、电子DIY的AVR串行编程器的制作和使用
//图1 编程器照片
为了让单片机爱好者能够方便的学习和使用AVR系列单片机,我们设计了一款AVR串行编程器,它最大的优点是成本低廉、支持芯片众多、使用方便、编程软件为windows版中文界面、容易操作。
需要注意的是由于是串行编程,对于部分AVR芯片,不能编程所有的芯片配置位,其中包括串行编程允许位(SPIEN),如果SPIEN位未编程本适配器将不能支持该芯片(不过对于新芯片,出厂时都默认允许串行编程功能)。
1.本编程器支持的芯片如下:
90S1200
90S2313、90s2323、90S2333、90S2343
90S4414、90S4434、90S4433
90S8515、90S8535
2.电路原理
该电路的原理图如下:
//图2 编程器电路原理图
电源部分
电源部分有多种方案,但实际上要求是一样的,只要能提供+5V即可,电流消耗很小,几十毫安即可。
第一种方案是采用外置电源,可以采用普通的9V外置电源加上一个简单的7805稳压电路。
第二种方案是从声卡的游戏口提供电源。声卡的+5V引脚是直接连接到计算机电源的+5V输出的,因此能够提供很大的电流。声卡的游戏口共15针,其中第1、8、9脚是+5V,第4、5脚是地。
第三种方案是从计算机的USB接口提供电源。计算机的USB接口通常情况下,可提供+5V、100mA的电流。我们此次就采用了这种方案。USB接口共4个引脚,两边的两根分别是+5V(VBUS)和地(GND),如下图所示。
//图3 USB接口引脚功能
振荡电路部分
为了对AVR单片机进行编程,需要为它提供一个振荡源。振荡电路可采用两种方式,一种是由74ls04为核心的外部振荡电路。另一种是由一个4M晶振和两个电容以及单片机内部电路组成的振荡电路。
对单片机而言,有两个外部振荡引脚:XTAL1和XTAL2,当外接晶体振荡时,XTAL1和XTAL2分别接4M晶振的两个引脚。当使用外部振荡源时,XTAL1是外部振荡源输入脚,XTAL2则要求悬空。
电路原理图中的JP1和JP2两组跳线是用来根据不同的芯片选择振荡电路引脚连接方式的。
主电路部分
三极管9012组成了电压控制部分的电路。外部的+5V电源(这里是从USB接口引入的)接在9012的e极,9012的c极接VDD,给电路各部分提供电源。并口的第5脚接9012的b极,起到控制作用,编程器软件可通过控制并口的第5脚的信号来控制+5V电源的通断。
主电路部分很简单,没有太多的元件,只有连线稍微复杂一些。电路通过一根6芯电缆连接到并口,为了使用更方便,USB电缆没有连接到主电路板,而是连接到了并口壳子中,因为计算机的并口与USB接口离的很近,因此USB电缆也不需要太长。做好的电缆如下图:
//图4 电缆照片
为了让用户使用起来更方便,我们对电路进行了优化,这样仅用了一个活动插座就支持所有的芯片,芯片的插入位置也很容易记忆。不过当用于编程不同的芯片时,需要调整一下编程器上的几个跳线。(注:在制作时,我用跳线代替了DIP开关,两者并无区别,你可根据情况选择)具体的调整方法如下图:
//图5-1 跳线调整方法
//图5-2 跳线调整方法
3.电路调试
在不插芯片的情况下接通电源(即连接好USB插头),测量Q1的射极,电压应为+5V。如果没有问题,就可以联机调试了。启动软件,进行读取操作,此时测量活动插座的第10、24、30、40脚,正确的电压应为+5V。如果测试都通过的话,就可以用它来编程了。
4.软件使用
本软件嵌套在电子DIY多功能编程器软件2.11版中。首先要安装电子DIY多功能编程器2.11版,安装方法与普通软件相同,安装完毕后,启动该软件,在“选择芯片”菜单下的AVR(串行编程)中选择你要编程的芯片,选中后界面如下图。再选中右侧活页夹“芯片设置”下的“使用AVR编程器”,这时会出现一个对话框,提示“选中此项将使用AVR编程器进行编程(不需要配合多功能编程器),确定吗?”选择“YES”即可。软件将保存你的选择,下次启动该软件时,无需再次设置。
//图6 编程器软件界面
编程示范
首先要将AVR串行编程器连接到计算机。该编程器有两个接头,一个是DB25并口接头,一个是USB接口,USB接口是用来提供电源的。先将DB25接头插入计算机的打印口,然后将USB插头插入计算机的任一USB接口。
然后启动编程器软件,在菜单项中选择待编程的芯片型号,再选择使用AVR编程器。在系统参数栏中有芯片位置,可根据提示将待编程的芯片插入编程器插座的正确位置,然后锁紧。软件中的所有设置项一般情况下一律使用默认值。
在向芯片写入新程序之前。要先清空芯片的内容。具体的方法是在菜单“命令”下选择空检查,检查芯片是否为空,如果不空的话,执行菜单“命令”下的擦除即可将芯片内容清空。
在菜单“文件”下选择“打开”,在出现的对话框中选择你要写入芯片的程序。这时该程序的内容将出现在编程软件的数据区。对于单片机来说,还需要对配置位进行设置。在右边的芯片设置项下有AVR设置,你可以在这里设置芯片的各个配置位。
所有的设置完成后就可以进行编程了。单击编程按钮或者命令菜单下的编程/测试,会出现编程进度条指示编程进度。当提示编程完成时,就可以取下芯片了。
软件中还有一项是:不验证签名位。这是考虑到有的旧芯片无法读取芯片签名位,为了能对这种芯片进行编程,可选中这一项,这样软件将跳过签名位验证,直接进行编程。
二、AVR仿真调试软件的使用
AVR Studio是AVR系列单片机的源程序级调试器,它可以在Windows95/98或Windows NT上使用,图形界面,十分直观方便,它可以对AVR系列单片机进行C语言和汇编语言源程序级调试。该软件除了支持硬件调试器外,还可以使用软件模拟调试,这里我们介绍的就是它的软件模拟调试功能。
1.软件界面及调试功能的介绍
//图7 调试器软件界面
(1).源程序窗口(AVR242.ASM)
当你打开一个程序时,这个窗口会自动出现,它是调试器的主窗口,这里显示的是正在调试的程序的源代码,你可以在这里看到程序的运行情况。当你在这个窗口中点击鼠标右键时会出现一个菜单,在这个菜单上你可以来完成控制程序的运行、设置断点、做标记等功能,并且所设置的断点和标记都会在源程序窗口的最左边显示出来。
(2).寄存器窗口(Registers)
这里显示AVR单片机的内部寄存器的数值。当程序停止运行时,你可以在这个窗口中用鼠标双击某个寄存器来修改这个寄存器的值。
(3).存储器窗口(Memory)
这里显示AVR单片机的内部存储器。你可以在这个窗口上面的下拉式选择框中选择显示AVR单片机的程序存储区、内部RAM区(I/O)、EEPROM区。你也可以点击窗口上的快捷按钮来选择是否显示存储区的ASCII码和选择显示的数值位数(8位或16位)。并且你可以双击某个地址上的数值来修改它。
(4).处理器窗口(Processer)
这个窗口中显示的是程序运行时的一些重要的信息:指令指针的地址、堆栈的状态、程序执行的周期记数、程序执行的时间、X/Y/Z寄存器的数值、AVR单片机的时钟频率、状态寄存器的值、看门狗的状态。
(5).I/O窗口
这里显示的有CPU控制寄存器的状态、外部中断的状态、记数器和定时器的状态、看门狗控制寄存器的状态、EEPROM控制寄存器的状态、I/O端口的状态、模拟比较器的状态。对每一项都显示它的名字、数值和地址。对显示的数值可以选择按二进制格式、十进制格式、十六进制格式或单选框格式来显示。你可以在显示的数值上双击鼠标来修改他,其中在单选框格式你可以方便的来修改每一位的值。当你在每一项上单击鼠标右键时,会弹出一个菜单,你可以在这个菜单上来选择显示的属性。
(6).监视窗口(Watch)
这里显示的是被监视的变量的情况(变量的名字、类型、数值,变量的地址)。你可以点击工具条上的Add Watch按钮(一个眼镜的符号)或者在这个窗口上点击鼠标右键,然后选择Add
Watch来添加监视的变量。这样在程序运行中,只要被监视的变量有变化都会在这个窗口中直观的显示出来。
菜单:
文件菜单:这里可以完成对文件的操作,包含打开文件、关闭文件等功能。
编辑菜单:完成一些基本的编辑功能。
工程菜单:完成新建工程、打开工程、保存工程、关闭工程等功能。
调试菜单:这个菜单十分重要,它完成对程序的调试功能。包含复位单片机、执行程序、中断程序、跟踪进入、单步执行、单步退出、运行到光标、多步执行、自动执行和设置调试参数。
断点菜单:这里完成增加断点、删除断点等功能。
跟踪和触发菜单:这个菜单对于软件模拟调试是不可用的。
监视菜单:这里可以增加监视的变量、删除监视的变量等功能。
参数菜单:这里可以设置调试器的参数、设置记录I/O端口的值、设置输入I/O端口信号。
显示菜单:这里可以选择打开各个功能窗口。
主要调试功能:
调试:
主要的调试功能都在调试(Debug)菜单下,这里控制了程序的执行方式,并且每一个功能都设置有热键,可用更方便的来进行调试。下面简单介绍以下各个调试功能:
复位单片机(Reset):这个功能可用引起程序复位,复位后和真正的单片机复位相同程序将停止到第一条指令上,等待用户的下一个调试指令。
执行程序(GO):这个功能开始全速执行程序,除非遇到断点或用户终止,否则程序将一直执行下去。
中断程序(Break):当程序在执行时,这个功能将停止执行程序。
跟踪进入(Trace into):这个功能每次执行一条指令。
单步执行(Step Over):这个功能每次执行一条指令,但如果遇到子程序调用,它会直接执行完这个子程序。
单步退出(Step Out):如果当前程序已经执行到了一个子程序中,这个功能将引起把这个子程序执行完后停止。
运行到光标(Run to Curser):执行这个功能,程序会运行到光标所指的指令处后停止。
多步执行(Multi Step):这个功能每次执行多条指令。每次执行的指令数在设置调试参数中设置。
自动执行(Auto Step):比较慢速的执行程序,你可用在源程序窗口看到程序的执行情况。执行的速度可用在设置调试参数中设置。
断点:
灵活的设置断点可用更加方便的完成调试,当你在某条指令上设置断点后,程序执行到这条指令时就会停止,这时你可用来查看程序执行的结果,比如各寄存器的值、内部RAM的值、I/O口的状态等等。设置断点有多种方式:在源代码窗口的某条指令上点击鼠标右键,在弹出的菜单上选择设置断点;在断点菜单中选择设置断点。当你不需要某个断点时,你也可以使用同意的方式来取消断点。
记录I/O端口:
这个功能可用允许你记录I/O端口的活动情况,这将帮助你分析程序的运行情况。当你在参数菜单上点击设置记录I/O端口的值(Simulator
Port)时就会打开记录I/O端口功能的对话框,再这里你可用选择记录某个I/O端口,I/O端口的活动情况将记录到一个文件中,你需要设置这个文件的路径和名字。
输入I/O端口信号:
果你需要在调试时对某个I/O口输入一个连续的信号,这就需要利用I/O口输入设置文件(*.STI),这项功能的使用方法基本上同记录I/O端口。STI文件的格式也和记录I/O端口生成的文件格式相同。例子如下:
000000000:00
000000010:FF
000000056:50
000000121:1A
以上说明当程序执行到000周期时对端口输入00,执行到010周期时对端口输入FF,执行到056周期时对端口输入50,执行到121周期时对端口输入1A。
2.AVR Studio的一般调试方法
写好程序后,首先我们要使用MPASM程序来编译程序,在编辑器没有检查出任何错误时就会产生烧写用的HEX文件、OBJ文件。然后我们就可用使用AVR
Studio来打开这个OBJ文件来进行调试了。
打开文件后,AVR Studio会自动打开源程序并显示在源程序窗口中,这时你可以使用显示菜单或快捷按钮来打开调试时要用到的各个功能窗口,比如:处理器窗口、寄存器窗口、I/O窗口等。然后你可以在参数菜单(Options)中的设置模拟调试参数(Simulator
Options)中设置模拟调试的单片机型号,单片机使用的时钟频率。
现在,你就可用使用我们前面介绍的调试功能来进行程序的调试了。
(文章中提到的AVR串行编程器的配套软件和AVR Studio模拟调试软件请到http://ediy.yeah.net下载)
|