xieshuangok 发表于 2011-1-6 10:43:22

Ucos II用CVAVR开发,芯片选择atmega128,程序在AVR Studio 4仿真看到没有问题,但是用Pot

Ucos II用CVAVR开发,芯片选择atmega128,程序在AVR Studio 4仿真看到没有问题,但是用Poteus 7选择Amega128仿真没有现象,为什么?

程序开发工具为CVAVR,版本信息是2.03.4:
http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_609416O3J9SH.JPG
(原文件名:CVAVR版本信息.JPG)

AVR Studio 4版本信息是4.18:
http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_609419ZHYZ1X.JPG
(原文件名:VR Studio 4版本信息.JPG)

Poteus 7版本信息是7.4 SP3(Build 6792):
http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_609417GBMRDZ.JPG
(原文件名:Poteus 7版本信息.JPG)

Ucos中user任务为(详细程序见下载文件中的main.c):
#define LED0PORTA
INT8U LEDDATA = 0xff;
void Task(void *ppdata)
{
        ppdata=ppdata;
        for(;;)
            {
            LED0 = --LEDDATA;
            OSTimeDly(5);
            }
}
OSTimeDly()为20.48ms;原因为AVR Studio 4仿真中我使用8M内部晶振,T0初始化为(详细程序见下载文件中的OS_CPU_C.C):
#define OCR0_DELAY_20MS                160        (见os_cfg.h)
void InitHardware(void)
{
        TCCR0= 0X0F;                //T0:CTC模式,1024分频
        TIMSK |= 0X02;                //允许中断
        TIFR&= 0XFD;                //清除标志
        OCR0   = OCR0_DELAY_20MS;        //CTC比较值
}
理论上仿真时现象应该为每102.4ms(20.48*5)PORTA重新赋值一次。

实际上仿真现象为:
<font color=blue>AVR Studio 4断点运行时结果为:<font color=#000000><font color=black>
http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_609422X5GWA8.JPG
<font color=green>(原文件名:第一次运行结果.JPG)

第一次运行结果
http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_609421GGHC8R.JPG
(原文件名:第二次运行结果.JPG)

第二次运行结果
http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_609420ZULRMD.JPG
(原文件名:第n次运行结果.JPG)

第n次运行结果
第一次与第二次间隔时间为:209874.38-106837.13=103037.25≈103.03ms
PORTA第一次为0XFE;第二次为0XFD;
第一次与第n次间隔时间为:5258837.38-106837.13=5152000.25≈5152ms,计算n为50
PORTA第一次为0XFE;第n次为0XCC;,计算n为50
从上面结果看出没有问题。

<font color=blue>Poteus 7仿真运行结果:<font color=#000000><font color=black>
从图上看到PORTA永远都是0XFE,没有变化,其设置如图:
http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_609418BB09LG.JPG
<font color=green>(原文件名:Poteus 7仿真运行结果.JPG)

仿真时间我已经运行到10分钟之久,可是现象还是0XFE。设置里也已经设置为内部8M。


<font color=red>为什么会出现两者不一致的问题,现在我把文件都上传,下载后如果需要编译时直接用CVAVR打开后请安装下图设置CVAVR,无需勾选smart Register Allocation和Automatic Global Register Allocation,编译就可以通过。<font color=#000000><font color=black>
http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_609423CRK75H.JPG
<font color=green>(原文件名:设置CVAVR.JPG)


<font color=blue>这样大虾们也可以帮忙仿真下,看看是否与小弟一样,如果哪位大虾手头上正有Atmega128的开发板,那么就请大虾下载小弟的程序,看看实物是否也如此呢,小弟刚刚学习ucos,邵贝贝的书看完不久,正准备用atmega28仿真,查错1天多了,还是没有结果。。。

点击此处下载 ourdev_609428SNUVWQ.rar(文件大小:2.77M) <font color=green>(原文件名:atmega128.rar)

xieshuangok 发表于 2011-1-6 13:43:28

自己顶一下,继续等待大虾解答

xieshuangok 发表于 2011-1-6 15:53:20

没有人弄ucos?还是没有人弄atmega128??

cyr_hongfeng 发表于 2011-1-6 20:01:58

可能是弄CVAVR的不多

cyr_hongfeng 发表于 2011-1-12 00:11:18

我挺关注的,我想问一下楼主,你是直接使用官方的例子吗?官方貌似只有IAR和GCC的,坛里有ICC上成功的,你可以参考一下,成功了说一下

wuqiushan741826 发表于 2012-6-24 17:51:16

哥们,请你共享一下 基于AVR Studio 4的 AVR128 UCOS 代码,我正在学,有劳了

Kennethken 发表于 2013-4-2 21:55:53

INT8U LEDDATA = 0xff;
前加DDRA = 0xFF;
设置成OUTPUT
试试看看可以不

FZK374470412 发表于 2013-6-24 13:12:20

我也是遇到这样的问题编译没问题就是仿真有问题没啥现象
页: [1]
查看完整版本: Ucos II用CVAVR开发,芯片选择atmega128,程序在AVR Studio 4仿真看到没有问题,但是用Pot