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

14

PWM obviamente requiere recursos de computación (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 son repetidamente "renovados" a medida que funciona el microcontrolador? en otros procesos?

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

El vaso sobre la mesa es un estado. ¿Dejo el vaso sobre la mesa, o lo levanto y me siento y lo repito muy rápido para que no se dé cuenta de que el vaso fue retirado de la mesa?

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

Espero haberlo hecho tan confuso como sea posible.

    
pregunta sherrellbc

6 respuestas

16

La forma en que interpreto la pregunta no tiene nada que ver con PWM, disculpe si estoy fuera de lugar, pero parece que lo usó 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 permanecer en su estado.

Con su ejemplo de vidrio, nunca he visto ningún hardware que pueda levantar y dejar el vidrio 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 en realidad estuviera preguntando acerca de PWM). Ya sea que lo haya pulsado o su microcontrolador tiene hardware dedicado como otras publicaciones descritas, solo se accede al bloque de E / S y se modifica si el código de ejecución o el periférico PWM solicitan un cambio de estado.

    
respondido por el Kris Bahnsen
11

El microcontrolador no tiene que actualizar las salidas. Una vez que están configurados, mantienen su estado indefinidamente (hasta que se retira 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 puede realmente detenerse y todo permanecerá en su estado actual. Esto se debe a que todos los registros (incluida la E / S) se realizan mediante flip-flops.

    
respondido por el radagast
10

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

El núcleo del procesador le dice al periférico que: "alterne este pin a 10kHz y 50% de ciclo de trabajo hasta que le diga 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 avise cuándo sucede algo de interés.
Tal vez 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 él) y "pide" a los periféricos que realicen varias tareas y lo notifiquen cuando los hayan completado.

En su analogía, sería como si otra persona estuviera sosteniendo el vaso, usted les indica que lo coloquen en la mesa mientras usted está libre para sentarse en la silla.

Si el micro no tenía 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 la sincronización entre los conmutadores. Esto significaría muchos ciclos dedicados a cosas bastante pequeñas 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:

    
respondido por el Oli Glaser
5

Está haciendo algunas suposiciones que no son exactamente válidas. También, sí, hiciste la pregunta lo más confusa posible. En serio.

PWM se puede hacer simultáneamente con otros procesos. Si se hace en el software, se usan 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, son multiplexados. Pero usted tiene el control de cómo se multiplexan, por lo que no es realmente un problema.

    
respondido por el user3624
1

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

Por ejemplo, varios pines en un AVR pueden usarse 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 estén configurados para ser salidas, mantendrán el último valor que el procesador les escribió, sin necesidad de "actualizarlos" periódicamente.

    
respondido por el Peter Bennett
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 del mismo. el contador entonces correría libremente, contando de 0 a 255 y regresando a cero repetidamente. El comparador tendría una salida que indicaría 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 el tiempo que demora el contador en completar un ciclo de conteo y el ciclo de trabajo sería la fracción del conteo total que se representa con 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 emitiría un flujo continuo de pulsos PWM sin la atención del procesador.

    
respondido por el Dan

Lea otras preguntas en las etiquetas