微控制器 - 输出状态是恒定的还是多路复用的?

电器工程 微控制器 数字逻辑 引脚
2022-01-22 02:52:59

PWM 显然需要计算资源(因此不能与其他进程同时完成),但如果我将一个引脚设置为输出 5V 或 0V,这些状态是保持不变还是随着微控制器在其他进程上工作而反复“刷新” ?

这很难用文字来解释,所以我想到了一个与我的问题的类比。想象一下,我手里拿着一个杯子,并被指示把它放在桌子上。然后我被指示坐在椅子上。

桌子上的玻璃是一种状态。我是把玻璃杯留在桌子上,还是把它捡起来坐下并很快重复,这样你就不会意识到玻璃杯曾从桌子上移开?


或者更简单地说,如果您愿意的话,微控制器是否会“忘记”其引脚的状态,除非您明确编程状态更改?

希望我让这尽可能令人困惑。

4个回答

我解释这个问题的方式与 PWM 无关,抱歉,如果我离题太远了,但听起来你只是用它作为例子。

几乎每种类型的微控制器和具有 I/O 的设备都使用锁存器/FF 来驱动它们的输出电路。这意味着,当你设置一个状态时,它会保持在那个状态。它不像 DRAM,输出统计信息必须不断“刷新”才能保持其状态。

以您的玻璃为例,我从未见过任何可以反复拿起和放下桌子上的玻璃的硬件。它只会把玻璃放在桌子上,然后把它放在那里,直到请求改变状态。

回到 PWM(以防万一你真的在问 PWM)。无论您是 bitbang 还是您的微控制器具有其他文章所述的专用硬件,只有在运行代码或 PWM 外设请求状态更改时才访问和修改 I/O 块。

微控制器不必刷新输出。一旦它们被设置,它们就会无限期地保持它们的状态(直到电源被移除)。虽然在较旧的处理器中需要时钟来维持处理器的状态,但今天的处理器是所谓的完全静态的。这意味着时钟实际上可以停止,一切都将保持在当前状态。这是因为所有寄存器(包括 I/O)都是使用触发器制作的。

大多数现代微控制器都有一个专用的硬件 PWM 外设来处理 PWM,一个非常粗略的类比可能是:

处理器内核告诉外围设备:“以 10kHz 和 50% 的占空比切换此引脚,直到我另有说明”。然后核心可以自由地做其他事情。它可能会设置一个中断,即当感兴趣的事情发生时要求外围设备告诉它。
您也许可以将核心视为“老板”,将外围视为专业工作者。核心管理整个程序(读取每条指令并对其进行操作)并“要求”外围设备执行各种任务并在它们完成时通知它。

在你的类比中,就像另一个人拿着杯子,你指示他们把它放在桌子上,而你可以自由地坐在椅子上。

如果微控制器没有专用的外围设备,那么它必须“手动”(即它自己)并跟踪引脚状态和切换之间的时序。这意味着很多周期专门用于非常琐碎的东西,这些东西很容易被一个简单的外围设备处理。

这是流行的 8 位微控制器PIC16F690的布局图。注意排列在底部的外围设备:

在此处输入图像描述

您正在做出一些不完全有效的假设。另外,是的,您使问题尽可能令人困惑。严重地。

PWM 可以与其他过程同时进行。如果在软件中完成,您可以使用定时器中断在 GPIO 引脚上生成 PWM 信号。其他中断可以运行,主进程在做不相关的事情。此外,许多 MCU 可以直接在定时器外设中执行 PWM,从而使 MCU 腾出时间来做其他事情。

至于 I/O 管脚,它们是多路复用的。但是您可以控制它们的多路复用方式,因此这不是真正的问题。