zoukankan      html  css  js  c++  java
  • CVAVR编译在proteus7.4中无法正确运行问题

    这个问题主要会出现在用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貌似没有这个问题。

    ★emouse 思·睿博客文章★ 原创文章转载请注明:http://emouse.cnblogs.com
  • 相关阅读:
    认识ASP.NET 中的 AppDomain
    试验总结1 改变递归函数中的执行内容
    试验总结2 break与continue
    开篇的话
    01复杂度3 二分查找
    02线性结构2 一元多项式的乘法与加法运算
    01复杂度2 Maximum Subsequence Sum
    02线性结构4 Pop Sequence
    01复杂度1 最大子列和问题
    02线性结构1 两个有序链表序列的合并
  • 原文地址:https://www.cnblogs.com/emouse/p/2198229.html
Copyright © 2011-2022 走看看