в это строчке прелестно все, как недавно писал @Estorsky
Почему DDR, если это пин выхода?
Почему ПортВ, если пин на порте Д?
Да и вообще, инвертирование пина делается не так
PIND = (1 << 4); // инвертируем D4
в это строчке прелестно все, как недавно писал @Estorsky
Почему DDR, если это пин выхода?
Почему ПортВ, если пин на порте Д?
Да и вообще, инвертирование пина делается не так
PIND = (1 << 4); // инвертируем D4
потому что “три” нельзя, надо восемь
Если я не так понял, поясните пожалуйста, по таблице из даташита на Мегу328р.
Таблица 13-1 конфигурации портов , страница 60.
Точно. DDRD надо.
Ну ты явно «не адепт» )))
PIND - это чтение с пина на порту D. Только присваивать ему ничего не нужно, нужно для чтения маску применить.
Дай ссылку на тот материал, что ты читаешь.
Почему так инвертируется? PIND разве не только для чтения?
Афигеть!
уверен?
У новых чипов (мега8 старый), присвоение PIN-у инвертирует разряды PORT-а.
Да. 13.2.2.
Я ни в чем не уверен, стараюсь опираться на факты в документации. Надо перечитать. Но, к слову, никогда этот регистр так не использовал как ты привел. Да и не видел нигде. Минутку, я освежу память.
и не видел нигде.
п 13.2.2 даташита на Атмегу328
Кста, прям на твоей картинке из #51 это и написано… в самом верху страницы
Да. 13.2.2.
Ну вот далеко ходить и не пришлось. Честно говоря под 328ю никогда не писал в студии, атмеги8 хватает. А для по серьезнее решил уже сразу стм32 использовать.
Кста, прям на твоей картинке из #51
Да, я увидел. Спасибо. Буду знать)
Там даже пример асма и си есть, ниже. Не вижу как понять иначе
эта тема становится отдельным форумом
Да в общем то, это не так уж и важно. Что PIND = 1<<3, что PORTD ^= 1<<3. Первая атомарна.
Не вижу как понять иначе
Очень просто. В таблице написано, что если ты на порту D настроишь 1 пин на вход (DDRD &= ~(1<<1) и при этом на PORTD в том же первом бите установишь 1 (PORTD |= (1 << 1), то получишь внутреннюю подтяжку (pullup). Это вторая строка таблицы. Ну и так далее…