Rev 543 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 543 | Rev 826 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | ЇюЁьрЄ ш рфЁхёр ЁхушёЄЁют эр spi-°шэх avr<>fpga. |
1 | формат и адреса регистров на spi-шине avr<>fpga. |
2 | 2 | ||
3 | эряюьшэр■, єёЄрэютър эюьхЁр - яЁш spics_n=1, фрыхх т 0 ш °ы╕ь срщЄ (1 шыш |
3 | напоминаю, установка номера - при spics_n=1, далее в 0 и шлём байт (1 или |
4 | эхёъюы№ъю). |
4 | несколько). |
5 | 5 | ||
6 | 6 | ||
7 | ╤ЄрЄєё яюфуюЄртыштрхЄё ъ т√фрўх (ыюўшЄё ) т ьюьхэЄ spics_n 0->1. |
7 | Статус подготавливается к выдаче (лочится) в момент spics_n 0->1. |
8 | CЄрЄєё: (ёўшЄ√трхЄё яЁш spics_n=1 т ьюьхэЄ чряшёш эюьхЁр): |
8 | Cтатус: (считывается при spics_n=1 в момент записи номера): |
9 | bit.7 - Read-Not-Write (rnw): =1 - ёяхъЄЁєь чртршЄшыё эр ўЄхэшш, =0 - эр чряшёш. |
9 | bit.7 - Read-Not-Write (rnw): =1 - спектрум заваитился на чтении, =0 - на записи. |
10 | \bits.6..0 - ъръющ фхтрщё чртршЄшы, хёыш =1. ╧юър хёЄ№ |
10 | \bits.6..0 - какой девайс заваитил, если =1. Пока есть |
11 | bit.0 - хёыш 1, чртршЄшыш уы■ъ-ўрё√. |
11 | bit.0 - если 1, заваитили глюк-часы. |
12 | bit.1 - 1 хёыш чртршЄшы ьюфхь яю ъюэфЁр°ъшэє |
12 | bit.1 - 1 если заваитил модем по кондрашкину |
13 | 13 | ||
14 | ╫Єюс√ Єюы№ъю ёўшЄрЄ№ ёЄрЄєё - эрфю ёухэхЁшЁютрЄ№ ЇЁюэЄ spics_n 0->1. |
14 | Чтобы только считать статус - надо сгенерировать фронт spics_n 0->1. |
15 | ┼ёыш spics_n с√ы т 1 - эрфю хую яхЁхф╕ЁэєЄ№. |
15 | Если spics_n был в 1 - надо его передёрнуть. |
16 | 16 | ||
17 | 17 | ||
18 | яюёых яхЁхфхЁур spics_n 0->1 эюьхЁ чрэютю эрфю ёЄртшЄ№. |
18 | после передерга spics_n 0->1 номер заново надо ставить. |
19 | 19 | ||
20 | 20 | ||
21 | ЁхушёЄЁ $00 - фхЇюыЄэ√щ эюьхЁ, т эхую ьюцэю яшёрЄ№, ¤Єю яющф╕Є т |
21 | регистр $00 - дефолтный номер, в него можно писать, это пойдёт в |
22 | шуэюЁ. ╙ёЄрэртыштрхЄё ртЄюьрЄшўхёъш т ьюьхэЄ spics_n 0->1 |
22 | игнор. Устанавливается автоматически в момент spics_n 0->1 |
23 | 23 | ||
24 | 24 | ||
25 | ЁхушёЄЁ $10 - фрээ√х фы ъыртшрЄєЁ√ (40 сшЄ ёфтшуют√щ Ёху), чряюьшэр■Єё |
25 | регистр $10 - данные для клавиатуры (40 бит сдвиговый рег), запоминаются |
26 | яюёыхфэшх 40 тфтшэєЄ√ї сшЄют. ╧ЁюЎхёё тфтшур сшЄ ьюцэю яЁютюфшЄ№ шыш ёЁрчє |
26 | последние 40 вдвинутых битов. Процесс вдвига бит можно проводить или сразу |
27 | яюър spics_n=0, шыш ё яхЁхЁ√трьш, ърцф√щ Ёрч єёЄрэртыштр эюьхЁ ¤Єюую |
27 | пока spics_n=0, или с перерывами, каждый раз устанавливая номер этого |
28 | ЁхушёЄЁр. |
28 | регистра. |
29 | ЁхушёЄЁ $11 - т ьюьхэЄ spics_n 0->1 ё ¤Єшь єёЄрэютыхээ√ь ЁхушёЄЁюь |
29 | регистр $11 - в момент spics_n 0->1 с этим установленным регистром |
30 | єїюф Є фрээ√х т Ёрсюўшщ ЁхушёЄЁ ъыртшрЄєЁ√ (Єю, ўЄю чряшёрэю с√ыю т $10). |
30 | уходят данные в рабочий регистр клавиатуры (то, что записано было в $10). |
31 | 31 | ||
32 | 32 | ||
33 | 33 | ||
34 | ЁхушёЄЁ $20 - X coord ь√°ш |
34 | регистр $20 - X coord мыши |
35 | $21 - Y coord ь√°ш |
35 | $21 - Y coord мыши |
36 | $22 - ъэюяъш ь√°ш |
36 | $22 - кнопки мыши |
37 | $23 - ъхьёЄюэ цющёЄшъ |
37 | $23 - кемстон жойстик |
38 | ърцф√щ шч ЁхушёЄЁют єїюфшЄ т ёяхъЄЁєь яю ЇръЄє spics_n 0->1 |
38 | каждый из регистров уходит в спектрум по факту spics_n 0->1 |
39 | 39 | ||
40 | 40 | ||
41 | ЁхушёЄЁ $30 - ЁхушёЄЁ ёсЁюёр - чрфрхЄ ёрь ЇръЄ ёсЁюёр Z80. ╘ръЄ |
41 | регистр $30 - регистр сброса - задает сам факт сброса Z80. Факт |
42 | ёсЁюёр - spics_n 0->1. тфтшурЄ№ фрээ√х эх юс чрЄхы№эю (юэш т шуэюЁ). |
42 | сброса - spics_n 0->1. вдвигать данные не обязательно (они в игнор). |
43 | 43 | ||
44 | 44 | ||
45 | 45 | ||
46 | 46 | ||
47 | ўрёшъш ш яЁюўшх тршЄ-яюЁЄ√: |
47 | часики и прочие ваит-порты: |
48 | 48 | ||
49 | 49 | ||
50 | $40 - ЁхушёЄЁ ўЄхэш -чряшёш фрээ√ї, ъюЄюЁ√х юцшфрхЄ ёяхъЄЁєь т тршЄх. ╥ю, ўЄю |
50 | $40 - регистр чтения-записи данных, которые ожидает спектрум в ваите. То, что |
51 | т эхую яш°хЄё - шф╕Є т ёяхъЄЁєь, хёыш ЄюЄ тршЄшЄё эр ўЄхэшш, шыш цх шч ¤Єюую |
51 | в него пишется - идёт в спектрум, если тот ваитится на чтении, или же из этого |
52 | ЁхушёЄЁр ёўшЄ√трхЄё Єю, ўЄю ёяхъЄЁєьюь чряшёрэю, хёыш ЄюЄ тршЄшЄё эр чряшёш. |
52 | регистра считывается то, что спектрумом записано, если тот ваитится на записи. |
53 | ╧юёых юсьхэр, т ьюьхэЄ spics_n 0->1 ёяхъЄЁєь ЁрчтршЄштрхЄё , яЁхЁ√трэшх эр |
53 | После обмена, в момент spics_n 0->1 спектрум разваитивается, прерывание на |
54 | ртЁъє ёэшьрхЄё , шч ёЄрЄєёр сшЄшъ юсэєы хЄё . |
54 | аврку снимается, из статуса битик обнуляется. |
55 | 55 | ||
56 | ЁхушёЄЁ $40 юс∙шщ фы тёхї тршЄ-яюЁЄют |
56 | регистр $40 общий для всех ваит-портов |
57 | 57 | ||
58 | 58 | ||
59 | $41 [7:0] - ЁхушёЄЁ ўЄхэш рфЁхёр, ъюЄюЁ√щ с√ы єёЄрэютыхэ ёяхъЄЁєьюь фы уы■ъюўрёют. |
59 | $41 [7:0] - регистр чтения адреса, который был установлен спектрумом для глюкочасов. |
60 | 60 | ||
61 | $42 [2:0] - ЁхушёЄЁ, т ъюЄюЁюь рфЁхёр ╪└ Z80 A[10:8] т ьюьхэЄ ўЄхэш шыш чряшёш т |
61 | $42 [2:0] - регистр, в котором адреса ША Z80 A[10:8] в момент чтения или записи в |
62 | ъюьяюЁЄ√ ($F8EF..$FFEF). ╧ючтюы хЄ, ёюсёЄтхээю, ЁрчышўрЄ№ ¤Єш ёрь√х $F8..$FF. |
62 | компорты ($F8EF..$FFEF). Позволяет, собственно, различать эти самые $F8..$FF. |
63 | 63 | ||
64 | 64 | ||
65 | 65 | ||
66 | 66 | ||
67 | ╩юэЇшу - ЁхушёЄЁ√: |
67 | Конфиг - регистры: |
68 | 68 | ||
69 | config0: $50 - Єюы№ъю эр чряшё№: |
69 | config0: $50 - только на запись: |
70 | 70 | ||
71 | сшЄ 0 - тъы■ўхэшх ┬├└ (=1) ЁхушёЄЁ ръЄєрышчшЁєхЄё яюёых чряшёш фрээ√ї яю ЇЁюэЄє spics_n 0->1. |
71 | бит 0 - включение ВГА (=1) регистр актуализируется после записи данных по фронту spics_n 0->1. |
72 | 72 | ||
73 | сшЄ 1 - яюфрўр эьш. яхЁхїюф шч 1 т 0 т√ч√трхЄ nmi эр z80 |
73 | бит 1 - подача нми. переход из 1 в 0 вызывает nmi на z80 |
74 | 74 | ||
75 | сшЄ 2 - ЄЁрэёышЁєхЄё эр $FE.D6 (ўЄхэшх ёяхъюь ё ьрЇюэр). |
75 | бит 2 - транслируется на $FE.D6 (чтение спеком с мафона). |
76 | 76 | ||
77 | сшЄ 3 - хёыш 1, Єю т√тюфшЄё tape-out, шэрўх - beeper |
77 | бит 3 - если 1, то выводится tape-out, иначе - beeper |
78 | 78 | ||
- | 79 | биты 5..4 -- режим растра (pent/60hz/48k/128k) |
|
79 | 80 | ||
- | 81 | config1: $51 - только запись: |
|
80 | 82 | ||
- | 83 | биты 3..0: маска дисководов для подмены ROM |
|
81 | ─юёЄєя ъ SD-ърЁЄх: |
84 | биты 7..4: не исп. |
82 | 85 | ||
83 | ╨хушёЄЁ фрээ√ї - $60, |
- | |
84 | ЁхушёЄЁ єяЁртыхэш - $61: |
- | |
85 | bit 7 - lock (R/W), 0 яюёых ёсЁюёр. |
- | |
86 | bit 0 - CS_n эр ърЁЄє (W/O), 1 яюёых ёсЁюёр. |
- | |
87 | 86 | ||
88 | ╧юыєўхэшх фюёЄєяр: |
- | |
89 | 1. чряшёрЄ№ т $61 CS_n=1, lock=1 |
- | |
90 | 2. ╤ўшЄ√тр $61, фюцфрЄ№ё lock=1. ▌Єю яЁюшчющф╕Є, ъюуфр Z80 єёЄрэютшЄ CS_n т 1 шыш цх ёЁрчє, |
- | |
91 | хёыш Z80 CS_n ёЄю ыю т 1. ╧юър lock=1, Z80 эх тшфшЄ SD-ърЁЄє, фюёЄєя є └┬╨ъш, яюър юэр |
- | |
92 | эх юЄфрёЄ фюёЄєя юсЁрЄэю Z80. |
- | |
93 | 87 | ||
94 | ╨рсюЄр ё SD-ърЁЄющ: |
88 | Доступ к SD-карте: |
95 | 1. ╙фхЁцштр lock=1, єяЁрты Є№ CS_n. |
- | |
96 | 2. ╤ўшЄрээюх шч $60 чэрўхэшх - яюёыхфэшщ яЁш°хф°шщ срщЄ шч SD-ърЁЄ√, юЄяЁртыхээюх т $60 |
- | |
97 | чэрўхэшх - юЄяЁрты хЄё т SD-ърЁЄє. ╬сьхэ ё SD-ърЁЄющ шэшЎшшЁєхЄё ёЁрчє цх яюёых |
- | |
98 | spics_n 0->1, яюЄюьє яхЁхф ёўшЄ√трэшхь яЁшэ Єюую т яЁюЎхёёх ¤Єюую юсьхэр срщЄр |
- | |
99 | эхюсїюфшьр ярєчр. ╥ръющ ярєчющ ёыєцшЄ єёЄрэютър рфЁхёр ЁхушёЄЁр яЁш spi_cs_n=1. |
- | |
100 | ┬эшьрэшх: яхЁтюх ёўшЄрээюх шч $60 чэрўхэшх яюёых єёЄрэютъш lock 0->1 - ёыєўрщэюх. |
- | |
101 | 89 | ||
- | 90 | Регистр данных - $60, |
|
- | 91 | регистр управления - $61: |
|
- | 92 | bit 7 - lock (R/W), 0 после сброса. |
|
- | 93 | bit 0 - CS_n на карту (W/O), 1 после сброса. |
|
- | 94 | ||
- | 95 | Получение доступа: |
|
- | 96 | 1. записать в $61 CS_n=1, lock=1 |
|
- | 97 | 2. Считывая $61, дождаться lock=1. Это произойдёт, когда Z80 установит CS_n в 1 или же сразу, |
|
- | 98 | если Z80 CS_n стояло в 1. Пока lock=1, Z80 не видит SD-карту, доступ у АВРки, пока она |
|
- | 99 | не отдаст доступ обратно Z80. |
|
- | 100 | ||
102 | ╬Єяєёърэшх SD-ърЁЄ√: |
101 | Работа с SD-картой: |
- | 102 | 1. Удерживая lock=1, управлять CS_n. |
|
- | 103 | 2. Считанное из $60 значение - последний пришедший байт из SD-карты, отправленное в $60 |
|
- | 104 | значение - отправляется в SD-карту. Обмен с SD-картой инициируется сразу же после |
|
- | 105 | spics_n 0->1, потому перед считыванием принятого в процессе этого обмена байта |
|
- | 106 | необходима пауза. Такой паузой служит установка адреса регистра при spi_cs_n=1. |
|
- | 107 | Внимание: первое считанное из $60 значение после установки lock 0->1 - случайное. |
|
- | 108 | ||
- | 109 | Отпускание SD-карты: |
|
103 | 1. ╙фхЁцштр lock=1, єёЄрэютшЄ№ CS_n=1. |
110 | 1. Удерживая lock=1, установить CS_n=1. |
104 | 2. ╙ёЄрэютшЄ№ lock=0, CS_n=1. |
111 | 2. Установить lock=0, CS_n=1. |
105 | 112 |