2 дма работающие в паралель,такого небыло еще ни в одном клоне,только ни кому это не нужно,на ревизиях EVO "В" зетник диповый ,туда можно воткнуть сей девайс,на С паять придется.
Вид для печати
в даташите есть все,но нет примеров
так в двух словах,
чтобы переслать блок данных из памяти в память шлем в порт DMA #0B по порядку такую кучку байтиков
db 0xc3 ;R6-RESET DMA
db 0xc7 ;R6-RESET PORT A Timing
db 0xcb ;R6-SET PORT B Timing same as PORT A
db 0x7d ;R0-Transfer mode
dw 0x00 ;R0-Port A, Start address откуда 2 байта например #C000
dw wdth ;R0-Block length длинна блока 2 байта,например #1800
db 0x54 ;R1-Port A address incremented, variable timing
db 0x02 ;R1-Cycle length 2T
db 0x50 ;R2-Port B address incremented, variable timing
db 0x02 ;R2-Cycle length 2T
db 0xad ;R4-Continuous mode
dw 0x00 ;R4-Port B, Start address Куда кидаем данные ,например #4000
db 0x8a ;R5-Stop on end of block, RDY active high
db 0xcf ;R6-Load
db 0xb3 ;R6-Force Ready
db 0x87 ;R6-Enable DMA команда старт,после неё врубается дма ,а проц отключается.
Симпатишно, главное чтоб было что на ней смотреть, как правильно написали. Тогда и заказать можно будет.
Попробую нацарапать.
- - - Добавлено - - -
Поразмышлял немного и вот о чем думаю.
По сути принудительное отлючение сигналов BUSACK/ и BUSRQ/ от DMA в момент сброса ничего не даст кроме того, что проц сможет работать.
Сам DMA не сможет откликнутся пока не закончится операции трансфера. У него вход выбора кристалла совмещен с входом WAIT и разделяется доступ к ним по сигналу BUSRQ/.
Тоесть, когда DMA выставил на BUSRQ/ = 0, то на этом входе он ждет сигнал WAIT, а не CS. Тоесть в этот момент к нему не достучаться.
Получается, что действительным способом для сброса DMA может служить только отключение питания. Иными словами похоже в момент сброса DMA надо немного обесточить.
Вроде как то так, но могу конечно ошибаться.
- - - Добавлено - - -
С другой стороны в даташите написано, что сигнал WAIT начинает обрабоатываться после того как процессор уведомит по BUSACK, что шину освободил.
Chip Enable and Wait (input, active Low). Normally, this functions only as
a CE line, but it can also be programmed to serve as aWAIT function. As a
CE line from the CPU, this pin becomes active when IORQ is active and
the I/O port address (up to 16 bits) on the system address bus is the DMA’s
address, thereby allowing control bytes to be written from the CPU to the
DMA. As a WAIT line from memory or I/O devices, after the DMA has
received a bus acknowledge (BUSACK) from the CPU, this pin causes wait
states to be inserted in the DMA’s operation cycles, thereby slowing the
DMA to a speed that matches the memory or I/O device. The Applications
chapter contains a description of how the CE and WAIT inputs can be
multiplexed by the CPU’s BUSACK line.
Тогда может если оторвать все таки BUSACK и BUSRQ от DMA, то вполне можем и достучаться.
Это короче надо пробовать :)
http://maben.homeip.net/static/S100/...stem%20SGS.pdf
Еще вот так
Modes of Operation
The DMA may be programmed for one of three modes of
operation. (See Command Register 2B.)
• Byte at a time. control is returned to the CPU after each
one-byte cycle
• Burst: operation continues as long as the DMA's RDY
input is active, indicating that the relevant port is ready
Control returns to the CPU when RDY is inactive or at
end of block or a match if so programmed
• Continuous: the entire Search and/or Transfer ofa block
of data is completed before cont rol is returned to CPU
Totem, оверквотинг! Зачем два раза подряд повторять одно и то же???
Избыточное цитирование - вы заставляете нас два раза подряд читать одно и то же! Зачем вы это делаете? Не цените наше время???