Rev 543 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
формат и адреса регистров на spi-шине avr<>fpga.напоминаю, установка номера - при spics_n=1, далее в 0 и шлём байт (1 илинесколько).Статус подготавливается к выдаче (лочится) в момент spics_n 0->1.Cтатус: (считывается при spics_n=1 в момент записи номера):bit.7 - Read-Not-Write (rnw): =1 - спектрум заваитился на чтении, =0 - на записи.\bits.6..0 - какой девайс заваитил, если =1. Пока естьbit.0 - если 1, заваитили глюк-часы.bit.1 - 1 если заваитил модем по кондрашкинуЧтобы только считать статус - надо сгенерировать фронт spics_n 0->1.Если spics_n был в 1 - надо его передёрнуть.после передерга spics_n 0->1 номер заново надо ставить.регистр $00 - дефолтный номер, в него можно писать, это пойдёт вигнор. Устанавливается автоматически в момент spics_n 0->1регистр $10 - данные для клавиатуры (40 бит сдвиговый рег), запоминаютсяпоследние 40 вдвинутых битов. Процесс вдвига бит можно проводить или сразупока spics_n=0, или с перерывами, каждый раз устанавливая номер этогорегистра.регистр $11 - в момент spics_n 0->1 с этим установленным регистромуходят данные в рабочий регистр клавиатуры (то, что записано было в $10).регистр $20 - X coord мыши$21 - Y coord мыши$22 - кнопки мыши$23 - кемстон жойстиккаждый из регистров уходит в спектрум по факту spics_n 0->1регистр $30 - регистр сброса - задает сам факт сброса Z80. Фактсброса - spics_n 0->1. вдвигать данные не обязательно (они в игнор).часики и прочие ваит-порты:$40 - регистр чтения-записи данных, которые ожидает спектрум в ваите. То, чтов него пишется - идёт в спектрум, если тот ваитится на чтении, или же из этогорегистра считывается то, что спектрумом записано, если тот ваитится на записи.После обмена, в момент spics_n 0->1 спектрум разваитивается, прерывание нааврку снимается, из статуса битик обнуляется.регистр $40 общий для всех ваит-портов$41 [7:0] - регистр чтения адреса, который был установлен спектрумом для глюкочасов.$42 [2:0] - регистр, в котором адреса ША Z80 A[10:8] в момент чтения или записи вкомпорты ($F8EF..$FFEF). Позволяет, собственно, различать эти самые $F8..$FF.Конфиг - регистры:config0: $50 - только на запись:бит 0 - включение ВГА (=1) регистр актуализируется после записи данных по фронту spics_n 0->1.бит 1 - подача нми. переход из 1 в 0 вызывает nmi на z80бит 2 - транслируется на $FE.D6 (чтение спеком с мафона).бит 3 - если 1, то выводится tape-out, иначе - beeperбиты 5..4 -- режим растра (pent/60hz/48k/128k)config1: $51 - только запись:биты 3..0: маска дисководов для подмены ROMбиты 7..4: не исп.Доступ к SD-карте:Регистр данных - $60,регистр управления - $61:bit 7 - lock (R/W), 0 после сброса.bit 0 - CS_n на карту (W/O), 1 после сброса.Получение доступа:1. записать в $61 CS_n=1, lock=12. Считывая $61, дождаться lock=1. Это произойдёт, когда Z80 установит CS_n в 1 или же сразу,если Z80 CS_n стояло в 1. Пока lock=1, Z80 не видит SD-карту, доступ у АВРки, пока онане отдаст доступ обратно Z80.Работа с SD-картой:1. Удерживая lock=1, управлять CS_n.2. Считанное из $60 значение - последний пришедший байт из SD-карты, отправленное в $60значение - отправляется в SD-карту. Обмен с SD-картой инициируется сразу же послеspics_n 0->1, потому перед считыванием принятого в процессе этого обмена байтанеобходима пауза. Такой паузой служит установка адреса регистра при spi_cs_n=1.Внимание: первое считанное из $60 значение после установки lock 0->1 - случайное.Отпускание SD-карты:1. Удерживая lock=1, установить CS_n=1.2. Установить lock=0, CS_n=1.