阅读:956回复:4
为什么郁闷的人总是我,我到底做错了什么???
我的D12用的是中断INT1,ADC0809用的是INT0,设置INT0为低优先级,INT1为高优先级,我在主程序里设置各项参数(包括启动A/D),参数如下:
ADC = 0x7ff8 ; //定义A/D的端口地址 ADCdata = 0x1000; //定义数据缓冲器地址 i = 8; if(bEPPflags.bits.setup_packet) { ................ } else { IT0 = 1; //设置IN0为边沿触发 EX0 = 1; //允许外部中断0中断 PX0 = 0; //设置为低优先级 *ADC = i ; //启动ADC0809 } 中断程序如下: adc_das() interrupt 0 { bEPPflags.bits.das_flag = 1; tmp = *ADC; //读取A/D转换结果 *ADCdata = tmp;//结果值存储到数据缓存区 ADCdata++; //数据缓存区指针地址加1 //i--; *ADC = i; //重新启动模拟输入通道0 A/D转换 } 并把ADCdata 指针传递到D12的端点2发送main_txdone(void)的缓存,但主机这时候枚举没有完全成功,去掉中断后枚举是正确的,我觉得可能是中断的或者初始化(包括启动A/D转换)放的位置不对,大家给点意见,拜托了 |
|
沙发#
发布于:2003-07-15 11:15
上电后先打开USB 中断,延时 100 毫秒后再打开 A/D 中断。就行了。
|
|
板凳#
发布于:2003-07-15 11:35
枚举成功后再打开 A/D 中断试一试。
|
|
|
地板#
发布于:2003-07-15 11:44
最好所有其他的工作要在枚举完成以后,再进行!
|
|
地下室#
发布于:2003-07-15 12:47
我是一位新手,上面的兄弟能否详细点???(在线求助)
|
|