Tengo un trabajo de tiempo completo como ingeniero de firmware. Recientemente me han asignado una tarea para revisar las configuraciones de GPIO y cambiar la configuración según sea necesario. Encontré algunos pines que estaban configurados incorrectamente, así que naturalmente los reconfiguré, sin embargo me dijeron que lo hice en el orden incorrecto. Esto es de lo que estoy hablando:
Antes:
GPIO1.direction = INPUT;Después de:
GPIO1.direction = SALIDA;
GPIO1.value = 0;
Sin embargo, durante la revisión del código me dijeron que debo cambiar el orden de inicialización a lo siguiente:
GPIO1.value = 0;
GPIO1.direction = OUTPUT;
En otras palabras, establezca el valor primero y luego establezca la dirección del pin. También me han dicho que así es como debe estar en los procesadores modernos porque usan dos registros, uno para entrada y otro para salida, sin embargo, los procesadores antiguos usan solo un registro, por lo que el orden de las operaciones no importa.
(Nota: Moderno = ARM Cortex M3 y superior, Antiguo = Intel 8051)
Pedí una mejor explicación en el trabajo, pero no pude obtener una buena respuesta. Por eso decidí preguntar aquí.
Así que aquí están mis preguntas:
- ¿Por qué es importante el orden de inicialización en los nuevos procesadores?
- ¿Por qué el orden de inicialización no importa en los procesadores antiguos?
- ¿De qué dos registros están hablando en los procesadores modernos?
- ¿De qué registro único están hablando en los procesadores antiguos?
Si alguien pudiera proporcionar algún tipo de diagrama, eso sería aún mejor.