阅读:2203回复:12
adc0809数据采集和通过D12的主端点数据传输求救:我检查个引脚都正常,但采集到的数据都是零,这是为什么?程序如下:(鼓励分30分))
相关参数:
ADC = 0x7ff8 ; //定义A/D的端口地址 ADCdata = 0x1000; //定义数据缓冲器地址 i = 8; 数据采集中断程序 adc_das() interrupt 0 { bEPPflags.bits.das_flag = 1; tmp = *ADC; //读取A/D转换结果 *ADCdata = tmp;//结果值存储到数据缓存区 ADCdata++; //数据缓存区指针地址加1 i--; *ADC = i; //启动下一个模拟输入通道A/D转换 } 发送程序: if (bEPPflags.bits.setup_packet) { DISABLE; bEPPflags.bits.setup_packet = 0; ENABLE; control_handler(); D12SUSPD = 1; //释放D12的挂起状态 } // if setup_packet else { IT0 = 1; //设置IN0为边沿触发 EX0 = 1; //允许外部中断0中断 PX0 = 0; //设置为低优先级 *ADC = i ; //启动ADC0809 // while(i); //等待8个通道A/D转换完毕 //if(bEPPflags.bits.das_flag == 1) // DISABLE; // bEPPflags.bits.das_flag = 0; // ENABLE; // EX0 = 0; //禁止外部中断INT0*/ main_txdone(); } 主端点发送: void main_txdone(void)reentrant { unsigned char len,epstatus; D12_ReadLastTransactionStatus(5); /* Clear interrupt flag */ epstatus = D12_ReadEndpointStatus(5);//读取缓存区状buffer1_full|buffer0_full epstatus &=0x60; len = D12_WriteBuffer(5,ADCdata,64); if(epstatus == 0x60) { len = D12_WriteBuffer(5,ADCdata,64);//写入双缓存数据 } } |
|
最新喜欢:![]() |
沙发#
发布于:2003-07-14 16:20
应该够的,大约3.5---4.0v,我觉得是否是我的中断的问题,我得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转换)放的位置不对,人多力量大,大家 来帮帮忙,谢谢 [编辑 - 7/15/03 by duanjong] |
|
板凳#
发布于:2003-07-14 15:56
应该够的,大约3.5---4.0v
|
|
地板#
发布于:2003-07-14 14:37
看看AD时钟信号的电平幅度够不够,如果不够的话,可能无法触发USB从AD中读数据。
|
|
地下室#
发布于:2003-07-14 14:31
AD的时钟
|
|
5楼#
发布于:2003-07-14 14:17
是不是USB写信号的触发有问题啊,你是用什么触发的写信号啊,CPLD还是AD的时钟?
|
|
6楼#
发布于:2003-07-14 14:12
数据线上有数据,但传输到主机显示的都是零
|
|
7楼#
发布于:2003-07-14 13:51
我在主程序里发数据(比如我定义一个数组从00-3F) ,通过USB口发送出去,界面上接受到的数据也是正确的,但加上数据采集的话,数据显示的都是零?????
|
|
8楼#
发布于:2003-07-14 13:48
你的意思是说数据线上的数据对,但无法传到主机嘛?
|
|
9楼#
发布于:2003-07-14 13:45
现在的问题是数据线上也有数据
|
|
10楼#
发布于:2003-07-14 11:22
采集到的数据都是0?
那不是usb的问题吧 如果是主机那边都是0的话 你用示波器看看数据线上是否有数据 没有的话就是你的0809的问题了。 |
|
11楼#
发布于:2003-07-14 11:09
能详细一点吗?
|
|
12楼#
发布于:2003-07-14 08:35
看看寄存器的配置有没有问题?
|
|