Добрый день, уважаемые коллеги! Пришлось мне сделать "умную" кнопку включения на ATTINY13. За основу взял проект из сети. Алгоритм такой: устройство находится в Спящем режиме, при нажатии кнопки (вывод 6 PORT PB1) и удержании ее в течение 1 секунды логическая единица появляется на выводе 5 , а затем через еще через секунду на выводе 2. При повторном нажатии на кнопку и ее удержании в течение 1 секунды на выходах появляется лог. 0 и устройство уходит в спячку. Так работает прошивка из архива (проект CVAVR)
Коллеги, прошу помочь: заменить вывод 5 (PORT PB0) на вывод 7 (PORT PB2). Т.е сначала лог.1 появляется на выводе 7, а затем на выводе 2. В остальном все выводы и алгоритм включения остается как есть. К сожалению, моих познаний в программировании недостаточно
В С пока не спец, но рискну ответить, раз молчание в теме. Попробуйте так: строчку DDRB=0x01; заменить на DDRB=1<<PB3|1<<PB2; PB2 и PB3 на выход. И, далее, все PORTB.0 заменить на PORTB.2.
Большое спасибо. Схема заработала, но есть одно но. К выходам 7 и 2 контроллера я подключаю светодиоды через резисторы 200 Ом. И теперь они включаются с очень малой яркостью, как будто выходной ток этих портов ограничен. Ранее такого не было, светодиоды включались с полной яркостью
Если есть осцилл - глянь что на них происходит. Может быть, программа творит там "незапланированную ШИМ". А без осцилла заниматься МК - это как брачная ночь без невесты
Проверил осциллографом - нет ШИМа на обоих выходах. Напряжение лог.1 - 1.8 Вольт с подключенным красным светодиодом независимо от напряжения питания, если отключить светодиод, то напряжение лог 1 увеличивается до нормального значения, равного напряжению питания. Похоже что выходы работают в режиме источника тока?
Большое спасибо. Схема заработала, но есть одно но. К выходам 7 и 2 контроллера я подключаю светодиоды через резисторы 200 Ом. И теперь они включаются с очень малой яркостью, как будто выходной ток этих портов ограничен. Ранее такого не было, светодиоды включались с полной яркостью
DDR не инициализированы.. Походу дело в скобках DDRB=(1<<PB3)|(1<<PB2); Сильно не пинать, С только осваиваю. Можно и так попробовать: DDRB=0x0C
Последний раз редактировалось Игорь_396 Вс июн 16, 2024 14:33:32, всего редактировалось 1 раз.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения