Eu tenho um emprego em tempo integral como engenheiro de firmware. Recentemente, recebi uma tarefa de revisar as configurações do GPIO e alterar as configurações conforme necessário. Encontrei alguns pinos que foram configurados incorretamente de forma tão natural que os reconfigurei, mas me disseram que fiz isso na ordem errada. Aqui está o que eu estou falando:
Antes:
GPIO1.direction = INPUT;Depois:
GPIO1.direction = OUTPUT;
GPIO1.value = 0;
No entanto, durante a revisão do código, fui informado de que preciso alterar a ordem de inicialização para o seguinte:
GPIO1.value = 0;
GPIO1.direction = SAÍDA;
Em outras palavras, defina primeiro o valor e, em seguida, defina a direção do pino. Também me disseram que é assim que os processadores modernos precisam ser, porque eles usam dois registradores, um para entrada e outro para saída, no entanto, os processadores antigos usam apenas um registro, portanto a ordem das operações não importa.
(Nota: Moderno = ARM Cortex M3 e superior, Antigo = Intel 8051)
Pedi uma explicação melhor no trabalho, mas não consegui uma boa resposta. Por isso decidi perguntar aqui.
Então, aqui estão as minhas questões:
- Por que a ordem de inicialização é importante nos novos processadores?
- Por que a ordem de inicialização não importa nos processadores antigos?
- De que dois registros eles estão falando nos processadores modernos?
- De que registro único eles estão falando nos processadores antigos?
Se alguém pudesse fornecer algum tipo de diagrama, isso seria ainda melhor.