История изменений
Исправление Stanson, (текущая версия) :
Давай угодаю твою подсказдку. «Марш в гугол, ничтожество !»
Не угодал. :) Всё очень просто, на самом деле.
Надо использовать чтение байт из памяти. В Z80 куча «ничего не делающих команд» - nop + всякие ld b,b. Берём 2 команды ( например nop (0x00) и ld a,a (0x7F) ) и из них делаем код из 8 байт. Затем выполняем его. В результате, процессор каждые 4 такта будет извлекать из памяти ту или иную команду и при этом ничего не делать. Выход /RD процессора используем как SPI CK (растущий фронт), а, например, D0 - как SPI DT. Включаем SPI посредством сигнала SPI CE плюя в какой-нибудь порт байт с нужным битиком. Выключаем CE командами out #NN, a, out (c), X подобрав ту из них которая выдаст правильные 2 последних бита на шине D0 (нужные значения D0 в 2 байтах опкода команды out). каждые 4 такта будет передаваться 1 бит SPI.
В итоге - 3.5МГц/4 = 875kbit
И это чисто программно. А можно же, например, повесить пару сдвиговых регистров на шину и вообще не парится с SPI.
Исправление Stanson, :
Давай угодаю твою подсказдку. «Марш в гугол, ничтожество !»
Не угодал. :) Всё очень просто, на самом деле.
Надо использовать чтение байт из памяти. В Z80 куча «ничего не делающих команд» - nop + всякие ld b,b. Берём 2 команды ( например nop (0x00) и ld a,a (0x7F) ) и из них делаем код из 8 байт. Затем выполняем его. В результате, процессор каждые 4 такта будет извлекать из памяти ту или иную команду и при этом ничего не делать. Выход RD процессора используем как SPI CK (растущий фронт), а, например, D0 - как SPI DT. Включаем SPI посредством сигнала SPI CE плюя в какой-нибудь порт байт с нужным битиком. Выключаем CE командами out #NN, a, out (c), X подобрав ту из них которая выдаст правильные 2 последних бита на шине D0 (нужные значения D0 в 2 байтах опкода команды out). каждые 4 такта будет передаваться 1 бит SPI.
В итоге - 3.5МГц/4 = 875kbit
И это чисто программно. А можно же, например, повесить пару сдвиговых регистров на шину и вообще не парится с SPI.
Исходная версия Stanson, :
Давай угодаю твою подсказдку. «Марш в гугол, ничтожество !»
Не угодал. :) Всё очень просто, на самом деле.
Надо использовать чтение байт из памяти. В Z80 куча «ничего не делающих команд» - nop + всякие ld b,b. Берём 2 команды ( например nop (0x00) и ld a,a (0x7F) ) и из них делаем код из 8 байт. Затем выполняем его. В результате, процессор каждые 4 такта будет извлекать из памяти ту или иную команду и при этом ничего не делать. Выход RD процессора используем как SPI CK (растущий фронт), а, например, D0 - как SPI DT. Включаем SPI посредством сигнала SPI CE плюя в какой-нибудь порт байт с нужным битиком. Выключаем CE командами out #NN, a, out (c), X подобрав ту из них которая выдаст правильные 2 последних бита на шине D0 (нужные значения D0 в 2 байтах опкода команды out). каждые 4 такта будет передаваться 1 бит SPI.
В итоге - 3.5МГц/4 = 875kbit