搜索
bottom↓
回复: 5

关于对AVRstudio4.18及proteus7.8仿真mega16 AD连续转换模式的实验结果

[复制链接]

出0入0汤圆

发表于 2011-11-10 20:59:46 | 显示全部楼层 |阅读模式
马老师:关于不用中断时AD连续转换模式,我用AVRstudio和proteus做了仿真实验,并烧到板子上做了硬件测试。
目的:
    测试在连续转换模式下,两种仿真软件与硬件实际运行时的符合情况。
结果:
    发现两种仿真软件对连续转换模式下得仿真与实际不符,主要体现在ADSC位:按手册,AD连续转换模式启动后,不需要人为干预,ADSC一直读出1,这与硬件测试的结果吻合,证明在板子上AD连续转换已经启动运行良好(手册中指出,可通过ADSC是否为1反应AD转换是否工作正常)。但是两种仿真软件在运行中对ADSC位的模拟结果均为:第一次启动后为1,一段很短的时间后为0,以后一直保持为0,
可能的后果:
    如果单纯从软件仿真的结果看,非常容易被误认为AD没有正常工作,前一段时间我就被迷惑了,耽误了很多时间。对高手来说,可能觉得不是什么问题,我的这个测试旨在对没有仿真器或开发板的新手做个提醒,希望有所帮助。
PS:
    这是我第一次做这种测试报告,我是新手,或许我的整个测试是错误的,所以我贴上详细的测试过程和源文件(用CVAVR编写),请老师和高手们检查有没有错误。
以下是测试过程用的程序:
/*****************************************************
This program was produced by the
CodeWizardAVR V2.04.4a Advanced Automatic Program Generator


Project :free running test(ourAVR)
Date    : 2011/11/9
Author  : microhard567
Comments: 演示avr sdudio V4.18 simulater 在模拟连续转换模式
         工作过程方面的缺陷


Chip type               : ATmega16
Program type            : Application
AVR Core Clock frequency: 4.000000 MHz
Memory model            : Small
External RAM size       : 0
Data Stack size         : 256
*****************************************************/

#include <mega16.h>

#include <delay.h>

#define ADC_VREF_TYPE 0x40


void main(void)
{
// Port A initialization
PORTA=0x00;
DDRA=0x00;

// Port B initialization
//PROTB.6 led->ADSC;PROTB.4 led->ADIF
PORTB=0x00;
DDRB=0xff;

// ADC initialization
// ADC Clock frequency: 125.000 kHz
// ADC Voltage Reference: AVCC pin
// ADC Auto Trigger Source: Free Running
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0xA5;//interrupt disabled,125.000 kHz
SFIOR&=0x1F; //Free Running mode

PORTB=0x00; //led test
delay_ms(1000);

ADCSRA|=(1<<ADSC);//start 1st AD conversion


while (1)
      {
       PORTB=ADCSRA; //tset ADCSRA
       delay_ms(500);
      }
}
-----------------------------------------------------------------------------
这是studioV4.18SP3的仿真结果:

(原文件名:AVRstudio4.18仿真两分钟之后的结果.jpg)
这是proteusV7.8Professional的仿真结果:

(原文件名:proteus7.8 professional仿真2分钟后的结果.jpg)

这是硬件测试结果:(我的开发板上LED灯是共阳的)
点击此处打开 ourdev_693928GY7L2F.jpg(文件大小:1.05M,只有400K以内的图片才能直接显示) (原文件名:led灯测试.jpg)
点击此处打开 ourdev_693929VBN8S5.jpg(文件大小:1.05M,只有400K以内的图片才能直接显示) (原文件名:实际硬件测试结果.jpg)
------------------------------------------------------------------------------------------------
以下是测试用到的全部源文件:点击此处下载 ourdev_693930EOPNGD.rar(文件大小:58K) (原文件名:free running test(ourAVR).rar)

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2011-11-11 12:25:03 | 显示全部楼层
难道大家都觉得没有意义?白忙活了
刚才逛AVRfreaks论坛无意中发现这样一个帖子:http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=78171&highlight=ad+adsc
里面楼主有这么一句话:“So, I can tentatively say that the clearing of the ADSC bit in free-running mode is a bug in AVR Studio 4's simulator. ”但帖子最终没有对这个问题做出解释。
看来国外友人也发现了这样一个问题啊。

出0入0汤圆

发表于 2011-11-11 16:05:57 | 显示全部楼层
有没有意义主要是你自己的体会。
   
    证明软件模拟有BUG,这个对我讲没有意义,因为我知道这些软件不完善,主要用于模拟软件层面上的东西,硬件层面上的许多地方都有问题,也多次建议和倡导初学者不要依赖软件模拟什么的。如果一些基本的东西也要模拟后才能明白,说明基础就比较薄弱,与其忙活学习琢磨模拟器,还比如把基础加强点。
   
    但我觉得这个事情对你应该非常有意义,这个意义在于至少你学会了一些方法,知道以后碰到问题如何能比较快的找出原因,知道自己的差距在哪里。

     我认为,你应该重点是思考我证明ADSC,以及free-running功能正常,只用了10分钟,而你为什么花费这么长的时间才得出一个结论。这里不是说证明模拟有BUG没有意义,重点是你自己的测试证明代码为什么就搞不定?体会到这一点,对你就是有非常大的意义。

出0入0汤圆

发表于 2011-11-11 16:12:42 | 显示全部楼层
马上要用到,标记一下。

出0入0汤圆

 楼主| 发表于 2011-11-11 16:15:56 | 显示全部楼层
嗯,您说的确实在理,我想这就是程序设计的艺术,我会注意在今后的学习中积累,谢谢您的指导。
为了方便大家,我把最近马老师和各位高手对我的帮助贴子放到这里http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=5175384&bbs_page_no=1&bbs_id=1003

出0入0汤圆

发表于 2012-3-29 09:47:12 | 显示全部楼层
先标记一下,待细看
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 08:43

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表