Цитата(beer_warrior @ Mar 5 2006, 21:04)

AVR это RISC, вся прелесть в том и состоит, что команды простые но очень быстрые.Хитроумных трюков с микрокодом в нем нет, как пишется,
так и работает. Если действительно лезть в глубины можно найти свободное ядро на VHDL и посмотреть как все делаеться.
Задержку надо ставить когда сигнал сомнительный - нечеткий фронт, большая емкость итп. - клавиатуры, микрики всякого рода делители напряжения.
Если сигнал - четкий логический уровень, все хватается с пол-пинка, без всяких задержек.
Как говорят классики: "человек видимо не понимает"!
Я извинялся лишь за колличество тактов. 2-4. В любом случае не один. Всё остальное что я написал соответствует действительности. Так какая разница какое кол. тактов на самом деле?
Там же я написал что всё это можно проверить в AVR Studio. Так о чём мы спорим?
Набираем следующую программу.
.include "m88def.inc"
ldi r18,$ff
out ddrb,r18
ldi r18,0
out portb,r18
ldi r18,$ff
out portb,r18
in r18,pinb
in r18,pinb
nop
nop
Компилируем и выполняем её по шагам.
и видим что первый in нам возвращает 0 в регистр r18, а второй $ff. Порядок вывода любой зрячий может увидеть если раскроет порт B в отладчике. Он увидит что после выполнения команды out значение $ff появится ТОЛЬКО в portB, а на PINB значение появляется на следующий такт!!!
И где здесь конденсаторы?????
Ещё раз утверждаю. Данное ЧЁТКО прописано в PDF!