查看: 7805|回复: 16

MC9S08GT60用P&E如何编写A/D程序

[复制链接]

该用户从未签到

10

主题

55

帖子

0

新手上路

Rank: 1

积分
104
最后登录
1970-1-1
发表于 2010-7-20 17:11:38 | 显示全部楼层 |阅读模式
请问,MC9S08GT60单片机用P&E Multilink 如何编写A/D程序?
急需!!谢谢
回复

使用道具 举报

该用户从未签到

6

主题

171

帖子

0

新手上路

Rank: 1

积分
356
最后登录
1970-1-1
发表于 2010-7-20 22:06:18 | 显示全部楼层

回复:MC9S08GT60用P&E如何编写A/D程序

貌似不难,看看 这帖吧
www.thinkchip.com.mx/index.php
  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-7-21 08:31:47 | 显示全部楼层

    RE:MC9S08GT60用P&E如何编写A/D程序

    建立MC9S08GT60的工程,然后配置-仿真器设置选择PE,A/D是程序编译,与仿真工具没关系,只要在工程中增加你需要的程序便可。
    该会员没有填写今日想说内容.

    该用户从未签到

    10

    主题

    55

    帖子

    0

    新手上路

    Rank: 1

    积分
    104
    最后登录
    1970-1-1
     楼主| 发表于 2010-7-25 16:06:12 | 显示全部楼层

    回复:MC9S08GT60用P&E如何编写A/D程序

    回复第 3 楼 安 于2010-07-21 00:31:47发表:
    建立MC9S08GT60的工程,然后配置-仿真器设置选择PE,A/D是程序编译,与仿真工具没关系,只要在工程中增加你需要的程序便可。 

    谢谢,我还有一个问题想问问。
    我现在可以把滑动变阻器的电压值采集进去了,就是编程不能实现将采集后的十进制值变为电压值显示出来,只要使用到乘除法就出现编译错误。我使用串口调试助手显示出来的值和电压值也不相符,想问问这是什么原因?谢谢!

    该用户从未签到

    10

    主题

    55

    帖子

    0

    新手上路

    Rank: 1

    积分
    104
    最后登录
    1970-1-1
     楼主| 发表于 2010-7-25 16:08:16 | 显示全部楼层

    回复:MC9S08GT60用P&E如何编写A/D程序

    回复第 2 楼 mickeytest于2010-07-20 14:06:18发表:
    貌似不难,看看 这帖吧
    www.thinkchip.com.mx/index.php
     

    谢谢,不过那里边的单词我都不认识,貌似不是英语。
  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-7-26 08:46:23 | 显示全部楼层

    RE:MC9S08GT60用P&E如何编写A/D程序

    你把代码发出来,存在以下几点:
    1、定义的范围,如果用10位采集AD需要定义为unsigned int ADVAL
    2、串口输出,可以使用先输出高八位,再输出低八位。ADVAL>>8,ADVAL
    3、算法的错误,可能是你定义的原因,这个需要你把代码贴出来
    4、输出为十进制,可以使用原来的数值ADVAL+0x30来实现
    该会员没有填写今日想说内容.

    该用户从未签到

    10

    主题

    55

    帖子

    0

    新手上路

    Rank: 1

    积分
    104
    最后登录
    1970-1-1
     楼主| 发表于 2010-8-8 22:07:12 | 显示全部楼层

    RE:MC9S08GT60用P&E如何编写A/D程序

    我是在Processor Expert下编程的,要实现的功能是:转动滑动变阻器,连续采集变阻器的电压值,并用串口调试助手显示出电压值。在Processor Expert中将各参数设置完后,程序如下:
    (1)主程序
    /* Including used modules for compiling procedure */
    #include "Cpu.h"
    #include "Events.h"
    #include "AD1.h"
    #include "AS1.h"
    #include "TI1.h"
    /* Include shared modules, which are used for whole project */
    #include &quotE_Types.h"
    #include &quotE_Error.h"
    #include &quotE_Const.h"
    #include "IO_Map.h"
    bool ValuesAvailable;  
    word Values[1];
    void main(void)
    {
       PE_low_level_init();
       AD1_Measure(TRUE);
       AD1_GetValue16(Values);
       AD1_Start();
      }
    (2)事件程序
    #include "Cpu.h"
    #include "Events.h"
    #define Vrefh 300
    #define Vrefl 0
    extern bool ValuesAvailable;
    extern word Values[1];
    char Value_H;
    char Value_L;
    long int Value;
    float Voltage;
    void AD1_OnEnd(void)
    {
      /* Write your code here ... */
    ValuesAvailable = TRUE;
    AD1_GetValue16(Values);  // Get AD conversion results
    Value_H=ATD1RH;
    Value_L=ATD1RL;
    Value=(int)Value_H*256;
    Value=(int)Value_L+Value;
    Voltage=((Value*(Vrefh-Vrefl))/1023);
    AS1_SendChar(Voltage);
    }
    void  AS1_OnError(void)
    {
      /* Write your code here ... */
    }
    void  AS1_OnRxChar(void)
    {
      /* Write your code here ... */
    }
    void  AS1_OnTxChar(void)
    {
      /* Write your code here ... */
    }
    void  AS1_OnFullRxBuf(void)
    {
      /* Write your code here ... */
    }
    void  AS1_OnFreeTxBuf(void)
    {
    }
    void TI1_OnInterrupt(void)
    {
    }
    运行程序后,Data1窗口中显示的电压值Voltage刚好是实际电压值的100倍(转换结果选用的是10位右对齐模式)。如果将程序中Voltage的定义改为float Voltage,将出现如下错误Link Error   : L1822: Symbol _FSFLOAT in file D:\我的文档\My Documents\GT60\AD2\AD2_Data\Standard\ObjectCode\Events.c.o is undefined

    Link Error   : L1822: Symbol _FSTRUNC in file D:\我的文档\My Documents\GT60\AD2\AD2_Data\Standard\ObjectCode\Events.c.o is undefined

    Link Error   : Link failed
    另外,如何能控制发送速度或在串口中显示的速度,就是当其连续转换时,在串口中不要连续出现一个数后才出下一个数。
    谢谢!
  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-8-9 08:44:28 | 显示全部楼层

    RE:MC9S08GT60用P&E如何编写A/D程序

    1、Voltage=((Value*(Vrefh-Vrefl))/1023);这里电压计算是否正确,AD引脚采集的电压是实际的电压。所以很可能是你的计算中将数据放大;
    2、你可以定义一个变量来判断,如果值发生变换再输出;
    3、Symbol _FSFLOAT ,Symbol _FSTRUNC没有定义
    该会员没有填写今日想说内容.

    该用户从未签到

    10

    主题

    55

    帖子

    0

    新手上路

    Rank: 1

    积分
    104
    最后登录
    1970-1-1
     楼主| 发表于 2010-8-9 11:30:04 | 显示全部楼层

    RE:MC9S08GT60用P&E如何编写A/D程序

    谢谢你,我找到我的错误了,参考电压的定义扩大了100倍,float的问题也解决了,现在就差串口显示的问题了,希望就在眼前了。非常感谢!!!
  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-8-9 14:16:26 | 显示全部楼层

    RE:MC9S08GT60用P&E如何编写A/D程序

    加油啊,如果有不明白,请留言。
    该会员没有填写今日想说内容.
    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-3 23:30 , Processed in 0.098796 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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