duanjong
驱动中牛
驱动中牛
  • 注册日期2003-03-10
  • 最后登录2006-01-18
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:2203回复:12

adc0809数据采集和通过D12的主端点数据传输求救:我检查个引脚都正常,但采集到的数据都是零,这是为什么?程序如下:(鼓励分30分))

楼主#
更多 发布于:2003-07-13 21:41
相关参数:
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);//写入双缓存数据
}
}

最新喜欢:

crazyqpcrazyq...
duanjong
驱动中牛
驱动中牛
  • 注册日期2003-03-10
  • 最后登录2006-01-18
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于: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]
duanjong
驱动中牛
驱动中牛
  • 注册日期2003-03-10
  • 最后登录2006-01-18
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-07-14 15:56
应该够的,大约3.5---4.0v
luckyjm
驱动中牛
驱动中牛
  • 注册日期2002-12-19
  • 最后登录2004-03-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-07-14 14:37
看看AD时钟信号的电平幅度够不够,如果不够的话,可能无法触发USB从AD中读数据。
duanjong
驱动中牛
驱动中牛
  • 注册日期2003-03-10
  • 最后登录2006-01-18
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-07-14 14:31
AD的时钟
luckyjm
驱动中牛
驱动中牛
  • 注册日期2002-12-19
  • 最后登录2004-03-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-07-14 14:17
是不是USB写信号的触发有问题啊,你是用什么触发的写信号啊,CPLD还是AD的时钟?
duanjong
驱动中牛
驱动中牛
  • 注册日期2003-03-10
  • 最后登录2006-01-18
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-07-14 14:12
数据线上有数据,但传输到主机显示的都是零
duanjong
驱动中牛
驱动中牛
  • 注册日期2003-03-10
  • 最后登录2006-01-18
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-07-14 13:51
我在主程序里发数据(比如我定义一个数组从00-3F) ,通过USB口发送出去,界面上接受到的数据也是正确的,但加上数据采集的话,数据显示的都是零?????
luckyjm
驱动中牛
驱动中牛
  • 注册日期2002-12-19
  • 最后登录2004-03-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-07-14 13:48
你的意思是说数据线上的数据对,但无法传到主机嘛?
duanjong
驱动中牛
驱动中牛
  • 注册日期2003-03-10
  • 最后登录2006-01-18
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-07-14 13:45
现在的问题是数据线上也有数据
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-07-14 11:22
采集到的数据都是0?
那不是usb的问题吧
如果是主机那边都是0的话
你用示波器看看数据线上是否有数据
没有的话就是你的0809的问题了。
duanjong
驱动中牛
驱动中牛
  • 注册日期2003-03-10
  • 最后登录2006-01-18
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-07-14 11:09
能详细一点吗?
luckyjm
驱动中牛
驱动中牛
  • 注册日期2002-12-19
  • 最后登录2004-03-17
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-07-14 08:35
看看寄存器的配置有没有问题?
游客

返回顶部