amobbs.com 阿莫电子技术论坛

标题: C8051F360写FT232H数据,只成功第一个循环 [打印本页]

作者: ajfan    时间: 昨天 12:42
标题: C8051F360写FT232H数据,只成功第一个循环
本帖最后由 ajfan 于 2024-10-15 12:48 编辑

水平不够,估计又钻牛角尖了,请教关于C8051F360程序的问题,
期望的功能是360读AD7606 然后通过FT232H将数据送到USB, Target_Samples为每次采集的数量(默认10),一次采集为一个循环,通过FT232H读到数据启动下一个循环的采集,目前的现象是第一个循环读AD7606数据写FT232H并上传是正确的,但第二,三个循环以后就只能读到0了,第四次后USB上位机卡死。

将“AD7606数据写FT232H”这一步的AD_Data改为Test1(FT232H每次只送固定Test1的值)每次循环都正常响应(均读到1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16),USB没有卡死。AD7606 CVT和Busy信号均正常。
将“AD7606数据写FT232H”这一步的改为Test1改回AD_Data,又每次只响应一次数据,然后USB卡死。

我的理解AD_Data仅是变量而已,里面什么值不应该让程序出现0(第一次是数据正常)或卡死现象,难道有什么变量赋值的问题或溢出啥么?


对应部分的程序如下:


#include <C8051F360.H>
#include <string.h>
#include <intrins.h>
#include <stdlib.h>

unsigned char Test1[16]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
unsigned char AD_Data[16]={0};

   ......
接收FT232H USB数据,设定对应的Target_Samples值,进行对应循环。
   ......
        unsigned char t=0,v=0,l=0;
                               
        if(Alive_Samples <= Target_Samples)
          {
            AD7606_CVT=1;
            Alive_Samples++;

            for(l=0;l<20;l++)  //等待ADC转换结束
               {
                 delay_1us();
               }

            for(t=0;t<8;t++)      //读AD7606数据
               {
                 AD7606_RD=0;
                 AD7606_RD=0;
                 AD_Data[2*t]=P1;                   //LSB
                 AD_Data[2*t+1]=P2;           //HSB
                 AD7606_RD=1;
                 AD7606_RD=1;
               }


        SFRPAGE   = CONFIG_PAGE;      //P3 设置为输出
        P3MDOUT   = 0xff;
        delay_ms(100);

                 
            for(v=0;v<16;v++)               //AD7606数据写FT232H
               {
                 P3=AD_Data[v];
                 FT232_WR=0;                  //delay t10>30ns
                 FT232_WR=1;
               }
             AD7606_CVT=0;  
         }

        else
          {
            Alive_Samples 如果大于等于Target_Samples,复位,等待新的启动命令

         SFRPAGE   = CONFIG_PAGE;      //P3 设置为输入,等待USB数据
         P3MDOUT   = 0x00;
         delay_ms(100);
   ......
          }
}       
作者: tang_qianfeng    时间: 昨天 15:59
怎么现在还有C8051买啊?
作者: ajfan    时间: 昨天 16:52
tang_qianfeng 发表于 2024-10-15 15:59
怎么现在还有C8051买啊?
(引用自2楼)

哈哈,老贵了,拆机的18一个




欢迎光临 amobbs.com 阿莫电子技术论坛 (https://www.amobbs.com/) Powered by Discuz! X3.4