Cypress技术论坛
直播中

薛静斗

7年用户 194经验值
私信 关注
[问答]

如何阻止那些闪烁的值?

你好!
也许有人能帮我做一些傻事。
我用一个简单的项目附加了一个文件,它包括读取一个4x4 FSR数组。
该项目开始运行正常,但在做了一些我不能记得的改变之后,系统对每个FSR进行正确的读取,但是那些未被按下的FSR给我一个在Bex0x00和0xFF中振荡的红色信号。
我已经尝试将ADC输入连接到VDDA和Vssa,并且任何一种情况都不能阻止那些闪烁的值。
真的,我需要一些帮助。
非常感谢你。
KiyWelo.CyWrk.CaseV01.Zip
2.1兆字节

回帖(9)

杨军

2019-8-13 08:50:06
你对多样本模式提出一种轮询方法,要么改变为
连续模式或观察这两个警告多样本模式-
多采样方式捕获单样本背靠背,复位本身和各个样本之间的调制器自动。
这种模式是有用的当输入多个信号之间的切换。过滤器冲洗各样本间所以以前的样品不影响电流转换。
注意照顾时,开关信号之间的ADC转换。无论是开关的输入之间快速转换的硬件控制或停止ADC转换(adc_stopconvert())而切换输入。然后重新启动ADC转换(adc_startconvert())后,新的信号已经连接到ADC。不这样做可能会导致在ADC结果之间的信号污染

注意在多样本,连续操作时,或多样本(涡轮)模式,谨慎读最后读下ADC模数转换的结果完成之前。如果看最后的结果,在相同的时间作为下一个结果是完整的,不连贯的阅读可能发生。使用DMA的ADC的ISR EOC或代码触发时,这个问题是可以避免的。因为你有一个完整的转换时间看最后的结果,这不应该是在大多数设计问题。如果固件不能跟上ADC的转换率,率应降低到一个可控制的速度。这种情况只发生在PSoC 3系列的产品中。
如果你在多样本使用ISR确保所有用于ISR变量被声明为volatile。
问候,Dana。
举报

王琳

2019-8-13 09:06:39
从视觉上看,我看不出你犯了什么错误。你满足了Dana从数据表中所说的要求。
我建议改变的唯一方法是从16位结果中获得8位值。
GETRESULT()传递一个It16,所以不要将它存储到UTI16中。然后你可以写两个IFS
如果(值和lt;0)值=0;
如果(value & gt;255)值=255;
另一个提示:您可以为控件寄存器计算A的值
a= 0x01& lt;/lt;j;//“否”如果需要
鲍勃
举报

薛静斗

2019-8-13 09:13:26
谢谢你,Dana,谢谢你,鲍伯。
鲍伯,我会试试你有价值的建议。
WEITD TUNED是PutExt操作得很好,没有像发帖这样的问题。
在这篇文章之前,我正在关注DANA,并试图改善一些项目的行为,突然发生了一些变化,我不记得这个问题已经开始了。
鲍伯,我会建议你的,非常感谢你们的帮助。
举报

薛静斗

2019-8-13 09:23:43
大家好!!
下面是鲍伯建议我修改的代码:
MuxOxFieldScript(i);AdcDeligy11SistCurrimeTo();((0x00==(RealthO-ADC= AdcDelsig1IsIsEnto皈ic(ADCJ-DelsiGi1LeRunTurnStand)));值 [j]=ADCJ-DelsiGy11GETRESULT16.();
ARR [j]=值 [j]和0x000 FF;
如果(值 [j]和lt;0)值 [j]=0x00;
如果(值 [j] & gt;0)值 [j]=0xFF;AdcDeligg11StClutExchange();
“问题仍然存在。”
但是ADC有一个奇怪的情况:如果我把四个模拟输入到VSSA(没有连接到),显示显示ADC连续显示振荡值00或FF。
如果类似的输入连接到VDDA,也会发生同样的情况。
我一直在做这样的项目,尝试不同类型的数组,它从来没有发生过。
谢谢你的时间。
举报

更多回帖

×
20
完善资料,
赚取积分