Tengo un trabajo a tiempo completo como ingeniero de firmware. Recientemente me dieron la tarea de revisar las configuraciones de GPIO y cambiar las configuraciones 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:
GPIO1.direction = OUTPUT;
GPIO1.value = 0;
Sin embargo, durante la revisión del código me han dicho que necesito cambiar el orden de inicialización a lo siguiente:
GPIO1.value = 0;
GPIO1.direction = OUTPUT;
En otras palabras, configure primero el valor y luego la dirección del pin. También me han dicho que así es como debe ser 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 importaría.
(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í.
Asi que aqui 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 viejos procesadores?
Si alguien pudiera proporcionar algún tipo de diagrama, eso sería aún mejor.