Subversion Repositories pentevo

Rev

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