Блинк и смена output input входа.
- Войдите на сайт для отправки комментариев
Вс, 21/10/2018 - 09:06
ранее как то не обращал внимание:
void loop()
{
digitalWrite(led, !digitalRead(led)); // Toggle led
delay(5000);
}
"а что так тоже можно" ?? всегда думал, что вход работает только так как инициализирован вначале.
В связи с этим вопрос - а как этот кусок кода выглядит на чистом си к примеру? Что кроется за этими пару строчек, или там все намного проще чем я думаю?
http://ww1.microchip.com/downloads/en/devicedoc/atmel-42735-8-bit-avr-mi...
вся информация начиная со стр 98.
оттуда же и код :
Да, электрическая конструкция входа у Атмелов такова, что читать вход можно в любой момент времени. А вот писать - только настроив его как выход. Таким способом можно, к примеру, контролировать что там показывает нога ШИМ или какая ещё, настроенная как "выход". Вход всегда читает текущий потенциал на ноге.
В общем-то и это - упрощенно. Писать в ногу, которая настроена как "вход" .. тоже можно .. это реализует режим подтяжки входа к питанию через встроенные резисторы в 50кОм. Собственно "вход с подтяжкой" так и образуется: разрешаем глобальную подтяжку (вроде по умолчанию есть), пишем "1" в регистр выхода, и .. устанавливаем ногу "на выход".
P.S. Забыл .. в некоторых китайских "мега2560" (у меня такая была) - встроенный светодиод то ли низковольтный, то ли гасящее сопротивление "не то" .. так и не стал выяснять, но этот код на нем не работал, читая всегда одно и тоже значение. Где-то тут писалось года 2 назад..
Однако из даташита картинка. Видно,что все соединения всегда есть и всегда можно писать и читать все регистры, вот только согласно логике иногда выходной регистр не доходит до ноги (DDR запрещает). Входной читается всегда, когда есть клок на периферию. Запись во входной регистр (WPx) переворачивыет выходной.
всегда думал, что вход работает только так как инициализирован вначале.
Так, он так и работает. Другое дело, что Вы зря думаете, что порт нельзя читать, когда он в режиме OUTPUT и в него нельзя писать, когда он в режиме INPUT. Можно и то, и другое. И это разумные действия. Более того, контноллер и сам "читает" пин, когда ему нужно, независимо от того, в каком пин режиме.
Входным цепям пина глубоко безразлично, кто устанавливает на нем напряжение: собственные выходные цепи или внешний источник.
всегда думал, что вход работает только так как инициализирован вначале.
Так, он так и работает. Другое дело, что Вы зря думаете, что порт нельзя читать, когда он в режиме OUTPUT и в него нельзя писать, когда он в режиме INPUT. Можно и то, и другое. И это разумные действия. Более того, контноллер и сам "читает" пин, когда ему нужно, независимо от того, в каком пин режиме.
ну да.. так и думал до поры до времени.. :) теперь многое стало ясно.