本帖最后由 oxygenzz 于 2019-10-28 11:03 编辑
应用场景 使用单片机定期监控模拟量信号。当检测到模拟量超标时,需要延时一段时间后唤醒CPU,以启动执行机构。在延时期间,如果检测量恢复正常,则不进行处理,继续监测。设定延时时间的目的是防止执行机构因噪声干扰而频繁启动。要求MCU系统功耗尽可能低。 应用场景的一个具体例子是,监测温度传感器的模拟电压输出,实现室温自动控制。
对此类应用场景,大家有什么想法和建议,欢迎留言讨论。
实现举例 目标芯片:PIC16F18446 使用外设:ADCC + Timer1 ADCC 和Timerx采用CIP(内核独立外设)方式工作,无需CPU内核干预,而且外设之间可以进行触发联动,共同完成较复杂的任务。
工作过程 1. Timer1每1秒钟产生一次定时(溢出)信号 2. Timer1的定时信号自动触发ADCC启动模拟量转换 3. 转换完成后,ADCC继续对转换值进行平均值计算,用新的采样值更新平均值计算结果 4. ADCC将8次转换的平均值结果与预设门限进行对比, - 若超限,则产生中断,唤醒CPU; - 若没有超限,则继续进行定时采样监控(步骤1-3)
配置&生成代码 使用MPLAB X + MCC 对目标芯片PIC16F18446 进行配置, 并生成代码。 MPLAB X:v5.15 XC8 编译器:v2.05
MCC:v3.75
调试运行
可以使用PIC16F18446 Curiosity NANO 评估板,进行开发调试。该板上自带板载编程/调试器,无需额外的硬件工具。
|