2 ksv198
Цитата
Поэтому все правильно - сначала пишем в SPDR, потом читаем.
Чего-то я не допираю, счего вдруг сначала писать, а потом читать. Тем не менее мой вариант:
Код
ld r19,X
_spi_loop:
in r18,SPDR ;1
out SPDR,r19 ;1
st X+,r18 ;2
ld r19,X ;2
_spi_wait_spif:
sbis SPSR,SPIF ;1 2
rjmp _spi_wait_spif;2
dec r16 ;1
brne _spi_loop ;2 1
итого:
Замечу, что проверка флага - вышло неудачно. 6 nop у GetSmart эффективнее
2 =GM=
Цитата
Нормально, Григорий(:-). Хотя у вас 10 МЦ, а в исходной проге было 8 МЦ.
Зато у GetSmart с проверкой количества байт.
P.S. Приведенный код может содержать ошибки, укажите пожалуйста если таковые будут обнаружены.
P.P.S. Мне вообще кажется, что довольно трудно оптимизировать программу на RISC, кроме случаев когда она писалась бездумно

.