Цитата(defunct @ Mar 4 2006, 01:26)

В таком случае вы должны сразу изъясняться технически верно, желательно со ссылками на техн. документацию, а не пользоваться голословными утверждениями типа:
Когда выясняешь какой-то вопрос, то результат запоминается а процесс -- не очень.

С Вами бывало?
С данным вопросом я разбирался очень давно.

Сейчас попытаюсь вспомнить заново.
Если понадобятся ссылки на документацию, то я их найду, но пока попробуйте поверить на слово. Лишнего времени у меня как и у других нет. Теперь по сути.
На самом деле AVR (вопреки мнению начинающих) выполняет команду не за 1 такт, а за 4. Но каждая последующая команда начинает выполнятся со смещением в один такт. Т.о. якобы время исполнения команды составляет один такт.
1.2.3.4 команда1
__1.2.3.4 команда2
____1.2.3.4 команда3
Для исполнения арифметических команд данный факт не имеет значения, но для команд ввода-вывода это не так.
Давайте попробуем подумать вместе. Что делает ядро при команде "out porta,r19"? СНАЧАЛА извлекает значение из регистра и ПОТОМ выводит его в порт. (В каком такте это происходит я не знаю)
А что делае команда "IN"? СНАЧАЛА вводит из порта, ПОТОМ заносит в регистр. Надеюсь то что я сейчас пишу очевидно. Предположем что ввод осуществляется во втором такте, а вывод в четвёртом. В результате получим следующую картину.
1. 2.3.X OUT где X - операция вывода
__1.X.3.4 IN где X - операция ввода.
Очерёдность здесь видна глазом.
Всё это учтено в AVR Studio по моему. Проверять сейчас некогда. Попробуйте сами.
Всё равно лучше запоминаются те факты которые установлены самими.
Внимание! Всё сказанное мной отнюдь не отменяет, а лишь дополняет сказанное другими выше.
Действительно необходимо учитывать:
1) Время ответа внешнего устройства (если имеется)
2) Быстродействие Вашего микроконтроллера
3) Имеющуюся емкостную нагрузку (и как следствие подпорку ножки)
4) Схему включения (может Вы используете одну и туже ножку)
5) Ну и особенность ядра, описанную выше.
Кстати аналогичные проблемы возникают и у др. МП.
Кстати коментарий я ставил (и обычно ставлю

) для себя, а не для других. Чтобы легче было вспомнить. Я не занимаюсь обучением других. Отсюда и проблемы с пониманием.