Cypress技术william hill官网
直播中

姚秋月

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

ADC SAR序列发生器怎么使用中断?

大家好,
我是新的PSoC 4 BLE和蓝牙一般,因为我们将使用未来的产品从柏树,我想尽可能多地学习。在我做的第一个测试项目中,为了测量板的一些参数,我遇到了一个关于ADC SEQ的问题。我不能把代码放在这里(即使是测试代码),因为版权问题,但我会解释这个项目,以及我如何得出问题是ADC的问题。
该项目的核心是从应用笔记AN92584:HTTP://www. CyPress。
在设计(CysCH)中,我有以下几个方面:一个RTC,一个用于LED(SW)的引脚,ADC SAR,当然还有BLE。
BLE是外围服务器,具有自定义服务,具有80字符值的大特性。
RTC:被配置为在每32秒产生一个中断,并使用WCO Low Powerand定时器2 WDT2。
ADC SAR:有4个输入引脚设置为(P3.0,P3.1,P3.2,P3.3)设置为高阻抗模拟,VRef是内部1.024伏,单端负极设置为Vref,自由运行,时钟频率1KHz所有使用CLCK,注入不检查启用。
应用程序应该如下:init ADC,并且禁用ADC的IRQ,init RTC;进程BLE事件更新BLE和通知的特性,并且作为AN92584的运行部分的代码如下:
ADCYSTART转换();
ADCI ISEN转换(ADCJAWItiTH-FORY结果);
AdcTestCurror();
然后读取所有4个ADC通道,处理这些值,并在可能的情况下进入深度睡眠(取决于BLE)。每当RTC经过(32秒)时,执行上述3行代码+ ADC的读取和处理值。
我观察到ADC在ISDN转换时阻塞,并且从未退出。为什么?我希望你能解释一下我的所作所为。这是一个最好的做法,启动和停止ADC后,每个转换+禁用其中断?模拟是否正确设置了引脚?
在所有示例中,我看到前2行代码在无限循环之前执行,然后只调用get结果,但是我不需要让ADC转换所有的时间,而只需要在32秒。如果我使用触发器模式,也许有人可以解释如何?
我还想提到的是,在没有ADC的情况下,代码被测试了,它运行良好,我可以读取特性(当然,如果ADC不工作,我看不到它是否被正确地修改),它就可以正确地进入休眠模式。RTC在32秒内正确地发送中断。
非常感谢你,希望我的文字清晰明了!

回帖(5)

张桂兰

2019-10-17 09:49:57
我一直在使用自由运行模式下的ADC(ADCyStistCurrimeTo()),只需读取AdcGETReultT16(UTI32 Chan-16)所需的通道。我对此没有任何问题(但我可能做错了什么?).
举报

姚秋月

2019-10-17 09:57:25
我在一个例子中找到了一些东西,也在数据表中找到了:/*注意:调用ADCYSLID两次将禁用ADC。ADCYSTART函数*应该被调用而不是ADCJWAKEUP函数来重新启用ADC*/
也许这导致了问题,但我也删除了呼叫睡眠,问题仍然存在。
响应SypLyCCAT:我不需要ADC永久工作,我只想触发当我的RTC触发警报时SW的转换,并且在任何其他情况下我都需要它停止/休眠。
举报

姚秋月

2019-10-17 10:05:37
大家好,
现在看来,代码现在在我的最后一个注释中添加了一个问题状态的检查,但是也有一些其他问题。我发现其中的一个是下面的内容,我想问一下我的想法是否有问题。
我用Ad:GND、VCC和开放连接的值来测试应用程序,因为我没有电位器或其他工具来尝试多个值,并且我观察到一些输入连接在一起。例如,如果我将GND应用到ADC输入1,则输入2也被放置在GND和其他类似的组合上。
我的输入引脚是P3〔0〕、P3〔1〕、P3〔2〕、P3〔4〕。我还设法获得了附加代码的许可。也许有些东西我忘了。
该项目的思想是:初始化一个结构并初始化具有某些值的BLE特性(ViTi传感器功能)。作为处理,存在由最后10个转换构成的算术平均值,并被发送到另一个BLE特征。正如我在其他帖子中解释的那样,应用程序使用了关于睡眠的睡眠条件。
这里是:
Cyrjj.Access 01y0.Zip测试
1.1兆字节
举报

王琳

2019-10-17 10:38:45
你读过92584吗?这将为您提供一些低功耗应用的提示。
鲍勃
举报

更多回帖

发帖
×
20
完善资料,
赚取积分