003569 发表于 2008-6-17 16:56:57

M16 AD轉換問題,馬老師請指點一下

程序如下:

#define NOP() asm("NOP")

#include <ioavr.h>

void initial(void)
{
    SREG=0x00;                     
    DDRA=0x00;                     
    PORTA=0x00;      
}         

void initialADC(void)
{
    ADCSRA=0x00;         //disable the adc
    SFIOR=0x00;            
    ACSR=0x80;         
    ADMUX=0xc0;         //selsct interior 2.56V
    ADCSRA=0x86;               

}
void main(void)
{
    initial();
    initialADC();      
    while(1)
    {
          ADMUX|=0xc0;
          NOP();
          ADCSRA|=0x40;   //start the adc
          NOP();
          while ((ADCSRA&0x10)==0);
          ADCSRA|=0x10;
      }      
         
}
我使用的是IAR FOR AVR C4.20A 在我單步調試時發現運行到ADCSRA|=0x40時不能置位ADSC位進行開始ADC轉換,而是錯誤地將ADIF置位了,這時去看ADC寄存器的AD值,結果是正確的,為什麼會是這樣的結果? 是不是我一開始置位ADSC位,馬上就AD轉換結束了? 是不是有別的問題?

machao 发表于 2008-6-17 17:21:40

單步調試?两步之间是多少时间?按秒算吧.启动ADC后,在几十个us就完成转换了.

我早就建议不要依赖实时的仿真,许多与时间相关的是很难仿真的,比如ADC,USART,TWI,SPI等.

你在台资公司?怎么使用繁体中文系统?

003569 发表于 2008-6-18 08:34:38

謝謝馬老師的指點,我在港資公司。
页: [1]
查看完整版本: M16 AD轉換問題,馬老師請指點一下