Цитата
И как вы себе представляете правку старшего байта вне прерывания?
Вполне просто. Изредка запускаем проверку, не изменился ли старший бит pos и если изменился - меняем старший байт. Заодно там, где необходимо значение pos тоже выполняем такую проверку.
Цитата
Из вашего кода у меня получилось 28 тактов, да ещё без sei.
Код для INT0 не предусматривал SEI. Тактов, кстати, 27, если RJMP c вектора.
Цитата
Не могу понять почему компайлер у вас не сохраняет SREG?
А порт 0x3F - это что по Вашему?
Цитата
Нельзя ли посмотреть на код с 16-битными t и pos?
А смысл?
Цитата
Ваш код какой-то левый.
Выбирайте выражения.
...Чуть позже...
С банальной проверкой старшего бита я погорячился малость, там надо проверять изменение 2х старших бит из 00 в 11 и наоборот. Это и будет обозначать инкремент или декремент старшего байта. Но не суть, такую проверку можно выполнить один раз на, скажем, 50 прерываний INT0.
Цитата
А в WinAVR можно результат работы компилятора как в посте Rst7
Как-то там через зопу. Смотрите elfdump или objdump. Запускаете его с ключиком (не помню каким, в хелпе глянете) и он дампит выходной эльф-файл с включением строк исходника.
Цитата
да и где взять время выполнения команд?
В даташите на контроллер. В табличке с набором команд.
Цитата
Вообщем как можно быстро расчитать время обработки прерывания?
Я руками считаю. Навык, выработанный годами