Software Serial на аналоговом порту возможно? (Atmega168PA-AU)
- Войдите на сайт для отправки комментариев
Чт, 18/06/2020 - 12:50
Всем привет!
Везде читаю, что стандартная библиотека SoftwaerSerial поддерживает только цифровые порты. Но ведь аналоговые тоже можно использовать как цифровые, т.е. определять их состояние - 0 или 1.
Мне по топологии удобней приём сигнала (RX) вести на пин A2. Может быть, есть более продвинутая библиотека, которая это позволит?
порты A0-A5 являются цифровыми, SoftSerial на них должен работать
Как цифровыми? я считал, что они и цифровые, и аналоговые могут быть.
они и цифровые, и аналоговые могут быть.
так и есть. Но в данном случае нас ведь интересют они как цифровые
Больше того. После сброса все порты только цифровые и работают на вход (А6 А7 в квадратном корпусе всё равно на вход) . Аналоговыми или другими альтернативными их можно сделать только принудительно запрограмировав. За Вас это делает функция Init , которую спрятали. Можно сделать самому любую ногу так, как описано в даташите на МК . Для каждой ноги есть перечень альтернативных функций.
Спасибо, хорошо рассказали! :)
Как цифровыми? я считал, что они и цифровые, и аналоговые могут быть.
Изначально все пины цифровые, но к некоторым подключен АЦП (аналого-цифровой преобразователь), который нужно задействовать (Arduino IDE делает это за пользователя).
Init() никакого отношения к аналоговым пинам не имеет. С аналоговыми пинами Ардуино может работать и как с цифровыми, и как с аналоговыми. Причём "одновременно". К примеру, вы можете читать с помощью digitalRead(A0) и тут же проверить фактическую величину с помощью analogRead(A0). Аналогично если на А0 будет включена подтяжка и даже если А0 будет настроен на выход.
С аналоговыми пинами Ардуино может работать и как с цифровыми, и как с аналоговыми. Причём "одновременно".
Интиресна. А кагже Enable/Disable Digital Inputs битовая маска на только аналоговые выводы распространяется?
Иль я чо опять нипанимаю???
Да, цифровые входа можно отключить от аналоговых. Только в штатных средствах этого нет. Нужно напрямую лезть к DIDR0.