1,251

(152 odpowiedzi, napisanych Sprzęt - 16/32bit)

Właśnie takiej taśmy użyłem - 80-żyłowej. Niestety na płytce nie ma miejsca by wstawić jednocześnie kondensatory i rezystory, na drugiej płytce wstawiłem tylko kondensatory. Będę testował w wolnej chwili, na dzisiaj mam już dość.

Wersja z rezystorami:
https://obrazki.elektroda.pl/1997828100_1552691699_thumb.jpg

Wersja z kondensatorami (22pF):
https://obrazki.elektroda.pl/3926710700_1552691706_thumb.jpg

...no i jeszcze muszę ogarnąć to:
https://obrazki.elektroda.pl/6364473200_1552691797_thumb.jpg

1,252

(152 odpowiedzi, napisanych Sprzęt - 16/32bit)

Tu nie chodzi o przejściówkę, lecz o taśmę IDE. To dołożenie taśmy pomogło (być może wraz z szeregowymi rezystorami 33R). Taśma wprowadza do układu dodatkową pojemność, która eliminuje "dzwonienie" linii. Wypróbuj to u siebie, być może okaże się, że pozostałe karty również zaczną działać prawidłowo.

1,253

(152 odpowiedzi, napisanych Sprzęt - 16/32bit)

Myślę, że mogę ogłosić zwycięstwo! Zapis działa poprawnie i jest to powtarzalne. Winna była... przejściówka.

Dzięki temu, że kupiłem drugą przejściówkę i na niej w ogóle nie działało, za radą Mq postanowiłem ją sprawdzić. Poszedłem po najmniejszej linii oporu i wstawiłem ją do starego PC. Efekt - błąd dysku... ale coś mnie tknęło i wpiąłem przejściówkę, którą dostałem od Mq wraz z PCB, efekt - zwis komputera na wykrywaniu dysku (żadnego błędu, po prostu wisiał na wykrywaniu dysku). Włożyłem kartę Elite Pro - działa (ta karta nie obsługuje DMA w ogóle). Miałem jeszcze jedną przejściówkę, taką nie wpinaną w port tylko do podłączenia przez taśmę - na niej w PC działały wszystkie moje karty CF (Kingston CF Elite Pro, Transcend CF Ultra, oraz SanDisk CF Ultra)... no więc wytargałem taśmę IDE z PC, włożyłem wraz z przejściówką i kartą do Atari i... nic ;) No tak, ta przejściówka nie podaje zasilania na kartę. Szybko to naprawiłem podłączając zewnętrze zasilanie i... działa!!! Zarówno odczyt jak i zapis jest bezbłędny.

1,254

(152 odpowiedzi, napisanych Sprzęt - 16/32bit)

W sumie dobrze odpowiedział... na tym polega DMA, że nie angażuje CPU w transmisję. Ale jednak przy zapisie kolejka do wysyłki jest zapełniana programowo.

https://www.aliexpress.com/item/LA1010- … 03094.html

1,255

(152 odpowiedzi, napisanych Sprzęt - 16/32bit)

...sprawdzę, ale prędzej to przelutuję cyną ołowiową z fluxem, niż będę próbował przedzwonić miernikiem ;). Coś tam działa, bo kartę w niej wykrywa, tylko partycji nie widzi, czyli tak jak w przypadku kart bez WDMA.

1,256

(152 odpowiedzi, napisanych Sprzęt - 16/32bit)

Ta ma, PCB wygląda identycznie, wszystkie piny są podłączone.

Kupiłem Microdrive'a... zobaczymy czy z nim zadziała.

1,257

(152 odpowiedzi, napisanych Sprzęt - 16/32bit)

8-bit DMA jest (a raczej był) w standardzie ATA. Stracił się gdzieś w okolicy ATA-3. Oficjalnie ten tryb nazywa się (Single)Word DMA albo WDMA. Interfejs Putnika pracuje w trybie WDMA-0... albo coś "koło tego", jak większość jego rozwiązań.

W akcie desperacji może wydam te 200+ PLN na 16-kanałowy analizator i wtedy poznamy odpowiedź co jest winne - karta czy sterownik.

P.S.
Kupiłem (prawie) identyczną przejściówkę i na niej tryb DMA nie działa w ogóle... wizualnie różni się kolorem nadruku i tym, że przy złączu CF (13 CF do 26 pin IDE) ma kondensator 10n zamiast rezystora 2k7 (czyli w sumie prawidłowo bo to jeden z pinów Vcc po stronie karty, do pinu GND po stronie IDE).

1,258

(152 odpowiedzi, napisanych Sprzęt - 16/32bit)

Dzisiaj dołożyłem rezystory szeregowe zgodnie z w/w dokumentem... bez wpływu na występowanie błędu.

1,259

(152 odpowiedzi, napisanych Sprzęt - 16/32bit)

Dane nie są zatrzaskiwane w interfejsie, zatrzask przechowuje jedynie bajt sterujący.

1,260

(152 odpowiedzi, napisanych Sprzęt - 16/32bit)

Gdyby powtórzony był przedostatni bajt to bym jeszcze zrozumiał, ale powtórzony jest bajt przed przedostatni (n-2), poza tym transmisja jest synchroniczna (i równoległa).

1,261

(152 odpowiedzi, napisanych Sprzęt - 16/32bit)

Bardzo ciekawa lektura, jednak nadal nie pasuje mi to powtórzenie trzeciego od końca (n-2) bajtu sektora na pozycji ostatniego bajtu.

1,262

(88 odpowiedzi, napisanych Sprzęt - 16/32bit)

Pamiętaj, że dla interfejsu IDE musisz podmienić początkową część obrazu stosownym plikiem. Główny plik BIN ma autoboot dla ACSI. Putnik stosuje bardzo dziwny opis partycji w tym obrazie. Niby jest to FAT16 i PC/Windows widzi partycje i dane nich na tym obrazie (1 x podstawowa, 1 x rozszerzona z dwoma dyskami logicznymi) ale już żaden program do partycjonowania ani nawet DMDE nie rozpoznaje prawidłowo typu tych partycji.

Tu masz gotowy obraz:
https://we.tl/t-OofarNMBXH (link wygaśnie za 7 dni)

1,263

(6 odpowiedzi, napisanych Sprzęt - 16/32bit)

Jak nikt inny się nie znajdzie mogę się podjąć naprawy.

1,264

(152 odpowiedzi, napisanych Sprzęt - 16/32bit)

Negacja DMARQ to żądanie przerwania transmisji.

If the Card cannot sustain continuous, minimum cycle time DMA transfers, it may negate DMARQ within the time specified from the start of a DMA transfer cycle to suspend the DMA transfers in progress and reassert the signal at a later time to continue the DMA operation.
(...)
This signal (DMACK) may be negated by the host to suspend the DMA transfer in progress.

1,265

(152 odpowiedzi, napisanych Sprzęt - 16/32bit)

Dziwne te timingi... raz DMA jest synchronicznie z DMACK, a raz są przesunięte o 42ns... a to jest ten sam sygnał buforowany w GALu. W załączniku timingi zebrane przy kopiowaniu pliku z jednej partycji na drugą. Niestety mój analizator ma tylko 8 kanałów. Do otwarcia potrzebny program Saleae Logic.

Tak przy okazji - cóż za zaskoczenie - zobaczcie co ile taktów pojawia się sygnał DMARQ wstrzymujący transmisję... no jak obstawiacie?










Rozwiązanie zagadki:
https://obrazki.elektroda.pl/8450279700_1552173883_thumb.jpg

1,266

(152 odpowiedzi, napisanych Sprzęt - 16/32bit)

Przyszedł mi czytnik i mogę po ludzku pracować na laptopie z Win10 (widzi partycje na kartach Flash). Każdy 512 bajt jest powtórzeniem bajtu 510, to nie jest kwestia szumów... dokładnie każdy i bezbłędnie.

1,267

(152 odpowiedzi, napisanych Sprzęt - 16/32bit)

Kombinuję z buforowaniem sygnałów, dwa wolne wyjścia wykorzystałem do buforowania sygnałów ACK (DMACK) i RESET dla karty CF, tak by nie było bezpośrednich połączeń między liniami ACSI i karty CF. Użycie zbuforowanego sygnału ACK dla generowania sygnałów IORD/IOWR powoduje, że pojawiają się zbyt późno, sygnałowi DRQA jest "wszystko jedno".

Jeden z powyższych dokumentów częściowo odpowiada na pytanie co robi tam ten multiwibrator - sygnały IOxx muszą być wystawione przez określony, czas... te 180ns z komentarza w oryginalnym pliku GAL Putnika (prawie) pasują do czasu wymaganego dla DMA-MW 0 (215ns)... tyle, że przy wartościach elementów RC jak na schemacie jest to 85ns, a nie 180ns. Co więcej, ten sygnał musi przestać być aktywny przed końcem transmisji danych.

Większość kart obsługuje tryby DMA-MW 3 i 4, driver Putnika wykorzystuje prawdopodobnie tryb 0 lub 1.

1,268

(152 odpowiedzi, napisanych Sprzęt - 16/32bit)

Przepisałem plik GALa z oznaczeniami zgodnymi z powszechni stosowanymi i w miarę sensownymi komentarzami (tak mi się wydaje):

Name     ACSICF05 ;
PartNo   00 ;
Date     2019-02-26 ;
Revision 01 ;
Designer TzOk ;
Company  None ;
Assembly None ;
Location None ;
Device   G16V8AS ;

/* *************** INPUT PINS *********************/
PIN  1    = A1                        ; /* From ACSI - cmd LOW, data HIGH  */
PIN  2    = CS                        ; /* From ACSI - active LOW          */ 
PIN  3    = RW                        ; /* From ACSI - write LOW, read HIGH*/ 
PIN  4    = ACK                       ; /* From ACSI - active LOW (~DMACK) */ 
PIN  5    = INTRQ                     ; /* From CF - active HIGH           */ 
PIN  6    = DMAON                     ; /* From DRIVER - active LOW        */ 
PIN  7    = DMARW                     ; /* From DRIVER - active LOW        */ 
PIN  8    = DMARQ                     ; /* From CF - active HIGH           */ 
PIN  9    = RESET                     ; /* From ACSI - active LOW          */
PIN 11    = ENABL                     ; /* From DRIVER - active HIGH       */ 
PIN 12    = DNACK                     ; /* Del'd ACK tw~85ns - active HIGH */

/* *************** OUTPUT PINS *********************/
PIN 13    = IRQA                      ; /* To ACSI via diode - active LOW  */ 
PIN 14    = DMACK                     ; /* To CF - buffered ACK            */
PIN 15    = DRQA                      ; /* To ACSI via diode - active LOW  */ 
PIN 16    = RESETF                    ; /* To CF - buffered RESET          */
PIN 17    = IORD                      ; /* To CF - active LOW              */ 
PIN 18    = IOWR                      ; /* To CF - active LOW              */ 
PIN 19    = LAC                       ; /* To '574 CK pin - active RISING  */ 

/* *************** BOOLEAN-EQUATIONS *********************/
                              
   LAC = !A1 & !CS & !RW & RESET ;        /* raising pulse for command latch */

   !IORD = A1 & !CS & RW & ENABL # !DMAON & ENABL & DMARQ & !ACK & DNACK & DMARW ;    /* READ # DMA_READ */
 
   !IOWR = A1 & !CS & !RW & ENABL # !DMAON & ENABL & DMARQ & !ACK & DNACK & !DMARW ;    /* WRITE # DMA_WRITE */

   !DRQA = DMARQ & DMACK & ENABL ;        /* off when ACK deactivates */
 
   !IRQA = INTRQ ;                /* invert for ACSI */

   DMACK = ACK ;                /* buffer for CF */

   RESETF = RESET ;                /* buffer for CF */

W którym trybie działa ta karta na driverze Putnika? DMA-MW 0? Jeśli tak to sygnały IORD i IOWR są stanowczo za krótkie - trwają ok 85ns, a powinny co najmniej 215ns.

W sumie ten dokument od GOOD-RAMa jest o wiele bardziej użyteczny, niestety opis nie do końca zgadza się z rysunkiem.

O wiele bardziej wyczerpująca dokumentacja: http://thiim.com/TradePoint141/ItemImag … 90917).pdf
https://produktinfo.conrad.com/datenbla … AL_150.pdf
...a tutaj całkiem inaczej, ale o wiele sensowniej: https://cpi-tec.jp/cpcf/pdf/CPCF_SI%e3%80%80TYPE.pdf

1,269

(152 odpowiedzi, napisanych Sprzęt - 16/32bit)

Równania są prawidłowe, ale dopiero po przestudiowaniu dokumentacji ACSI je zrozumiałem. Problem jest w jednej z następujących rzeczy:
- sygnał MONOST (opóźnione i zanegowane ACK) jest niezbyt sensownie generowany. Tak naprawdę wykorzystywane jest opóźnienie tego sygnału wprowadzane przez czas propagacji '221, a nie długość generowanego impulsu ustalana przez RC. Komentarz w pliku GAL mówi o 120ns, a dla 180pF i 750R jest to 95ns, właściwy czas jest uzyskiwany dla 1k, ale jak pisałem czas trwania tego impulsu jest bez znaczenia, byle był krótszy od !ACK.
- Zapis !ACK & MONOST zasadniczo też jest bez sensu, wystarczy MONOST, chyba że mogłaby zaistnieć sytuacja gdzie stałej długość sygnał MONOST nie kończy się przed wygaśnięciem !ACK.
- Zagadką pozostaje opóźnianie sygnałów IORD i IOWR, bez opóźnienia DRQA.
- W moim egzemplarzu nie ma różnicy czy używam sygnału MONOST czy nie... jego usunięcie z równań nie zmienia niczego.
- Muszę to sprawdzić ale wygląda jakby mylony bit (bo to są przestawione pojedyncze bity w bajcie) pochodzi z poprzedniego cyklu polecenia.

Mój egzemplarz działa prawidłowo zarówno z GALem 15ns, jak i 35ns. Najprostszym rozwiązaniem byłoby skłonienie Putnika by przepisał sterownik tak, aby tylko odczyt odbywał się w trybie DMA, natomiast zapis - w PIO. Niestety nie odpowiada na żadne wysyłane do niego maile, a na jego forum nie da się zarejestrować.

1,270

(152 odpowiedzi, napisanych Sprzęt - 16/32bit)

Spójrzcie na te równania:

   !IORD = A1 & !CS & RW & ENABL # !DMAON & ENABL & DMARQ & !ACK & MONOST & DMARW ;  /* must close before ACK !!! */
                                                      /* so, needs monostable again */
   !IOWR = A1 & !CS & !RW & ENABL # !DMAON & ENABL & DMARQ & !ACK & MONOST & !DMARW  ;

...coś mi tu nie pasuje. Sygnały IORD i IOWR mają być blokowane (=1) przed wystąpieniem ACK, przy pomocy sygnału MONOST... no i pięknie, tylko że ten sygnał pojawia się po ok 30ns od zbocza opadającego ACK i trwa 85ns :/ Poza tym mamy problem z podwójną negacją... równanie niby jest w odwróconej logice, ale wtedy to blokowanie nie działa... albo jest już późno i źle myślę :/ bo żeby zablokować to ma być IOWR = 1, a nie !IOWR = 1...

1,271

(152 odpowiedzi, napisanych Sprzęt - 16/32bit)

To są oscylogramy Chrisa, u siebie aż takiego dzwonienia nie zaobserwowałem, występuje natomiast szereg innych dziwacznych zjawisk na magistrali danych portu ACSI...

W układach TTL i HCT na wejściach są już tak włączone diody.

1,272

(152 odpowiedzi, napisanych Sprzęt - 16/32bit)

Diody zabezpieczają przed przed impulsami, które pojawiają się poniżej poziomu masy.
https://www.exxoshost.co.uk/atari/last/DMAfix/index.htm (tutaj akurat puszczony przez rezystor 100R):
https://www.exxoshost.co.uk/atari/last/DMAfix/rdy1.png

1,273

(152 odpowiedzi, napisanych Sprzęt - 16/32bit)

Niestety diody u mnie nic nie zmieniają. Natomiast obserwując na oscyloskopie linie portu ACSI to jest w ogóle cud, że cokolwiek działa. Ciężko dojść co jest transmisją a co zakłóceniami.

1,274

(152 odpowiedzi, napisanych Sprzęt - 16/32bit)

Przekopiowałem kilkakrotnie folder z kilkoma setkami plików i na pierwszy rzut oka wyglądało, że wszystko jest ok. Niestety dokładniejsze oględziny pokazują, że pojedyncze bity są zamienione :(

1,275

(152 odpowiedzi, napisanych Sprzęt - 16/32bit)

https://www.youtube.com/watch?v=UqliWRjLclE