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轉換結束了? 是不是有別的問題? 單步調試?两步之间是多少时间?按秒算吧.启动ADC后,在几十个us就完成转换了.
我早就建议不要依赖实时的仿真,许多与时间相关的是很难仿真的,比如ADC,USART,TWI,SPI等.
你在台资公司?怎么使用繁体中文系统? 謝謝馬老師的指點,我在港資公司。
页:
[1]