缺少仿真器时AVR单片机的开发方法

2020-02-13来源: eefocus关键字:仿真器  AVR单片机  开发方法

对FLASH存贮器单片机,不要仿真机也能方便快速地开发程序。具体可以从以下几方面入手:

一、尽量使用高级语言开发系统程序 您有没有在写汇编程序时,标错一个标号而浪费您大把时间找错或跳转偏移量过大而不得不改动程序结构的经历。其实您如果使用高级语言开发程序,就不会有这样的痛苦。 在开发程序时,除了建立一个良好的开发文档外,使用语言的选择也很重要。有许多人认为使用汇编写程序比较精简,而用高级语言开发会浪费很多程序空间,其实这是一种误解。对一个有经验的,而且非常熟悉某种单片机的汇编高手而言,他是能写出比高级语言更精简的代码。而对汇编不是很熟的开发者、或突然更换了一种新的单片机,您能保证一定可以写出比高级语言更简练的代码吗? 高级语言的优越性是汇编语言不能比的:

1、程序移植方便

2、程序的坚固性

3、对数学运算的支持

4、条理清晰的结构化编程,程序的可维护性

5、开发周期短


现在的高级语言编译器(如C编译器)已可以产生代码效率很高的机器代码,因此建议大家能用高级语言实现的程序尽可能使用高级语言写,在对速度和时序要求特严的场合可以采用混合编程的方法来解决。


二、更多的使用软件模拟仿真环境 现在许多单片机都提供软件模拟仿真环境,如AVR单片机就可以在ATMEL公司提供的AVR STUDIO开发平台的模拟仿真环境中进行软件的模拟调试。BASCOM-AVR还提供了更加人性化和配合外部图形界面(键盘、标准LCD显示器等)的软件模拟调试环境。 ATMEL的AVR STUDIO是一个开发AVR单片机的集成开发环境,其支持高级语言和汇编语言的源代码级软件模拟调试。在模拟仿真条件下调试算法、程序流程等可以说和硬件仿真机是没有区别的;而调试延时程序、计算一段程序运行所花的时间等方面,可以说比硬件仿真器更方便,因为许多仿真机(如JTAG ICE)是无法提供程序运行时间等调试参数的。 另外,对I/O端口、定时器、UART、中断响应等,在AVR STUDIO中均可实现模拟仿真,用户也可以采用软件的单步运行、设置断点等手段,分析内存和查看AVR中所有的硬件资源的数据以及使用情况。 学会使用和以软件模拟仿真为主、已硬件仿真配合的系统开发调试手段可以大大提高项目的开发效率,缩短开发周期。因为,一旦系统整体设计完成,硬件PCB板的设计和制作同软件系统的开发可同时进行。当硬件系统板完成后,软件总体的架构也已经调试完成,既可进行实际的调试阶段。


三、善用目标板上的硬件资源 在许多系统目标板上均有LED、数码管、RS232等附件和接口,其实利用好这些附件接口,也能实现和完成程序的调试开发。 我们使用仿真器的目的是要观察单片机内部的状态和数据,利用这些附件和FLASH存贮器多次可擦写的特点,完全可以观察到单片机内部的状态。 AVR单片机是支持ISP的FLASH单片机,开发时可以通过下载电缆将其和PC连成一个整体,在程序编译完后立刻下载到目标MCU中运行。在需要观察单片机内部状态时,可以程序的适当位置加入少部分代码,把MCU的内部状态和数据通过LED、数码管等显示出来。在有RS232通信接口的应用中,可以直接将需要观察的MCU内部状态送到PC机,在PC机上用串口调试器等一些超级终端来显示数据。现在大部分的开发环境本身就提供了超级终端,如ICC、CVAVR、BASC0M-AVR等。 由于单片机采用了支持ISP的Flash技术,因此采用高级语言开发系统程序,更多的以软件模拟仿真技术,加上使用串口输出调试数据的开发手段已成为开发单片机和嵌入式系统(如32位ARM的COMMAND调试手段等)的流行和高效的方法。


四、举例

在开发AVR的I2C应用例程时,使用串口输出调试数据的方法介绍。

首先初始化UART。可以看出初始化UART只需要很少的几行代码,在完成程序调试后将可以将其删除。如果你的系统程序本身就需要使用串口,那么初始化UART就没有一行多余的代码了。


void uart_init(void)

{

UCSRB=(1<

UBRRL=(fosc/16/(baud+1))%256;

UBRRH=(fosc/16/(baud+1))/256;

UCSRC=(1<

}


然后我们可以写一个putchar函数,或直接使用标准输入输出库中的putchar函数。

void putchar(unsigned char c)

{

while (!(UCSRA&(1<

UDR=c;

}


接下来只要在需要调试的程序部分调用putchar函数就可以将一些需要查看的

MCU中硬件资源的数据和状态送PC机显示了。如要观察I2C中断程序中TWSR寄存器的值,只要在I2C中断程序中插入两行代码就可以了:

#pragma interrupt_handler TWI_ISR:iv_TWI

void TWI_ISR(void)

{

unsigned char temp = TestAck();

putchar(temp);

switch (temp);//调试完后,本行改为switch(TestAck()),

//删除上面两行就可以了。

{

case SR_SLA_ACK:

{

fill_rece();

TWI_STATE=TWI_RD;

Twi_ACK();

Break;

}

. . .

}

}


在PC机的超级终端软件中,设置波特率、数据格式后打开串口就可以观察TWSR寄存器的状态值了


关键字:仿真器  AVR单片机  开发方法 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic488099.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:AVR单片机入门一:单片机嵌入式系统的结构
下一篇:以AVR为基础的E2PROM数据动态存储策略

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

MSP430编程器仿真器以及JTAG、SBW、BSL接口的区别
对于51系统来说,很容易理解编程器和仿真器。通俗的说,仿真器是用来调试仿真的,编程器是用来批量生产时对MCU进行烧写目标代码的。对于MSP430来说,无论仿真还是烧写程序一般可以通过:JTAG、SBW、BSL接口进行。JTAG、SBW接口可以用于仿真接口,BSL接口不能用于仿真。而编程器则三种接口都支持。所以并不能说JTAG只支持仿真不支持编程,这是概念错误,JTAG仅仅是一种接口协议而已。下面简单描述一下三种接口的区别:1、JTAG是边界扫描技术,其在430内部有逻辑接口给JTAG使用,内部有若干个寄存器连接到了430的内部数据地址总线上,所以可以用JTAG访问430内部的所有资源,包括对FLASH的读写操作。所以可以用
发表于 2020-02-04
简易AVR仿真器制作
JTAGICE 是一款经典的仿真器。它支持的芯片清单为:ATmega128, ATmega128L,ATmega16, ATmega162, ATmega162V, ATmega165, ATmega165V, ATmega169, ATmega169V,ATmega16L, ATmega32, ATmega323, ATmega323L, ATmega32L, ATmega64, ATmega64L 。虽然它不支持Mega8/48/88/168等较新的常用芯片,但却无损它的实用性。我们可以用这款JtagICE仿真Mega16芯片进行开发,开发成功后,才移植到M8/48/88/168上。只要开发时留意一下,移植并不会
发表于 2020-01-23
简易AVR仿真器制作
摆脱仿真器的AVR单片机程序开发设计
AVR STUDIO开发平台的模拟仿真环境中进行软件的模拟调试。BASCOM-AVR还提供了更加人性化和配合外部图形界面(键盘、标准LCD显示器等)的软件模拟调试环境。ATMEL的AVR STUDIO是一个开发AVR单片机的集成开发环境,其支持高级语言和汇编语言的源代码级软件模拟调试。在模拟仿真条件下调试算法、程序流程等可以说和硬件仿真机是没有区别的;而调试延时程序、计算一段程序运行所花的时间等方面,可以说比硬件仿真器更方便,因为许多仿真机(如JTAG ICE)是无法提供程序运行时间等调试参数的。另外,对I/O端口、定时器、UART、中断响应等,在AVR STUDIO中均可实现模拟仿真,用户也可以采用软件的单步运行、设置断点等手段,分析
发表于 2019-12-24
各种ARM仿真器接口图
ULINK2 JTAG/SWD接口ULINK2接口是如何定义的?下面为ULINK2接口定义:下面是标准的接口排列:ST-Link SWIM & JTAG/SWD接口下面是标准的接口排列:ST-Link指定的标准接口 J-Link JTAG/SWD接口J-Link接口是如何定义的?下面为J-Link接口定义:下面是标准的接口排列:J-Link指定的标准接口JTAG引脚示意图:一、SWD 和传统的调试方式区别1. SWD 模式比 JTAG 在高速模式下面更加可靠2. GPIO 刚好缺一个的时候, 可以使用 SWD 仿真, 这种模式支持更少的引脚3. 在板子的体积有限的时候推荐使用 SWD 模式二、仿真器对 SWD
发表于 2019-09-23
各种ARM仿真器接口图
第3章 如何用DAP仿真器下载程序—零死角玩转STM32-F429系列
3.1 仿真器简介本书配套的仿真器为Fire-Debugger,遵循ARM公司的CMSIS-DAP标准,支持所有基于Cortex内核的单片机,常见的M3、M4和M7都可以完美支持,其外观见图 31。Fire-Debugger支持下载和在线仿真程序,支持XP/WIN7/WIN8/WIN10这四个操作系统,免驱,不需要安装驱动即可使用,支持KEIL和IAR直接下载,非常方便。图 31 DAP下载器外观3.2 硬件连接把仿真器用USB线连接电脑,如果仿真器的灯亮则表示正常,可以使用。然后把仿真器的另外一端连接到开发板,给开发板上电,然后就可以通过软件KEIL或者IAR给开发板下载程序。图 32 仿真器与电脑和开发板连接方式3.3 仿真器
发表于 2019-09-19
第3章 如何用DAP仿真器下载程序—零死角玩转STM32-F429系列
STM32 与 ST-Link V2仿真器 接线与烧录
TM32下载器 ST-Link V2仿真器 STM8编程器 自动升级 3.3V 5V可用 驱动下载地址:https://pan.baidu.com/s/1CM8z0W1BkYlX_Ek-iauCmw资料下载地址:https://pan.baidu.com/s/1Mcjco71s14jlcAkVqE1-yQ迷你ST-LINK /  V2,功能与官方完全一致,支持自动升级,支持全系列STM32 SWD 和全系列 STM8 SWIM的下载和调试。 本店ST-LINK V2 八大靓点:1、使用U盘外壳安装内部主板,携带方便,安全可靠!2、接口定义直接在外壳上标注,一目了然,方便实用!3、5V、3.3V同时对外
发表于 2019-06-03
STM32 与 ST-Link V2仿真器 接线与烧录
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多每日新闻
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved