Столкнулся с такой проблемой: использую ножку INT0 на Tiny2313 как вход. К ней припаяна кнопка на землю. То есть,
DDRD=0x00;
PORTD=0b00000100;
Но после заливки кода и запитывания МК на ножке всего 1,17В. Пробовал разные МК, результат тот же.
Все правильно, командой PORTD=0b00000100; Вы подтягиваете напряжение через внутренний подтягивающий резистор, и на нем происходит падение напряжения. Вы чего хотите, пишите конкретнее, насколько я Вас понял кнопка считается нажатой, если на порт падает 0
так и происходит. вы ввели порт на вход а так же подтянули внутренний резистор. кнопка на землю. по падению напряжения до нуля кнопка считается нажатой. это ну очень просто. я и то не очень то понимая языка си понимаю как оно действует в железе
1. Измеряю на контактной макетной плате, так что сопли и кривая пайка исключены.
2. SKOUT включен по умолчанию. Может ли он мешать?;
3. В том-то и дело, что кнопка не срабатывает. То есть, при падении с 1,17 до 0 В прерывание не происходит. Ранее я помню, что при включении подтягивающего резистора, потенциал на ножке был примерно равен VCC. А тут, сколько на питание МК ни подавай (3,3-5В), на ножке стабильно 1,17В.
Если в целом, этот МК через порт B управляет сдвиговыми резисторами. Порт D чисто для кнопки. Кнопка работает исправно, кстати. Но надо, чтоб ещё и прерывание работало.
А куда ведут goto? В switch, кстати, не хватает default. И цикла я тоже в явном виде не вижу, код может вылететь за пределы программы (будет остановлен заглушкой, которую по-умолчанию ставит AVR-GCC).
Ну, про то, что применять такие конструкции крайне не рекомендуется, я говорить не буду, это все и так знают. Наверное, если применили, тому есть веские причины...
Кстати, рекомендую ткнуться в ножку не мультиметром, а осциллографом. Что-то мне подсказывает, что есть шанс увидеть интересное.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
JI0ku писал(а):...использую ножку INT0 на Tiny2313 как вход. К ней припаяна кнопка на землю. То есть,
DDRD=0x00;
PORTD=0b00000100;...
Да, тут PD2 как вход.
JI0ku писал(а):DDRD=0b11110111;
PORTD=0b00001100;
А тут как выход с подтяжкой, зачем так?
И к этому пину еще и кнопку на землю?
------------------------------------------------------------------------------------------------------------------------ YS, приветствую!
Он вроде CKOUT запретил.
Какая там еще ожидается интрига по этому пину?
Мне было лень вдумчиво анализировать код; я поглядел мельком, и мне показалось, что из-за потенциального вылета за пределы основной программы (и последующего сброса) на ножке могут начаться чудеса с переключениями.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
никакого сброса не бывает: после main следует cli и бесконечный jmp сам на себя.
а вот goto с неопределенными метками вообще не скомпилируется, т.е. эта программа в принципе не даст hex-а для прошивки. что там топикстартер прошивает в свой МК и что получает после этого - загадка
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...