Microchip
直播中

张俊

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

PIC32MZ ADC的困惑

环境为PIC32MZ1024EFH100、HARMony v1.10和MPLLABv3.60。我需要检测一个开关何时被按在四个模拟输入中的任意一个上。每个模拟输入连接到一个按钮开关上。输入电压通常是3.3伏。当开关被压下时,输入电压是2.8伏。引脚AN2、AN3、使用AN4和AN6作为输入。这对于数字输入来说很容易,但是无论出于什么原因,要求是使用模拟。我已经在Harmony中浏览了ADCHS示例,以帮助决定选择什么框架。我最初的想法是使用通道扫描示例。使用频道7-下面包括的原始代码。我用AN8代替AN2,用AN31、AN32和AN33代替AN3、AN4和AN6。这个例子不起作用。第一次对PLIB_ADCHS_AnalogInputDataIsReady()的调用没有返回。在尝试了更多的示例,并与所有ADC选项完全混淆之后,我终于成功使用了示例“3类1输入的同时采样和转换”。我只尝试了一个模拟输入,即AN2,这确实有效。我能够读取0xFFD000(开关开)和0x4000(开关闭合)的值。修改后的代码如下:这个解决方案的问题是它使用1类输入,并且只有某些模拟管脚可用。对于PIC32MZ1024EFH100我相信我只能使用ADCHS通道0到4,这也分别需要输入AN0到AN4,我的输入之一是AN6。对于这样一个简单的问题,什么是正确的解决方案这样做(请不要说读取引脚的数字!)有什么想法吗?泰纳克斯

回帖(5)

黄登高

2020-4-14 10:50:51
因此,在进一步阅读之后,我已确认要使用单独的ADC模块,我的开关需要连接到从AN0到AN4或备用AN45到AN49的任何类别1输入。为了使用共享的ADC模块7,我认为输入需要是类别2(AN5到AN11)或类别3(AN32到AN44)。r采样需要是类2输入。对于PIC32MZ1024EFH100,我还没有找到所有AN输入属于哪个类的确切答案。以上信息是从数据表的不同部分收集的。最后,我需要将按钮开关连接到正确的AN输入。我还想知道使用共享的ADC模块7对系统的要求是否会较低?谢谢。
举报

李正阳

2020-4-14 10:57:55
你看过Adss锅演示吗?它演示了数字比较器的配置。它们允许您为ADC生成一个事件,该事件超出范围,低于范围,或落在范围内。从您的描述中,听起来您的软件只有在其中一个通道从上面移动到低于您所描述的值范围时才会收到通知(中断)。
举报

黄登高

2020-4-14 11:11:40
是的,我看过大多数例子。你说得对,使用数字比较器可能是可行的方法。但是,我还没能使用数字比较器生成中断。adchs_pot演示在每次采样之后(当数据准备好时)生成一个中断。然后它检查每个比较器是否有事件。在我的例子中,我有4个开关,每250mS采样一次。我不想每次采样和转换发生时被中断,因为开关不会经常被按下。我想在按下按钮时被中断。如果数字比较器下降到某一特定水平以下,我就可以用它来做这件事。我在一个新帖子中发布这个问题。干杯。
举报

葛睿洁

2020-4-14 11:26:01
嗨,你有这个工作吗?
举报

更多回帖

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