CVAVR编译在proteus7.4中无法正确运行问题

发布者:春林初盛最新更新时间:2021-08-05 来源: eefocus关键字:proteus7  正确运行 手机看文章 扫描二维码
随时随地手机看文章

这个问题主要会出现在用CVAVR来编译的程序中。一时兴起想弄个仿真,结果怎么着都不正常,AVR的端口一闪一闪的,觉得很奇怪,后来才发现是看门狗溢出了导致单片机不停的复位,把程序下到网上的proteus的AVR中就可以,网上下的proteus中的ATmega16何库里找出来的不太一样,就是没明白为什么库里调出来的不行。 后来在仿真日志中发现原来是看门狗一直都开着,我又没喂狗,因此一直都把处理器复位了,这回我更郁闷,我又没开看门狗,又没配置fuse,为什么自己会开呢,搞了N久后,发现有这个可能,一个CVAVR本身编译之后在proteus仿真中,默认开了看门狗(实际上我并没有开啊!!!而且在实物中,要配置fuse才能开的吧?)经过考究后发现,原来真的


是CVAVR给开了,因为我问了其它的师兄说他们的proteus没问题),于是试着手动显式关掉看门狗,关闭的方法如下:


1.先喂狗;

2.把WDTCR寄存器中的WDTOE位先置1,然后在接下来马上把WDE位置0;

3.可以了.

可以把下面这段程序加到主程序的开始(CVAVR编译器下通过):

#asm("WDR")

WDTCR=0x10;

WDTCR=0x00;

OK,就可以啦,这回在proteus中的仿真日志中就不会再看到诸如“看门狗溢出,处理器被重置”这样可恶的信息了,如果是在仿真中学习AVR的话,建议在主程序一开始就把看门狗给关掉,毕竟这跟实物不一样的。


希望这能让别的人少走弯路。


以上的情况是在使用CVAVR编译器中出现的,使用ICCAVR貌似没有这个问题。


关键字:proteus7  正确运行 引用地址:CVAVR编译在proteus7.4中无法正确运行问题

上一篇:AVR之最简单外部中断、定时器0、定时器1程序
下一篇:ATmega16 状态寄存器

推荐阅读最新更新时间:2024-10-17 18:36

CVAVR编译在proteus7.4中无法正确运行问题
这个问题主要会出现在用CVAVR来编译的程序中。一时兴起想弄个仿真,结果怎么着都不正常,AVR的端口一闪一闪的,觉得很奇怪,后来才发现是看门狗溢出了导致单片机不停的复位,把程序下到网上的proteus的AVR中就可以,网上下的proteus中的ATmega16何库里找出来的不太一样,就是没明白为什么库里调出来的不行。 后来在仿真日志中发现原来是看门狗一直都开着,我又没喂狗,因此一直都把处理器复位了,这回我更郁闷,我又没开看门狗,又没配置fuse,为什么自己会开呢,搞了N久后,发现有这个可能,一个CVAVR本身编译之后在proteus仿真中,默认开了看门狗(实际上我并没有开啊!!!而且在实物中,要配置fuse才能开的吧?)经过考究后
[单片机]
XMEGA128学习笔记2-CVAVR编译环境
XMEGA128常用的有GCC和IAR for AVR两种编译环境,其中GCC是ATMEL公司开发的AVR Studio 5.0,免费软件,而且内置了开发板的例程。IAR for AVR是一款商业软件。今天我们向大家介绍一款支持XMEGA的编译环境CVAVR,它能够通过设置参数自动生成代码,无需查阅相关寄存器。而且内置支持单总线,LCD等常用器件,下图是效果图:
[单片机]
XMEGA128学习笔记2-<font color='red'>CVAVR</font><font color='red'>编译</font>环境
AVR扩展4*4矩阵键盘的CVAVR程序
// 8位LED动态显示按键值 // 芯片 ATMEGA16L // 时钟 4MHz 内部 // 采用系统自带延时程序 #include mega16.h #include delay.h void leddisplay(); // 数码管显示 unsigned char keyin(void); // 键盘扫描 unsigned char ledxs ={16,16,16,16,16,16,0,0}; // 数码管显示缓冲区 flash unsigned char tab ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39
[单片机]
AVR扩展4*4矩阵键盘的CVAVR程序2
// 8位LED动态显示按键值 // 芯片 ATMEGA16L // 时钟 4MHz 内部 // 采用系统自带延时程序 #include mega16.h #include delay.h unsigned char KeyNumber; // 全局变量,保存按键值 void leddisplay(); // 数码管显示 void keyin(void); // 键盘扫描 unsigned char ledxs ={16,16,16,16,16,16,0,0}; // 数码管显示缓冲区 flash unsigned char tab ={0x3f,0x06,0x5b,0x4f,0x
[单片机]
AVR扩展4*4矩阵键盘的CVAVR程序
// 8位LED动态显示按键值 // 芯片 ATMEGA16L // 时钟 4MHz 内部 // 采用系统自带延时程序 #include mega16.h #include delay.h void leddisplay(); // 数码管显示 unsigned char keyin(void); // 键盘扫描 unsigned char ledxs ={16,16,16,16,16,16,0,0}; // 数码管显示缓冲区 flash unsigned char tab ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39
[单片机]
stm32中“拔掉jlink”程序无法正确运行
Q:在调试stm32程序时,从电脑USB口拔掉jlink后开发板上程序为什么无法正确运行?断点复位后也不行。 A:首先,要拔了jlink与开发板的连接(而不仅仅是其与PC的连接),因为jlink本省内部也有电路,对开发板上的程序运行有所影响; 其次,检查stm32的boot 的配置,将BOOT0配置为0才能从复位后Flash启动。BOOT的具体配置如下: BOOT1 BOOT0 启动模式 说明 X 0 Flash 复位后选择主闪存启动 0 1
[单片机]
单片机程序仿真器仿真正确烧录后不能正常运行
对于以前传统的51单片机由于不能进行在线调试,因此大多情况下先用仿真器进行仿真,然后再用烧录器将仿真好的程序烧录到单片机内。但是有很多情况仿真很正常,烧录到单片机后却不能运行,主要可能有以下几个原因: (1)复位电路问题:仿真时应用的是仿真器的复位,不是你自己设计的复位电路 (2)电源问题:仿真时用的电源也是仿真器的电源 (3)/EA引脚问题 当然也不能排除单片机是坏的,不过这种概率比较小,要是真碰到这样的情况,那真是运气太好了!!
[单片机]
如何正确检测电磁流量计传感器才能保证仪表的稳定运行
经过几十年的发展,国内外生产 电磁流量计 的厂家如雨后春笋般迅速发展起来。电磁流量计作为一种有效测量导电介质体积流量的仪表,主要元件包括传感器、流量转换和处理仪表等部分。其主要特点就是无节流阻流部件,不易堵塞,耐腐蚀性好,适用介质范围广,测量精度不受被测介质温度、粘度、密度、压力、比重等物理参数的影响,其示值在一定的电导率范围内与被标定的液体种类无关等特点。 电磁流量计除可测量一般液体的流量外,还可测量液固两相液体、高粘度液体及盐类、强酸、强碱液体的体积流量,可广泛应用于水泥、化工、轻纺、冶金、矿山、造纸、医药、给排水、食品饮料、制糖、酿造等工业技术部门,特别是在环保领域。目前,电磁流量计己成为环保部门定量管理企业污水排放的有效
[测试测量]
如何<font color='red'>正确</font>检测电磁流量计传感器才能保证仪表的稳定<font color='red'>运行</font>
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved