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.
fuente
Respuestas:
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.
fuente
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.
fuente
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:
fuente
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
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.
fuente
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.
fuente