У меня полная занятость в качестве инженера по прошивке. Недавно мне было дано задание проверить настройки GPIO и при необходимости изменить настройки. Я нашел несколько пинов, которые были неправильно настроены, поэтому, естественно, я перенастроил их, однако мне сказали, что я сделал это в неправильном порядке. Вот о чем я говорю:
До:
GPIO1.direction = INPUT;После:
GPIO1.direction = OUTPUT;
GPIO1.value = 0;
Однако во время проверки кода мне сказали, что мне нужно изменить порядок инициализации следующим образом:
GPIO1.value = 0;
GPIO1.direction = OUTPUT;
Другими словами, сначала установите значение, а затем установите направление вывода. Мне также сказали, что так должно быть на современных процессорах, потому что они используют два регистра, один для ввода и один для вывода, однако старые процессоры используют только один регистр, поэтому порядок операций не будет иметь значения.
(Примечание: современный = ARM Cortex M3 и выше, старый = Intel 8051)
Я попросил лучшего объяснения на работе, но не смог получить хороший ответ. Вот почему я решил спросить здесь.
Итак, вот мои вопросы:
- Почему порядок инициализации имеет значение на новых процессорах?
- Почему порядок инициализации не имеет значения на старых процессорах?
- О каких двух регистрах они говорят в современных процессорах?
- О каком единственном регистре говорят старые процессоры?
Если бы кто-то мог предоставить какую-то диаграмму, это было бы еще лучше.