搜索
bottom↓
回复: 2

C8051F360写FT232H数据,只成功第一个循环

[复制链接]

出340入0汤圆

发表于 昨天 12:42 | 显示全部楼层 |阅读模式
本帖最后由 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);
   ......
          }
}       

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入18汤圆

发表于 昨天 15:59 | 显示全部楼层
怎么现在还有C8051买啊?

出340入0汤圆

 楼主| 发表于 昨天 16:52 | 显示全部楼层
tang_qianfeng 发表于 2024-10-15 15:59
怎么现在还有C8051买啊?
(引用自2楼)

哈哈,老贵了,拆机的18一个
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-16 08:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表