You can post now and register later.
If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.
Блин, ребят, да не, Вы не так всё поняли. Смысл какой. Я открыл Datasheet по ATtiny13A. Перешёл там к главе Instruction Set Summary. Там долистал до команд BRANCH INSTRUCTIONS. И начал разглядывать колонки. Увидел 1/2/3 и ряда инструкций и увидел 1/2. Так как тут описаний нет, пошёл в AVR Instruction Set Manual. Решил прочитать про команду BRCC, у которой стоит 1/2 и в документе AVR Instruction Set Manual, в содержании тыкнул на неё мышкой. Открылась страничка с этой командой, где я пролистал вниз (хотя там и так на экране уже видно было) до раздела Cycles. И там увидел как расписано когда будет 1 такт, а когда 2. Далее я вернулся в Datasheet от ATtiny13A и обратил внимание на команду SBRC, где указано 1/2/3. Пошёл в AVR Instruction Set Manual. Нашёл её в содержании и тыкнул (там когда на команды тыкаешь, идёт переход на главу с описанием этой команды). И вот переход сработал. А ищу раздел Cycles и вижу там только то, что там всё выполняется за 1 такт. Вот и у меня сразу паника. А как оказалось, там ошибка в переходе была, притыке на команду SBRC, меня кинуло на команду SBR. А я это не увидел. И когда начал сюда писать, я название конмады взял (точнее её мнемонику) из Datasheet'а по ATtiny13A, а расшифровку скопировал уже из того места, куда меня перенесли в AVR Instruction Set Manual. Копировал прям из этой строки "SBR – Set Bits in Register". Но меня интересовала только правая часть от -. В общем, я и не заметил что речь идёт про другую команду. В общем вот так получилось. Переходы у них сделаны с ошибкой. Ну, или так офигенно переходит Microsoft Edge (я в их браузере эти pdf открываю).
Ребят, а на счёт входов. Вот настрою я в DDRB какой-нибудь пин на вход. Через PORTB могу настроить этот же пин на то, будет ли подтягивающий резистор или нет. Для подключения кнопки, какой из вариантов (с подтягивающим резистором или без) предпочтительно использовать? Я так понимаю, предпочтительно именно с подтягивающим резистором? Тогда вопрос, обязательно ли тогда ставить резистор от минуса и через кнопку до входа в микроконтроллер (чтобы при замыкании, ножка микроконтроллера не напрямую была подключена к минусу, а через резистор) и если да, то какого номинала?
Ещё по поводу дребезка контактов при нажатии. Как с этим обстоя дела. Сам микроконтроллер с этим умеет работать или нужно на ассемблере что-то выдумывать?
И ещё вопрос по поводу прерываний. Так как для меня важно точно срок в срок отправлять сигналы, я буду отключать прерывания. Но, мне нужно будет всё равно получать уведомление что на кнопку нажали и отправлять другой цвет. Я так понимаю, я мог бы это сделать и без прерываний, а просто после отправки опрашивать какое там состояние на входе. Но что-то мне кажется это не очень хорошей идеей. Вот что на счёт прерываний. Вопросы такие:
Если я отключил прерывания, нажал кнопку, затем отжал и затем включил прерывания. Придёт ли мне прерывание (то есть может он запоминает, но пока не обрабатывает)? Думаю что не придёт.
Если я отключил прерывания, нажал кнопку, включил прерывания и затем отжал кнопку. Придёт прерывание?
Ещё я так и не понял, почему прерывания называются внешние (там, вроде для пина INT0) и внутренние для всех остальных (включая и PCINT1, что является той же ножкой, что и пин INT0). В чём различие такое внутренние и внешние? Они же все один фиг приходят от того, если извне сигнал поменяется. Да, я знаю что у внутреннего условий больше для срабатываний, но всё же, названия внутренние и внешние - это громко звучит.
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.