迪文科技论坛

 找回密码
 立即注册
搜索
楼主: hzpyl

【提问】用迪文DMG10600T070_A5WTC做了一个完整的产品,说说...

[复制链接]

15

主题

155

回帖

3489

积分

论坛元老

Rank: 8Rank: 8

积分
3489
 楼主| 发表于 2021-9-27 19:21:15 | 显示全部楼层
Lreamy 发表于 2021-9-27 17:28
AD对地有内阻,如果外面这么大的电阻,就要考虑通过计算滤除了

14楼的电压,是分压后的电压,应该就是入CPU的电压,
与外面的分压电阻无关的。

请问,这么个滤除 法?
回复

使用道具 举报

15

主题

155

回帖

3489

积分

论坛元老

Rank: 8Rank: 8

积分
3489
 楼主| 发表于 2021-9-29 07:36:05 | 显示全部楼层
请问迪文, 模拟地AGND能不能接 -0.3V 电压?
回复

使用道具 举报

0

主题

7

回帖

961

积分

高级会员

Rank: 4

积分
961
发表于 2021-9-29 16:22:43 | 显示全部楼层
本帖最后由 神秘の宅叔 于 2021-9-29 19:42 编辑

AGND是AD信号的参考地,我们是直接接地的,没有做隔离。如果您的算法里,特殊处理这个0.3V,可以;如果不特殊处理就不要接,比如AD1测量值是1.0V,程序识别为1.0+0.3。
回复

使用道具 举报

15

主题

155

回帖

3489

积分

论坛元老

Rank: 8Rank: 8

积分
3489
 楼主| 发表于 2021-11-25 10:26:24 | 显示全部楼层
曲线显示OK
    temp16[0] = 0x5AA5;
    temp16[1] = (1<<8) + 0;                // 一次性写入几个曲线通道的数据 + 未定义
    temp16[2] = (0<<8) + 1;                // 曲线通道ID(0~7) + 一次性写入多少个数据
    temp16[3] = temp16A;                // 数据
    write_dgusii_vp(CHART_ADDR, (u8*)&temp16, 4);

但 请问,清除曲线怎么做?
回复

使用道具 举报

0

主题

1276

回帖

5290

积分

论坛元老

Rank: 8Rank: 8

积分
5290
发表于 2021-11-25 10:32:38 | 显示全部楼层
hzpyl 发表于 2021-11-25 10:26
曲线显示OK
    temp16[0] = 0x5AA5;
    temp16[1] = (1

通道对应的缓冲区写0 就可以
回复

使用道具 举报

15

主题

155

回帖

3489

积分

论坛元老

Rank: 8Rank: 8

积分
3489
 楼主| 发表于 2021-11-26 14:33:46 | 显示全部楼层
以下写程序,长时间运行,好像会出错,
请问,此程序有什么问题?

/*****************************************************************************/
//                        写DGUS变量数据
// addr=DGUS变量地址  *buf=写入数据指针  len=写入数据字长度
// 写1个16位数据:1.3~1.4us
// 写64个16位数据:52us
/*****************************************************************************/
void write_dgusii_vp(u16 addr, u8 *buf, u16 len)
{
        u8  OddEven;

        OddEven =(u8)(addr&0x01);
        addr =addr/2;                         // DGUS变量存储器位宽为32bit,每个地址对应4Bytes数据
        ADR_H =0x00;
        ADR_M =(u8)(addr>>8);
        ADR_L =(u8)(addr);
        ADR_INC =0x01;
        RAMMODE =0x8F;                        // .5: 1=读变量存储器 0=写变量存储器
        while(APP_ACK ==0);                // 硬件对8051占用变量存储器请求的应答:1=OK,0=BUSY需要继续等待

        if(OddEven && (len>0))
        {
                RAMMODE =0x83;
                DATA1=*buf++;
                DATA0=*buf++;
                APP_EN =1;                // 写1启动1次读写,硬件执行后清零
                len --;
        }

        RAMMODE =0x8F;
        while(len>=2)
        {
                DATA3=*buf++;
                DATA2=*buf++;
                DATA1=*buf++;
                DATA0=*buf++;
                APP_EN =1;                // 写1启动1次读写,硬件执行后清零
                len =len-2;
        }

        if(len)
        {
                RAMMODE =0x8C;
                DATA3=*buf++;
                DATA2=*buf++;
                APP_EN =1;                // 写1启动1次读写,硬件执行后清零
        }
        RAMMODE=0x00;
}
回复

使用道具 举报

0

主题

1276

回帖

5290

积分

论坛元老

Rank: 8Rank: 8

积分
5290
发表于 2021-11-26 14:44:31 | 显示全部楼层
hzpyl 发表于 2021-11-26 14:33
以下写程序,长时间运行,好像会出错,
请问,此程序有什么问题?

进函数 关闭中断 函数末尾再开启试试?
回复

使用道具 举报

15

主题

155

回帖

3489

积分

论坛元老

Rank: 8Rank: 8

积分
3489
 楼主| 发表于 2021-11-26 15:19:22 | 显示全部楼层
integer_32 发表于 2021-11-26 14:44
进函数 关闭中断 函数末尾再开启试试?

是这样吗? 好像还是几十分钟就出现问题。

/*****************************************************************************/
//                        写DGUS变量数据
// addr=DGUS变量地址  *buf=写入数据指针  len=写入数据字长度
// 写1个16位数据:1.3~1.4us
// 写64个16位数据:52us
/*****************************************************************************/
void write_dgusii_vp(u16 addr, u8 *buf, u16 len)
{
        u8  OddEven;

        EA = 0;
        OddEven =(u8)(addr&0x01);
        addr =addr/2;                         // DGUS变量存储器位宽为32bit,每个地址对应4Bytes数据
        ADR_H =0x00;
        ADR_M =(u8)(addr>>8);
        ADR_L =(u8)(addr);
        ADR_INC =0x01;
        RAMMODE =0x8F;                        // .5: 1=读变量存储器 0=写变量存储器
        while(APP_ACK ==0);                // 硬件对8051占用变量存储器请求的应答:1=OK,0=BUSY需要继续等待

        if(OddEven && (len>0))
        {
                RAMMODE =0x83;
                DATA1=*buf++;
                DATA0=*buf++;
                APP_EN =1;                // 写1启动1次读写,硬件执行后清零
                len --;
        }

        RAMMODE =0x8F;
        while(len>=2)
        {
                DATA3=*buf++;
                DATA2=*buf++;
                DATA1=*buf++;
                DATA0=*buf++;
                APP_EN =1;                // 写1启动1次读写,硬件执行后清零
                len =len-2;
        }

        if(len)
        {
                RAMMODE =0x8C;
                DATA3=*buf++;
                DATA2=*buf++;
                APP_EN =1;                // 写1启动1次读写,硬件执行后清零
        }
        RAMMODE=0x00;
        EA = 1;
}
回复

使用道具 举报

0

主题

420

回帖

2318

积分

金牌会员

Rank: 6Rank: 6

积分
2318
发表于 2021-11-26 15:24:49 | 显示全部楼层
hzpyl 发表于 2021-11-26 15:19
是这样吗? 好像还是几十分钟就出现问题。

/********************************************************* ...

出现问题的现象是什么。您的代码没有什么问题
回复

使用道具 举报

15

主题

155

回帖

3489

积分

论坛元老

Rank: 8Rank: 8

积分
3489
 楼主| 发表于 2021-11-26 15:45:51 | 显示全部楼层
U8 code  AutoWalk_0V_10V_Table[]        ={ 0,1,2,3,4,5,6,7,8,9,10,9,8,7,6,5,4,3,2,1,0, 0,  0,0 };

                        temp16A = AutoWalk_0V_10V_Table[AutoWalk];
                        write_dgusii_vp(Icon_K11_0V_10V, (u8*)&temp16A, 1);

我监控到AutoWalk 改变了。 但 Icon_K11_0V_10V 写入,几十分钟就会出错一次。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-11-25 19:29 , Processed in 0.059630 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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