forum speccy.pl

ZX Spectrum => HARDWARE => NAPRAWY => Wątek zaczęty przez: tomi w 2021.12.04, 23:50:48

Tytuł: ZX128+2 i DivMMC - spontaniczne wywołania NMI
Wiadomość wysłana przez: tomi w 2021.12.04, 23:50:48
Problem który mi się objawił dotyczy ZX Spectrum 128+2 (szary) - 0500 ISS3 i DivMMC AY (Zaxon).
Oba urządzenia jeszcze tydzień temu współpracowały OK.

Sam "szarak" bez DivMMC z interfejsem Kempston działa bez problemu.
Sam DivMMC z ZX Spectrum 48 oraz ZX Harlequin 48, działa bez problemu.
Dlatego podejrzewam problem w samym szaraku z obsługą wywołania NMI, niestety nie mam innego urządzenia z NMI do przetestowania.

Objaw jest taki, że w losowym momencie (nieraz od razu po restarcie, czasem po uruchomieniu programu, ale również w samym tylko BASIC-u 48), system przechodzi do menadżera plików, jak po wywołaniu przyciskiem NMI w DivMMC. Po wydaniu polecenia powrotu, wraca i kontynuuje prace programu.

Szarak działa na wszystkich oryginalnych podzespołach (również elektrolitach), bez fix'ów - obraz i dźwięk są ok.

Spotkaliście się może z takim problemem, gdzie szukać przyczyny?
Tytuł: Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
Wiadomość wysłana przez: Maryjan w 2021.12.05, 11:29:56
Może najpierw należało by przeczyścić złącze krawędziowe ?
Tytuł: Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
Wiadomość wysłana przez: tomi w 2021.12.05, 11:48:15
Złącze przeczyszczone, nawet kilkukrotnie  :)
Dodatkowo wymienione gniazdo zasilania, przy sprawdzaniu wyszło, że oryginalne przy poruszaniu wprowadzało zakłócenia (reset lub artefakty na ekranie) po wymianie ten problem został wyeliminowany, jednak na problem z NMI nie miało to wpływu.
Po czyszczeniu mam wrażenie, że problem się nasilił, choć to pewnie tylko zbieg okoliczności - pewnie jakiś inny element pogarsza swoje właściwości, muszę poszukać schematu, może jest gdzieś na połączeniu od NMI jakiś elektrolit po drodze (na płycie wszystkie są fabryczne)  ::)
Tytuł: Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
Wiadomość wysłana przez: Maryjan w 2021.12.05, 12:46:09
Należało by zmierzyć i sprawdzić napięcie przed i po stabilizatorze.
Najlepiej oscyloskopem, żeby sprawdzić, czy nie ma jakichś pików na napięciu.
Po tylu latach, bez porządnych pomiarów możliwe jest wszystko.

W celach testowych należało by podłączyć inny interface DivMMC i sprawdzić, czy efekt ten występuje, czy nie.

Można też na zasadzie Macajewa - wymieniamy wszystko po kolei - ale czasami i ta metoda nie jest skuteczna :)
Tytuł: Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
Wiadomość wysłana przez: tomi w 2021.12.05, 20:32:16
Maryjan, dzięki za wsparcie :)

Problem rozwiązany.

Po zweryfikowaniu schematu (bezpośrednie połączenie do CPU), sprawdzeniu napięć - są OK, uruchomieniu 128 na innym regulatorze napięcia (brak zmian). Odkryłem ciekawostkę - kiedy miałem sondę pomiarową na złączu 14B lub 17 pinie CPU problem nie występował.

Wyjęcie i przeczyszczenie CPU i podstawki nie przyniosło rozwiązania.
Wstawienie innego egzemplarza Z80 całkowicie rozwiązało problem.
Z80 z ZXS128+ w ZXS+ i ZXHQ48 działa z DivMMX bez problemu.
Wygląda więc na to że oryginalna podstawka przestała dobrze współpracować z oryginalnym Z80. Ze względu na posiadany inny egzemplarz Z80, który rozwiązał problem, zrezygnowałem z jej wymiany.
Tytuł: Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
Wiadomość wysłana przez: damik w 2021.12.05, 22:40:29
Możliwe że rezystor podciągający R28 jesz uszkodzony lub jakaś ścieżka do niego gdzieś pękła.
Tytuł: Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
Wiadomość wysłana przez: tomi w 2021.12.05, 23:17:52
Możliwe że rezystor podciągający R28 jesz uszkodzony lub jakaś ścieżka do niego gdzieś pękła.
Taka usterka też by mogła dawać opisane przeze mnie objawy. Jednak sądzę, że w takim przypadku wymiana procesora nie powinna pomóc, a tak się stało.
Tytuł: Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
Wiadomość wysłana przez: damik w 2021.12.06, 00:14:35
Niekoniecznie, jeśli to model procka z innej firmy to może akurat zatrybiać tam jakoś bez tego podciągu rezystorem.
Tytuł: Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
Wiadomość wysłana przez: tomi w 2021.12.06, 00:38:24
Zilog 4MHZ rp 1983 za Zilog 4Mhz rp 1986 ;) Starszy działa wszędzie, młodszy wzbudza NMI w 128+ poza tym ok. Może być i tak jak mówisz, żeby się przekonać musiałbym wymienić podstawkę (czego na ten moment nie chcę robić). Natomiast rezystor i ścieżkę w takim razie sprawdzę :)
Tytuł: Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
Wiadomość wysłana przez: tapy w 2021.12.06, 17:52:31
Dociągnąć do zera logicznego rezystor 10k podłączony do plusa... to może nie być kwestia podstawki.
Tytuł: Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
Wiadomość wysłana przez: tomi w 2021.12.06, 22:39:33
Na początek moja korekta, załączyłem fragment schematu ZXS128+, połączenia są te same co w omawianym ZXS128+2 jednak oznaczenie rezystora inne - R26. Dla uporządkowania załączam z fragment schematu z manuala serwisowego 128+2 z prawidłowym oznaczeniem.

Damik i tapy - Wasze sugestie dotyczące rezystora (R26 jest OK) zwróciły moją uwagę na napięcia - w ZXS128+2 na oryginalnym procesorze mam NMI0 - 3,80V a NMI1 3,00V. Na "nowym" CPU mam NMI0 4,88V a NMI1 3,00.

Identyczna sytuacja występuje gdy przełożę CPU z ZXS128+2 do ZXS+ lub do ZXHQ48. Np: w ZXHQ48 na swoim CPU ma NMI0/1 4,93/3,00V na CPU z ZXS128+2 3,83/3,00V.
Chociaż na obu problem z NMI nie wystąpił to jak damik pisał tu akurat ten CPU "zatrybia" natomiast na ZXS128+2 przestał.

Z tego raczej wynika, że to nie problem podstawki (lub nie tylko :) bo przecież działał i na innych działa współpraca z DivMMX bez problemu), ale przede wszystkim jest problem z oryginalnym CPU z ZXS128+2.

Dziękuję za wsparcie w śledztwie :)
Tytuł: Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
Wiadomość wysłana przez: Maryjan w 2021.12.07, 11:21:00
To jest oryginalny Zilog ? czy też jakiś NEC, SGS.
Tytuł: Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
Wiadomość wysłana przez: tomi w 2021.12.07, 11:40:04
Oryginalny Zilog z tego 128+2.
Ciekawe czy od początku podawał niższe napięcie, czy też się zdegradował z biegiem lat?  ???
Tytuł: Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
Wiadomość wysłana przez: trojacek w 2021.12.07, 11:46:43
Podejrzewam, że sir Clive jak zwykle kupił towar z przeceny. Przecież standardowo NMI nie jest w Spectrum używane.
Tytuł: Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
Wiadomość wysłana przez: KWF w 2021.12.07, 11:52:06
/NMI to wejście, a nie wyjście Z80, więc procesor tam nic nie "podaje". Wejście to jest aktywowane poziomem niskim i wymaga poziomów TTL.

Co to za sygnały: NMI0 i NMI1, o których piszesz?

@trojacek: w +2 za tanie komponenty możemy winić Alana Sugara ;)
Tytuł: Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
Wiadomość wysłana przez: tomi w 2021.12.07, 12:11:54
NMI0 napięcie na CPU pin 17 i złącze 14B
NMI1 to samo, ale przy wciśniętym przycisku NMI na divMMC.

Sprawdzałem na 4 prockach na trzech płytach ZXS128+2, ZXS+, ZXHQ48 i tylko przy tym oryginalnym ze 128+2 Z80 jest niższe napięcie (na wszystkich płytach). Stąd moje podejrzenie o wadę CPU. I może też podstawkę, że zaczęła wprowadzać dodatkową stratę 0,01 - 0,03V co mogło spowodować przy tak niskim napięciu przekroczenie jakiejś wartości granicznej powodującej wywołanie NMI, co spowodowało się objawieniem u mnie problemu.
Tytuł: Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
Wiadomość wysłana przez: KWF w 2021.12.07, 12:33:47
Czyli:

NMI0 - stan wysoki,
NMI1 - stan niski?

Dziwne oznaczenia.

Napięcie +3 V jest powyżej poziomu stanu wysokiego w TTL i nie wiem jakim cudem Z80 widzi to jako aktywowanie NMI. Patrz "ERRATA"

Zobacz na schemacie, NMI jest podciągnięte po +5 V przez R26 (10K). Na tej nodze, przy NMI w stanie normalnym (wysokim) i przy dużej impedancji sondy pomiarowej, powinieneś odczytywać napięcia sporo powyżej +4 V. W przypadku naciśnięcia przycisku NMI, linia jest zwierana wprost to masy i poziom na nodze 17 CPU powinien spaść do 0 V lub tuż ponad (rezystancja przejścia przycisku zwiernego, rezystancja ścieżek, utlenienie złącza krawędziowego, itd.), ale nadal sporo poniżej +0,8 V, będących górną granicą stanu niskiego w TTL.
Tytuł: Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
Wiadomość wysłana przez: trojacek w 2021.12.07, 12:58:08
/NMI to wejście, a nie wyjście Z80, więc procesor tam nic nie "podaje". Wejście to jest aktywowane poziomem niskim i wymaga poziomów TTL.

No właśnie. Jeśli to jest wejście z pullupem,  który nie jest w stanie utrzymać stanu wysokiego, to CPU ma awarię lub wadę fabryczną.

Cytuj
@trojacek: w +2 za tanie komponenty możemy winić Alana Sugara ;)

No nie chciałem wyjść na rasistę  ;)
Tytuł: Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
Wiadomość wysłana przez: KWF w 2021.12.07, 13:27:39
ERRATA:

Mam na stole TC2048 i DivMMC. W TC2048 jest Z80 (Z0840004PSC) Ziloga z 87 roku (8741). W stanie normalnym NMI jest podciągnięte pod +5 V przez rezystor 10k, tak samo jak w +2. Napięcie na tym wejściu Z80 jest na poziomie tego co daje stabilizator napięcia, tj. +5 V.

Jak działa NMI w DivMMC?

DivMMC nie zwiera NMI wprost to masy. W DivMMC w CPLD siedzi generator NMI, który działa stale na zboczu opadającym /MREQ i biorąc pod uwagę stan linii /M1 oraz kilka innych warunków. Ponad to w DivMMC jest CPLD na +3,3 V i wyjścia z niego będą dawały takie napięcia dla stanu wysokiego. +3,3 V jest w zakresie stanu wysokiego dla logiki TTL.

Przycisk NMI służy tylko pod podpięcia tego co generuje CPLD do wejścia /NMI Z80. Kiedy CPLD generuje stan niski NMI, na wyjściu jego pojawi się logiczne 0 z napięciem 0 V. Oscylogram z nogi 17 Z80 przy zwartym przycisku NMI w załączeniu.

Niestety pomiary sondą logiczną lub woltomierzem mogą być złudne.

@trojacek: no wiem, że cukier jest szkodliwy, ale żeby zaraz rasizm :P
Tytuł: Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
Wiadomość wysłana przez: tomi w 2021.12.07, 14:35:34
Klaudiusz, dzięki za wyjaśnienie. (Tak jak prezydent, cały czas się uczę  :D )

Mierzę multimetrem i dlatego krótkiego zera nie jestem w stanie zauważyć (stąd wątek o potrzebie oscyloskopu :) )

Dodatkowo pomiar ok 3,0 V przy wciśniętym przycisku NMI jest po włączeniu komputer lub resecie. Ponowne wciśnięcie przycisku NMI daje ok 3,3V - do resetu lub restartu.

Po wyjaśnieniu i zrozumieniu  mechanizmu działania, przyczyna problemu pozostaje wg mnie bez zmian - wadliwy jest CPU - w stanie normalnym powinienem mieć na pinie 17 CPU wartość bliską 5V, a mam poniżej 3,83V (mierząc multimetrem - możliwe że występują chwilowe znacznie większe spadki napięcia których nie widzę).

Zakładając, że Z80 był wadliwy od początku,  coś jeszcze musiało zmienić parametry, że przy tym CPU na tej płycie zaczął występować problem (samoistne wywołanie managera DivMMC), wcześniej tego problemu nie doświadczyłem. Jednocześnie mimo tego niższego napięcia na innych 2 posiadanych przeze mnie płytach (z podstawką) problem ten nie występuje. Podobnie jak i na ZXS128+2 z innymi CPU.

Konkluzja potrzebuje lepsze narzędzia :) Muszę napisać do M. z prośbą o oscyloskop lub/i analizator TTL.
Tytuł: Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
Wiadomość wysłana przez: trojacek w 2021.12.07, 14:36:27
Cytat: KWF
@trojacek: no wiem, że cukier jest szkodliwy, ale żeby zaraz rasizm :P

Ale nie jest to cukier biały "kryształ" z cukrowni Łapy ;)
Natomiast errata sporo tłumaczy w kwestii dziwnego napięcia ok. 3V.