Подключение периферии до или после инициализации
- Войдите на сайт для отправки комментариев
Вс, 22/11/2020 - 22:58
Приветствую участников форума!
Вопрос от новичка.
Допустим, есть некоторая периферия, от которой идет сигнал на аналоговый или цифровой пин. Cостояние пина будет определено только после выполнения pinMode() из функции setup(). При этом, питание периферии и, соответственно, сигнал от неё появляется сразу же после включения устройства.
Нужно ли для защиты микроконтроллера в конце setup() ставить функцию digitalWrite(порт, HIGH), которая бы подавала питание на периферию через полевик только после инициализации МК?
Имеет ли это смысл, если периферия работает при более высоком напряжении, чем 5V, а сигнал от неё идет через делитель на двух резисторах?
В даташите на микроконтроллер есть таблица допустимых электрических характеристик на пинах. Открываешь его, открываешь даташит на свою периферию, и все внимательно сверяешь. Абстрактные разговоры смысла не имеют. Инженер оперирует цифрами.
Бывает что не нужно. При инициализации микроконтроллер имеет все пины как входные. Они имеют защиту от перенапряжения с помощью диодов, которые замыкают входы на шину +5 в случае перенапряжения. Если ток не превышать и не сжечь защитные диоды, то проблем не будет. Если у Вас стоят резистивные делители с достаточно большим сопротивлением, то они обеспечивают защиту по току. В любом случае нужно считать токи напряжения, что бы точно ответить.
А, допустим, у меня подключена EEPROM через I2c. На неё питание нужно подавать одновременно с микроконтроллером или после того, как МК загрузится?
В будущем планирую прошивку без бутлодера и выставить FUSE на минимальное Start-up time.
Всё зависит от сценария. Если она не используется, то можно вообще питание на неё не подавать.
Ну, она же не просто так добавлена в схему. Нужна внешняя память.
Насколько я понял, EEPROM не подключена, а "допустим подключена", что не предполагает ее обязательного присутствия в конструкции.
Тем не менее, повторяю: всё зависит от сценария. Неужели сложно сложить А и B, поняв, что питание на EEPROM надо подать до ее использования?
Обратится МК к EEPROM через 10 мин после включения - значит питание можно подать в любой момент времени в течении 10 мин. Это же простая бытовая логика. Пытайтесь думать, а не молотить по клавиатуре.
Вопрос был не про это, а про то, следует ли подавать питание на периферию, до того, как в setup() отработают функции pinMode().
до того, как в setup() отработают функции pinMode().
pinMode(). - вообще можно не использовать... тут почти все написано.
ТС - можно в любом месте кода менять пины, например, с выхода на вход и тд. Можно взять отдельный пин и подавать питание на еепром и работать с ней. Можно... Можно... Вааааще какхош можно.
Вопрос был не про это, а про то, следует ли подавать питание на периферию, до того, как в setup() отработают функции pinMode().
На этот вопрос не существует единственно правильного ответа.
Но, как правило, если схема составлена правильно, питание на периферию можно подавать сразу. Т.е. варианты возникают только для безграмотно сделанных схем.
Без подачи питания ваша ЕЕПРОМ будет питаться от подтягивающих резисторов на SDA/SCL, если они будут на стороне Ардуино.