This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TMS570LS0432:错误#143

Guru**** 2540720 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/788987/ccs-tms570ls0432-error-143

器件型号:TMS570LS0432

工具/软件:Code Composer Studio

您好!

我想读出多个 ADC 通道并将其发送到终端。

因此、我想使用具有我正在使用的 ADC 通道数的 for 循环。

这是我的代码:

unsigned int value1、value2、ID1、ID2、NumberInChars、 IdInChars;
unsigned int value[8]、id[8]、ch_count= 0、i;
adcData_t adc_data[2];

adcInit();
sciInit();
gioInit();
gioSetDirection (gioPORTA、0xFFFFFFFF);

while (1){

adcStartConversion (adcREG1、adcGROUP1);// Kondertunerung starten
while (!adcIsConversionComplete (adcREG1、adcGROUP1));// Warten、bis Kondigerung fertig ist


adcGetData (adcREG1、adcGROUP1、ADC_DATA);

对于(i=0 <ch_count;i++){

Value[i]=(unsigned int) adc_data[i].value;
ID[i]=(unsigned int) adc_data[i].id;


IdInChars[i]= ltoa (id[i]、(char*)命令);
sciSend (scilinREG、IdInChars[i]、command);//引脚通道:
sciSend (scilinREG、2、(unsigned char *)":");


NumberInChars[i]= ltoa (value[i]、(char*)命令);
sciSend (scilinREG、NumberInChars[i]、命令);//传感器数据
sciSend (scilinREG、2、(unsigned char *)"、");

/*仅适用于2个正在工作的 ADC 通道的代码
value1=(unsigned int) adc_data[0]。value;             
ID1 =(unsigned int) adc_data[0].id;
value2=(unsigned int) adc_data[1].value;
ID2 =(unsigned int) adc_data[1].id;

IdInChars = ltoa (ID1、(char*)命令);
sciSend (scilinREG、IdInChars、command);// PIN-Channel:
sciSend (scilinREG、2、(unsigned char *)":");
NumberInChars = ltoa (value1、(char*)命令);
sciSend (scilinREG、NumberInChars、命令);//传感器数据
sciSend (scilinREG、2、(unsigned char *)"、");

IdInChars = ltoa (ID2、(char*)命令);
sciSend (scilinREG、IdInChars、command);// PIN-Channel:
sciSend (scilinREG、2、(unsigned char *)":");
NumberInChars = ltoa (value2、(char*)命令);
sciSend (scilinREG、NumberInChars、命令);//传感器数据
sciSend (scilinREG、2、(unsigned char *)"、");

*

sciSend (scilinREG、2、(unsigned char *)"\r\n");//新建行
adcStopConversion (adcREG1、adcGROUP1);


if (value1>128)                  //LED
gioSetBit (gioPORTA、1、1);
其他
gioSetBit (gioPORTA、1、0);

_delay_cycles (160000-1);
gioToggleBit (gioPORTA、0);

adcResetFiFo (adcREG1、adcGROUP1);

对于标记为蓝色的行、错误#143 (表达式必须具有点对对象指针)是八进制的。

(此外、我在读取 ADC-引脚的 ID 时遇到问题:虽然我使用 ADIN0和 ADIN1、但我获得的 ADC_DATA.id 的数字是0。)

提前感谢您!

Christian

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我只能帮助你的帖子的这一方面...

    [引用 user="Christian Schau"]对于蓝色标记的行,错误#143 (表达式必须具有点对对象指针)表示八个字段。

    添加编译器选项--verbose_diagnostics。  这会使编译器回显问题源代码行、并在问题开始的位置添加一个标记。  这通常使问题更容易理解。   

    如果这不起作用、那么我需要一个测试用例、允许我重现相同的行为。  对于看到诊断的源文件、请按照文章 如何提交编译器测试用例中的说明进行操作。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我自己实际上发现了问题:在旧版本中,IdInChars 和 NumberInChars 未声明为数组。 现在它可以工作、并且终端中显示了两个不同的 ADC 值。

    但是、引脚的 ID 不正确:对于两个引脚、它都是0。
    不过、这两个值是不同的、我可以使用电位器进行更改。

    您是否有任何建议、说明为什么这种方法不能正常工作?  

    谢谢:)

    以下是我的编译器测试用例:

    构建选项(编译器版本)

    "c:/ti/ccs900/ccs/tools/compiler/ti-cgt-arm_18.12.1.LTS/bin/armcl -mv7R4 --code_state=32 --include_path="C:/Users/chris/workspace_v9/2xADC_2 --include_path="C:/Users/chris/workspace_v9/2xADC_2/include --include_path="C:/ti/ccs900/ccs/tools/compiler/ti-cgt-arm_18.12.1.LTS/include "-g --preproc_with_comment --preproc_with_compile --diag_warning=225 --enum_wrap=off --abi_display_error=/source/sys_main.c --out_abi_directory=packed --out_error_with_come.come"--preproc_with_code_come"---abi_comprude_directory=en_abi_with_code.come.come.come.come.come"-

    预处理文件:

    e2e.ti.com/.../7215.sys_5F00_main.pp.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的。 实际上、我未选中"在对话结果中启用通道 ID "复选框。

    但是、如果没有对 ADC 引脚施加电压、为什么结果会切换到随机默认值?
    当一根导线连接到引脚时、转换结果是正确的...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    如果 ADC 输入未连接、但该通道包含在转换后的组中、则该通道的结果将不可预测。
    在您的代码中、我可以看到 ch_count 初始为0、但从未更改。 则永远不会执行 for 循环。

    此致、
    米罗
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢、

    那么、是否可以通过某种方式检测开路线? 我尝试了一个下拉电阻器、但即使在开路情况下 ADC 引脚列表连接到接地端、该值也不是零。

    我修复了环路:

    ch_count=adcGetData (adcReg1、adcGROUP1、ADC_DATA)

    因此 ADC 引脚的数量现在存储在 ch_count 中。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!
    您可以使用自检模式来确定 ADC 输入通道的开路/短路。 器件 TRM: www.ti.com/.../spnu517c.pdf 的第16.7.2.1节对此进行了说明

    但是、当采样引脚断开时、结果将始终未知。


    此致、
    米罗

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢!
    我现在可以使用自检模式检测短切和断线!