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


14

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

这很难用文字解释,所以我想到了一个比喻。想象一下我手里拿着杯子,并被指示将其放在桌上。然后指示我坐在椅子上。

桌上的杯子是一种状态。我是将玻璃杯放在桌子上,还是将它捡起来并坐下,然后快速重复,以至于您不知道玻璃杯是否已从桌子上移开?


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

希望我尽量避免混淆。


4
+1有趣的问题,尽管您的第一个陈述是不正确的,并且硬件PWM的想法是,这样处理器就不必一直参与其中。但是以这种方式离开,我相信有人会对它的工作原理有很好的解释。
PeterJ 2013年

我以为PWM可以改变处理器的HIGH / LOW循环时间。这样,似乎处理器直接参与了-至少在状态更改的时间。
sherrellbc

1
要将占空比从10%更改为20%,必须占用CPU,但仅需几个周期即可更改寄存器。对于硬件PWM,请说一旦将其更改为20%,即使硬件PWM频率为1MHz,也不再影响处理器。
PeterJ 2013年

您是否可以找到有关微控制器如何在较低级别工作的文档的良好链接?我不理解您对寄存器的引用,因此无法完全理解这些答案。
sherrellbc

1
不太混乱。更加努力!
radagast 2013年

Answers:


16

我解释问题的方式与PWM无关,很抱歉,如果我离我们很远,但是听起来您只是以它为例。

几乎每种类型的具有I / O的微控制器和设备都使用锁存器/ FF驱动其输出电路。这意味着,当您设置状态时,它将保持在该状态。就像DRAM那样,输出统计数据必须不断地“刷新”以保持其状态,这与DRAM不同。

以您的玻璃杯为例,我从未见过会反复捡起并将玻璃杯放到桌子上的任何硬件。它只会将玻璃杯放在桌子上,然后放在那里直到请求状态更改为止。

回到PWM(以防万一,您实际上是在询问PWM)。不管您是位邦定的,还是您的微控制器具有专用硬件(如其他文章所述),仅当运行代码或PWM外设请求状态更改时,才可以访问和修改I / O块。


这恰好是我的问题,尽管微控制器似乎有很多我不知道自己不理解的地方。
sherrellbc

3
只需在数据表中保持警惕,进行实验并提出问题即可。您将掌握它。
克里斯·巴恩森

11

微控制器不必刷新输出。设置好后,它们将无限期保持状态(直到断电)。在较旧的处理器中,需要时钟来维持处理器的状态,而今天的处理器则称为全静态。这意味着时钟实际上可以停止,一切都将保持其当前状态。这是因为所有寄存器(包括I / O)都是使用触发器构成的。


我们正在进步!谢谢现在更有意义。谢谢!
sherrellbc

10

大多数现代微控制器都具有专用的硬件PWM外设,该外设负责PWM,很粗略的比喻可能是:

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

打个比方,就像另一个人拿着玻璃杯,您指示他们将玻璃杯放在桌子上,而您可以自由坐在椅子上。

如果微控制器没有专用的外设,则它必须“手动”执行(即本身),并跟踪引脚状态和两次触发之间的时序。这将意味着许多专门针对漂亮的东西的周期,这些周期可由简单的外围设备轻松处理。

这是流行的8位单片机PIC16F690的布局图。注意外围设备排列在底部:

在此处输入图片说明


我没有意识到这种外围组件的存在。那么这些组件是不是很小的处理器?这样的事情存在很有意义。
sherrellbc

不是处理器,不是-外设更像是专用于执行特定任务的专用硬件模块。例如,一个典型的微将对板外设,如ADC,PWM,定时器,UART,SPI等
奥利格拉塞

我当然会更深入地研究这个主题,尽管我对这些系统的理解如果有偏见的话。我的印象是,uC将完成所有处理。给外围设备的“指令”必须加以解释。我想这是我不完全理解的地方。
sherrellbc

2
我添加了一个典型的微型图-一个开始阅读的好地方是数据表,我也链接了它。
奥利·格拉泽

@sherrellbc,这是处理器和微处理器不同的地方。在µC中,您可以看到例如RAM,ROM,ALU,串行端口等都集成在同一芯片中。在PC中,您知道处理器从外部连接到此类电路。
chwi

5

您正在做一些不完全正确的假设。另外,是的,您使问题尽可能地令人困惑。说真的

PWM可以与其他过程同时完成。如果用软件完成,则可以使用定时器中断在GPIO引脚上生成PWM信号。其他中断也可以运行,并且主要过程正在执行无关的操作。同样,许多MCU可以直接在定时器外设中执行PWM,从而解放了MCU来做其他事情。

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


我了解您对PWM定时器中断的评论-这很有道理。这样,处理器仅在其更改输出状态时参与其中。虽然,您说的是I / O引脚是多路复用的-也就是说,如果我对控制器进行编程以将引脚输出为HIGH,然后执行其他无关的计算,那么在执行此类处理时,该引脚会暂时设置为LOW吗?
sherrellbc

@sherrellbc您可以控制引脚的复用方式。通常,您在引导时配置它们,之后不要更改它们。因此,除非您明确要求它这样做,否则它不会“瞬间降低”。

如果添加PWM示例会使读者感到困惑,我对此表示歉意。这个问题的目的是确定控制器是否将设置为HIGH的指令I / O引脚复用(即,因为它必须不断地“刷新”引脚状态并且一次只能执行一项操作)。但是,现在我意识到微控制器有很多我不了解的(外围设备)。因此,我对答案是否定感到欣慰,输出引脚被设置为一种状态,并一直保持该状态直到更改。
sherrellbc

1

微控制器上的大多数I / O引脚都是多功能的,但我不会将它们称为多路复用的。

例如,AVR上的几个引脚可以用作数字输入,数字输出或模拟输入。通常,您会在程序初始化的过程中选择所需的功能,并且以后不进行更改(尽管我可能会看到将模拟输入更改为数字输入以查看相同信号的某些原因。)

对于数字输出,将引脚设置为输出后,它们将保留处理器写入它们的最后一个值-无需定期“刷新”它们。


如果处理器设置该值,删除该值,执行其他指令,然后循环并再次设置原始值,则将对它们进行多路复用。这是我的问题的实质。但是,从以上答案中可以看出,有各种各样的perperhperals构成了这些功能,并且在没有其他指示之前,处理器与此无关。我对此一无所知。很多东西要学习。感谢您的回答。
sherrellbc

1

在一个微控制器硬件PWM外设的简单示例中,一个8位计数器可能连接到一个8位数字比较器。微控制器会将一个数字加载到比较器​​中,并用系统时钟或它的某些预分频版本将计数器递增。然后计数器将自由运行,从0计数到255,然后反复返回零。比较器将具有指示计数器值是大于还是小于比较器值的输出。这将成为PWM输出。PWM的周期将是计数器完成一个计数周期需要多长时间,而占空比将是比较器值代表总计数的哪一部分。除了最初设置硬件并在需要更改pwm时更改比较器数据之外,微控制器代码没有任何事情要做。PWM将输出连续的PWM脉冲流,而无需处理器注意。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.