Microcontroladores: ¿los estados de salida son constantes o multiplexados?

14

PWM obviamente requiere recursos informáticos (y, por lo tanto, no se puede hacer simultáneamente con otros procesos), pero si tuviera que establecer un pin como salida 5V o 0V, ¿estos estados permanecen constantes o se "actualizan" repetidamente a medida que el microcontrolador funciona en otros procesos ?

Esto es difícil de explicar en el texto, así que pensé en una analogía con mi pregunta. Imagine que tengo un vaso en la mano y se me indica que lo ponga sobre la mesa. Luego me dan instrucciones de sentarme en una silla.

El vaso sobre la mesa es un estado. ¿Dejo el vaso sobre la mesa, o lo recojo y me siento y repito muy rápidamente para que no te des cuenta de que el vidrio se quitó alguna vez de la mesa?


O quizás más simplemente, ¿el microcontrolador "olvida", si lo desea, los estados de sus pines a menos que programe explícitamente un cambio de estado?

Espero haberlo hecho lo más confuso posible.

sherrellbc
fuente
44
+1 Pregunta interesante, aunque su primera declaración es incorrecta y la idea del hardware PWM es que el procesador no tenga que estar involucrado todo el tiempo. Pero déjalo así y estoy seguro de que alguien tendrá una buena explicación de cómo funciona todo.
PeterJ
Pensé que PWM es tal que el procesador está cambiando el tiempo de ciclo ALTO / BAJO. De esa manera, parece que el procesador está directamente involucrado, al menos el tiempo en que se cambia el estado.
sherrellbc
1
Para cambiar el ciclo de trabajo de, digamos, 10% a 20%, la CPU tiene que estar involucrada, pero solo durante unos pocos ciclos para cambiar un registro. Para hardware PWM, digamos que una vez que se cambia al 20%, incluso si la frecuencia PWM de hardware es 1MHz, ya no afecta al procesador.
PeterJ
¿Tiene algún buen enlace a la documentación sobre cómo funciona el microcontrolador en un nivel inferior? No entiendo sus referencias al registro, por lo que no puedo apreciar completamente estas respuestas.
sherrellbc
1
No muy confuso ¡Esforzarse más!
radagast

Respuestas:

16

La forma en que interpreto la pregunta no tiene nada que ver con PWM, lo siento si estoy fuera de lugar, pero parece que la usaste como un ejemplo.

Casi todos los tipos de microcontroladores y dispositivos con E / S utilizan un pestillo / FF para controlar sus circuitos de salida. Lo que esto significa es que, cuando establece un estado, permanece en ese estado. No es como DRAM donde las estadísticas de salida tienen que ser "actualizadas" constantemente para mantenerse en su estado.

Con su ejemplo de cristal, nunca he visto ningún hardware que levantara y dejara el cristal sobre la mesa repetidamente. Solo pondría el vaso sobre la mesa y lo dejaría allí hasta que se solicite un cambio de estado.

Volviendo a PWM (en caso de que realmente estuvieras preguntando sobre PWM). Ya sea que lo transfiera a bits o que su microcontrolador tenga hardware dedicado como se describe en otras publicaciones, solo se accede al bloque de E / S y se modifica si se solicita un cambio de estado al ejecutar el código o el periférico PWM.

Kris Bahnsen
fuente
Esta es precisamente mi pregunta, aunque parece que hay mucho en microcontroladores que no me doy cuenta de que no entiendo.
sherrellbc
3
Solo mantén la nariz en hojas de datos, experimenta y haz preguntas. Te acostumbrarás.
Kris Bahnsen
11

El microcontrolador no tiene que actualizar las salidas. Una vez que están configurados, mantienen su estado indefinidamente (hasta que se elimina el poder). Mientras que en los procesadores más antiguos se requería el reloj para mantener el estado del procesador, los procesadores de hoy son lo que se llama completamente estático. Eso significa que el reloj se puede detener y todo permanecerá en su estado actual. Esto se debe a que todos los registros (incluidas las E / S) se realizan con flip-flops.

radagast
fuente
¡Y estamos progresando! Gracias tiene más sentido ahora. ¡Gracias!
sherrellbc
10

La mayoría de los microcontroladores modernos tienen un periférico PWM de hardware dedicado que se encarga del PWM, una analogía muy aproximada podría ser:

El núcleo del procesador le dice al periférico que: "cambie este pin a 10 kHz y un ciclo de trabajo del 50% hasta que le indique lo contrario". Entonces el núcleo es libre de hacer otras cosas. Puede establecer una interrupción, es decir, pedirle al periférico que le diga cuándo sucede algo de interés.
Quizás pueda pensar en el núcleo como el "jefe" y los periféricos como trabajadores especializados. El núcleo gestiona todo el programa (lee cada instrucción y actúa sobre ella) y "pide" a los periféricos que realicen diversas tareas y lo notifiquen cuando las hayan completado.

En su analogía, sería como si otra persona estuviera sosteniendo el vaso, les indica que lo coloquen sobre la mesa mientras tiene la libertad de sentarse en la silla.

Si el micro no tuviera un periférico dedicado, entonces tendría que hacerlo "manualmente" (es decir, en sí mismo) y realizar un seguimiento del estado de los pines y el tiempo entre los conmutadores. Esto significaría una gran cantidad de ciclos dedicados a cosas bastante serviles que se manejan fácilmente con un simple periférico.

Aquí hay un diagrama del diseño de un popular microcontrolador de 8 bits, el PIC16F690 . Observe los periféricos dispuestos en la parte inferior:

ingrese la descripción de la imagen aquí

Oli Glaser
fuente
No me di cuenta de que existían tales componentes periféricos. Entonces, ¿son estos componentes procesadores más bien pequeños? Tiene mucho sentido que tales cosas existan.
sherrellbc
No procesadores, no: los periféricos son más como bloques de hardware dedicados diseñados específicamente para realizar una determinada tarea. Por ejemplo, un micro típico tendrá periféricos integrados como ADC, PWM, Timers, UART, SPI, etc.
Oli Glaser
Definitivamente profundizaré en este tema, aunque mi comprensión de estos sistemas es sesgada. Tenía la impresión de que el uC estaría haciendo todo el procesamiento. Las "instrucciones" dadas a los periféricos deben ser interpretadas. Supongo que aquí es donde no estoy comprendiendo completamente.
sherrellbc
2
Agregué un diagrama de un micro típico: un buen lugar para comenzar a leer es la hoja de datos, a la que también he vinculado.
Oli Glaser
@sherrellbc, que es donde un procesador y un microprocesador es diferente. En un µC, puede ver que, por ejemplo, RAM, ROM, ALU, puerto serie, etc.están todos integrados en el mismo chip. En una PC, sabe que el procesador está conectado externamente a dichos circuitos.
chwi
5

Está haciendo algunas suposiciones que no son exactamente válidas. Además, sí, hizo la pregunta lo más confusa posible. Seriamente.

PWM se puede hacer simultáneamente con otros procesos. Si se realiza en software, utiliza interrupciones de temporizador para generar la señal PWM en un pin GPIO. Se pueden ejecutar otras interrupciones y el proceso principal es hacer cosas no relacionadas. Además, muchas MCU pueden hacer el PWM directamente en el periférico del temporizador, liberando a la MCU para hacer otras cosas.

En cuanto a los pines de E / S, están multiplexados. Pero usted tiene el control de cómo se multiplexan, por lo que no es realmente un problema.


fuente
Entiendo su comentario sobre las interrupciones del temporizador PWM, eso tiene sentido. De esta manera, el procesador está involucrado solo en el momento en que cambia el estado de salida. Aunque, usted dice que los pines de E / S están multiplexados, es decir, si programo el controlador para que emita un pin ALTO y luego realice algún otro cálculo no relacionado, ¿el pin se configura momentáneamente en BAJO mientras se realizan tales procesos?
sherrellbc
@sherrellbc Usted tiene el control de cómo se multiplexan los pines. Normalmente los configura en el momento del arranque y no los cambia después de eso. Por lo tanto, no sería "momentáneamente bajo", a menos que usted le diga específicamente que haga eso.
Pido disculpas si al agregar el ejemplo PWM confundí a los lectores. La intención de esta pregunta era determinar si el controlador multiplexa o no un pin de E / S instruido en ALTO (es decir, porque debe "actualizar" constantemente los estados del pin y solo hacer una cosa a la vez). Sin embargo, ahora me doy cuenta de que hay muchos microcontroladores que no entiendo (periféricos). Por lo tanto, me parece que la respuesta es no, los pines de salida se establecen en un estado y permanecen en ese estado perpetuamente hasta que cambien.
sherrellbc
1

La mayoría de los pines de E / S en los microcontroladores son multifunción, pero no los llamaría multiplexados.

Por ejemplo, se pueden usar varios pines en un AVR como entrada digital, salida digital o entrada analógica. Normalmente seleccionaría la función deseada como parte de la inicialización del programa, y ​​no la cambiaría más tarde (aunque podría ver alguna razón para cambiar una entrada analógica a una entrada digital para ver la misma señal).

Para las salidas digitales, una vez que los pines se configuran como salidas, retendrán el último valor que el procesador les escribió, sin necesidad de "actualizarlos" periódicamente.

Peter Bennett
fuente
Se multiplexarían si el procesador estableciera el valor, eliminara ese valor, realizara otras instrucciones y luego girara y estableciera el valor original nuevamente. Esta es la esencia de mi pregunta. Sin embargo, de las respuestas anteriores hay varios perihperales que conforman estas funciones y el procesador no tiene nada que ver con eso hasta que se le indique lo contrario; No tenía ni idea de esto. Hay mucho que aprender. Gracias por la respuesta.
sherrellbc
1

En un ejemplo simple de un periférico PWM de hardware de microcontrolador, se puede conectar un contador de 8 bits a un comparador digital de 8 bits. El microcontrolador cargaría un número en el comparador e incrementaría el contador con el reloj del sistema o alguna versión dividida de preescala. el contador entonces correría libremente, contando de 0 a 255 y nuevamente a cero repetidamente. El comparador tendría una salida que indica si el valor del contador es mayor o menor que el valor del comparador. Esto se convertiría en la salida PWM. El período del PWM sería cuánto tiempo le lleva al contador completar un ciclo de conteo y el ciclo de trabajo sería qué fracción del conteo total está representada por el valor del comparador. El código del microcontrolador no tendría nada que hacer excepto configurar el hardware inicialmente y cambiar los datos del comparador cuando se desea un cambio de pwm. El PWM generaría un flujo continuo de pulsos PWM sin la atención del procesador.

Dan
fuente