кнопка на пин AIN1 вешает контроллер atmega328p
- Войдите на сайт для отправки комментариев
Втр, 18/02/2020 - 20:16
Здравствуйте. подскажите, пожалуйста.
повесил кнопку на пин D7 atmega328p (+3.3v - резистор 10К - кнопка - земля, от резистора и кнопки идет на пин AIN1).
При нажатии кнопки все это вешает контроллер.
Возможно ли исправить ситуацию программно? т.е. сделать, что бы пин AIN1 использовать как цифровой вход для кнопки.
Так какой пин то - 7 или ain1?
пин PD7 он же AIN1 (негатив вход компаратора).
Вроде решение проблемы:
1. пин AIN0 настроить от опорного 1.1 вольт.
2. пин AIN1 оставить на кнопке как есть.
получается, что на выходе компаратора всегда 1, как только кнопка нажата и пин притянулся к земле, то выход компаратора изменит свое состояние на 0.
только как это описать программно?
что-то вы замудрили, настройте пин на вход и читайте
так я так и делаю. у меня несколько кнопок. есть экранчик tft.
все работает замечательно, все нажимается и все картинки идут как надо.
КРОМЕ ОДНОЙ КНОПКИ, которую я по дурости подключил к пину AIN1. при нажатии на эту кнопку у меня все мгновенно виснет.
p.s. у меня питание 3.3 вольт. резистор подтяжка кнопки 10К. ток на пин камня получается 0,33 мА. Может это много для пина компаратора?
AIN1 нет такого входа, пока не активирован компаратор. Ни чем не отличается от других входов. Ресетить может только если он настроен как выход, на него подана единица и в этот момент его кнопкой притянуть к земле. Где программа?
как это нет такого входа, если он же PD7, он же 7 пин адруины на атмега328 и он же AIN1 и компаратор все время включен по умолчанию.
Схема реально огромная. мне скинуть как кнопку подключил?
настроен он как вход:
pinMode(BUTTON1, INPUT);
как это нет такого входа, если он же PD7, он же 7 пин адруины на атмега328 и он же AIN1 и компаратор все время включен по умолчанию.
Схема реально огромная. мне скинуть как кнопку подключил?
настроен он как вход:
pinMode(BUTTON1, INPUT);
подтяните вверх, а кнопкой тяните на землю, заработает?
У меня так и сделано
кнопка настроена так:
pinMode(BUTTON1, INPUT);
обработчик так:
при нажатии кнопки 3х секунд не проходит, а все виснет сразу же. и это только с кнопкой на пине AIN1. переназначал на другие кнопки - все нормально, но нажимая на ту, которая идет на AIN1 - все сразу виснет
как это нет такого входа, если он же PD7, он же 7 пин адруины на атмега328 и он же AIN1 и компаратор все время включен по умолчанию.
По умолчанию компаратор выключен если только вы сами его не включили. Проверьте бит ACD в регистре ACSR. Единица означает что выключен.
все виснет сразу же. и это только с кнопкой на пине AIN1. переназначал на другие кнопки - все нормально, но нажимая на ту, которая идет на AIN1 - все сразу виснет
Может просто контроллер битый? На другом не пробовали?
хмммм. я его сейчас принудительно выключаю:
void setup() {
ACSR &= ~(1 << ACIE);
ACSR |= (1 << ADC);
и один фиг. я прям уж и не знаю, что думать. может действительно камень битый
Замкните кнопку миллиамперметром и посмотрите ток. Согласно Вашей схемы ток должен быть около 0.5 мА. Если больше, то ищите черепах.
Замкните кнопку миллиамперметром и посмотрите ток. Согласно Вашей схемы ток должен быть около 0.5 мА. Если больше, то ищите черепах.
замкнул. ток 0,32 мА. как и должен быть
Таким током заресетить МК сложно. Если в программе нет никаких багов, ко скорее всего битая МС.
ну я уже тоже склоняюсь к мысли, что камушек битый. хотя купил в Чип_и_Дип, а не с али заказывал.
ну значит в коде что-то намудрили. Что включает пин 7 (по программе)? - проверяйте не может ли оно завесить МК
Проверьте напряжение на ноге reset при нажимании кнопки?
ну значит в коде что-то намудрили. Что включает пин 7 (по программе)? - проверяйте не может ли оно завесить МК
нифига он не включает. он обьявлен как :
просто пин кнопочки.
посмотрите по обработчику. там стоит delay(3000), а виснет мгновенно. т.е. дело какое-то аппаратное, а не программное.
Проверьте напряжение на ноге reset при нажимании кнопки?
как было 3.3 так и остается при нажатии
А что с таймером или прерываниями ?
закомментируй delay(); и проверь.
не понимаю, а они тут причем?
Два десятка постов, а кода так и нет. Ещё один копираст?
Выделите минимальный код и минимальную схему, на которых проблема проявляется и покажите нам, наконец код и схему целиком, а не кусочками.
Иначе вероятность решения проблемы мало отличается от нуля.
схема
код:
Это минимальная схема? На более простых проблема не проявляется?
Это минимальный код? На более простых (без TFT, например) проблема не проявляется?
кнопка не описана как ИНПУТ - в принципе не влияет, но неакууратненько
а что за хрени квадратные на схеме на кнопках нарисованы? вы же писали, что кнопка подключена через резистор к +3.3в и все? -
Там еще mosi с reset соединен для чего-то.
а что за хрени квадратные на схеме на кнопках нарисованы?
это и есть кнопка. просто она выводная. а эта "хрень" разъем для подключения кнопки, но параллельно еще кнопка маленькая впаяна, что бы удобно было тестировать плату, а не подключать навесные кнопки.
Там еще mosi с reset соединен для чего-то.
не соединены. инфа 146%
Там еще mosi с reset соединен для чего-то.
и почему-то МК перегружается?? :)))
Это минимальная схема? На более простых проблема не проявляется?
куда проще то? разъем для tft экрана + стандартная обвязка + 4 кнопки
Там еще mosi с reset соединен для чего-то.
не соединены. инфа 146%
то есть схема неверна? -
Интрига - "кто же врет?"
и почему-то МК перегружается?? :)))
Интрига - "кто же врет?"
сказал же - не соединен. ну либо покажите мне на картинке - где соединение?
куда проще то? разъем для tft экрана + стандартная обвязка + 4 кнопки
вот и ответ - вы нажимаете на кнопку, в ответ идет вывод на экран, экран подключен по SPI, сигналы по MOSI перезапускают контроллер...
вот и ответ - вы нажимаете на кнопку, в ответ идет вывод на экран, экран подключен по SPI, сигналы по MOSI перезапускают контроллер...
не понял. обьясните подробнее, пожалуйста.
и как это вяжется с тем, что я переназначил кнопки и все равно завис возникал на кнопке, которая подключена к AIN1.
сказал же - не соединен. ну либо покажите мне на картинке - где соединение?
а , тут еще интереснее - не на MOSI, а на SS. Но сценарий тот же
На экране есть отдельный пин РЕСЕТ, вот его и надо с РЕCЕТом МК соединять, а не SS
и как это вяжется с тем, что я переназначил кнопки и все равно завис возникал на кнопке, которая подключена к AIN1.
слушайте, вам же уже пять человек обьяснили, что никакого входа AIN1 у вас нет. Есть пин D7, ровно такой же, как соседние 6 или 8
а , тут еще интереснее - не на MOSI, а на SS. Но сценарий тот же
нифига не понял. ss? это ж пин программатора. когда устройство работает - программатора нет. т.е. пин ss висит в воздухе. он туда подключается, когда я прошиваю камень.
На экране есть отдельный пин РЕСЕТ, вот его и надо с РЕCЕТом МК соединять, а не SS
так он именно так и соединен. внизу справа разъем под tft экран, а сверху разъем для программирования камня. я думал - это не надо обьяснять
слушайте, вам же уже пять человек обьяснили, что никакого входа AIN1 у вас нет. Есть пин D7, ровно такой же, как соседние 6 или 8
ок. согласен. пин 7 . он же PD7, он же AIN1 как хотите, так и называйте.
вы обьясните, пожалуйста вот эти ваши слова:
вот и ответ - вы нажимаете на кнопку, в ответ идет вывод на экран, экран подключен по SPI, сигналы по MOSI перезапускают контроллер...
я думал - это не надо обьяснять
а я думал иначе.
Ладно, поиграли в угадайку, ничего не угадали...
а на PB0 что?
а на PB0 что?
Пин управляющий ресетом экрана
Схема нормальная, с точки зрения ресета. И код тоже. Тут, скорее всего или контроллер глючный или, скорее, сопля на плате. Посмотрите нет ли коротыша АIN c ресетом.
а в протеусе всё пучком?
а в протеусе всё пучком?
не моделил. тут всяких преобразователей навалом. тут большая аналоговая часть. это в протеусе фигово моделить. а проблем с экраном никогда не было. взял камень 328, взял на этом форуме библиотеку и все завелось с первого раза. и все нормально работало. а тут засада такая.
Ардуина какая-нибудь есть под рукой? Подключите к ней кнопку к D7 и запустите ваш код. И убедитесь, что ничего не ресетится.
Ардуина какая-нибудь есть под рукой? Подключите к ней кнопку к D7 и запустите ваш код. И убедитесь, что ничего не ресетится.
хорошая идея. спасибо. но уже не сегодня. пора домой
не понимаю, а они тут причем?
Ну может у тебя таймер0 остановлен или прерывания запрещены и программа не выйдет из делэя никогда, или изменена частота и делэй длится дольше заданного раз так в 16.
Это минимальная схема? На более простых проблема не проявляется?
куда проще то? разъем для tft экрана + стандартная обвязка + 4 кнопки
Вы на вопрос-то ответьте. И про скетч тоже самое.
А "куда проще", ну я вот хочу запустить Ваш скетч у себя, увидеть проблему и помочь Вам её решить. Вот и скажите мне - без FTF она (проблема) не проявляется? Или мне искать такой же экран для начала? Вы догадываетесь в каком случае вероятность того, что я этим плотно займусь, выше?