搜索
bottom↓
回复: 6

使用马老师的实验板,ADC实验通不过了,求教

[复制链接]

出0入0汤圆

发表于 2006-4-14 17:50:13 | 显示全部楼层 |阅读模式
连线是这样的:

  B口8根线分别连到LED的JA上,JU7上3个跳线接上,JD1连到PA0上。

融丝位为SUT1,SUT0,CKSEL3,CKSEL1,CKSEL0打钩。

程序如下:

#include <iom16v.h>

#include <macros.h>

#pragma interrupt_handler adc_isr:15  

unsigned int adc_data;



void adc_isr(void)//中断服务程序

{

  unsigned char temp;

  

    adc_data = ADC;//读取10位的数据

   temp=(adc_data>>2);

   PORTB=temp;

   ADCSRA|=0x40;  

                           

}  



void main (void)

{

  OSCCAL=0xad;

   PORTA=0x00;

   DDRA=0x00;



   DDRB=0xff;

   ACSR=0x80;

   ADMUX=0x00;

   ADCSRA=0xce;

   SREG=0x80;

   do{

    ;

    } while(1);



}

已经多次阅读了DATASHEET,应该说在ADC转换时,使用的只有ADMUX,ADCSRA,ADCH,ADCL。我现在使用的中断只是想用单一转换模式,所以不考虑SFIOR。其实ACSR根据书上所写,都好象不必要赋值。这是最简化的ADC转换,但却一直通不过,想不通。论坛上对于ADC的讨论我都看过了,但还是找不到答案。很多都不是使用中断写的,也就是根据ADIF的状况来判断。使用中断初始化的,我都实验过了,通不过。

在ADC转换的过程中,关于时序方面,好象没有说到延时的问题。只是说ADC要的时间较长。

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

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2006-4-17 10:33:13 | 显示全部楼层
还有,根据DATASHEET说的,ADC转换在ADSC置位的随后的ADC的CLOCK第一个时钟周期的上升沿进行转换,是不是也可以理解为只要ADSC被置位(且ADEN=1),转换就开始进行。那么如果设置了SREG=0X80;就会立即跳到中断服务程序里了。而没有其他条件的限制。那么其他需要条件的中断如何进入他们自己的中断程序呢,时间都被ADC中断占用了。

我看了几个论坛上关于ADC的查询方式的转换,都是用的ADIF来判断转换是否完成,可时序图上的ADIF在以后的(除了第一次)转换中是可以为1的,我用ADSC的位来查询,也取的成功。

出0入0汤圆

 楼主| 发表于 2006-4-18 04:31:16 | 显示全部楼层
如果是ADC转换结束后才产生中断,那么是否13.5这么长的转换时间,在简单的实验情况下不足以完成转换过程。必须要在中断发生前处理其他的地方把这个时间度过呢。明天在看看。

出0入0汤圆

发表于 2006-4-18 11:28:41 | 显示全部楼层
AVR的ADC转换是硬件完成的,从开始启动到转换结束需要13个DC时钟,在这个时间你的程序当然可以做其它的事情。简单的方法是启动ADC转换后,程序去执行其它的事情,然后再查询ADC转换是否完成。当然最好的方式是使用ADC完成中断,这样可以提高系统程序的效率,但对系统程序编写的能力要求高。

出0入0汤圆

 楼主| 发表于 2006-4-18 12:05:27 | 显示全部楼层
您好,我正在想做的是您说的第2步,因为用查询的方式,已经在实验板上通过了。您是不是说,使用中断的话,必须很好的理解程序运行的各个步骤的时间关系。您的书上还没有ADC转换的例子,期待中 。

出0入0汤圆

 楼主| 发表于 2006-4-26 14:54:45 | 显示全部楼层
您好,问题已经解决(从5V处连根线到AREF上就可以显示了)。但我还是有点不明白。

使用中断,ADMUX=0X00;ADCSR=0XCE;AREF的电位为0。

使用查询,ADMUX=0X00;ADCSRA=0XC7;ADREF=5V。



WHY?


-----此内容被wsmcjm于2006-04-26,14:56:41编辑过

出0入0汤圆

发表于 2006-4-26 21:35:50 | 显示全部楼层
AREF引脚是用于外接ADC参考电源的。一般情况下,AREF引脚只须对地加个电容,参考电源通过设置可使用内部参考。可能你的ADC初始化有些问题。请仔细看看AVR手册的ADC部分。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-18 16:36

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

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