Друзья, у мк Atmega16 4 комплекта портов A, B, C и D. Возможно ли одновременно опрашивать состояния всех входов сразу 3х портов, например A, B и C? И сколько тактов будет занимать данная процедура?
Атмеги- 8-ми битные мк. Порты(точнее их регистры) также 8-ми битные. Вопрос - как в 8-ми битную шину мк (1байт) умесить 2 или 3 байта? Другой вопрос - для чего вообще опрашивать одновременно все порты? Мне сложно представить такую ситуацию. Но даже если это и необходимо, то стоит переходить на 16 или 32 разрядные системы. Но прежде стоит ответить на вопрос в первой части предложения. Сколько тактов занимает та или иная команда мк написано в даташите. Ближе к его концу. Тут даже вопрос не в этом, а в том, что дальше будет происходить с данными. Т.к. основные временные затраты происходят на обработке данных, а не их чтении. Само обращение к регистрам порта - это один или два такта процессора. Ещё один момент. Ну считал ты одновременно все порты, а дальше что? Атмега все равно может оперировать только 8-ю битыми и не больше. Так что совет - изучить внутреннее строение мк, чтобы правильно писать алгоритмы программ.
parovoZZ, для отслеживания адресных линий параллельной EPROM. Чтобы была возможность налету подменять считываемые данные. А вот для управления мне как раз хватало 1 порта, так как интересующая меня EPROM работает в байтовом режиме.
Одномоментно никак. И что вы понимаете под словом "опрашивать"? Можно быстренько зафиксировать состояние регистров PINA, PINB и PINC в РОН. Согласно книжки, инструкция IN выполняется за 1 такт. Следовательно вы уложитесь в три такта. Но ведь полученные байты ещё нужно будет обработать.
Зачем прямо налету? Захватили пакет, переработали под свои нужны и через долю секунды залили куда надо. Подозреваю, счетчик какой-то обмануть хотите? Я так делал. )
Для этого стоит почитать в старых книжках про адресные защелки и как раньше вообще обменивались и адресом и данными по одной шине данных. На лицо полное отсутствие знаний классической цифровой схемотехники.