Autor Wątek: ZX128+2 i DivMMC - spontaniczne wywołania NMI  (Przeczytany 3374 razy)

tomi

  • GTS
  • ****
  • Wiadomości: 295
  • Miejsce pobytu:
    Poznań
Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
« Odpowiedź #15 dnia: 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.

KWF

  • *****
  • Wiadomości: 6833
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
    • PCBway
Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
« Odpowiedź #16 dnia: 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.
« Ostatnia zmiana: 2021.12.07, 13:57:49 wysłana przez KWF »
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

trojacek

  • *****
  • Wiadomości: 6840
  • Miejsce pobytu:
    Warszawa
Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
« Odpowiedź #17 dnia: 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ę  ;)
« Ostatnia zmiana: 2021.12.07, 13:23:39 wysłana przez trojacek »

KWF

  • *****
  • Wiadomości: 6833
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
    • PCBway
Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
« Odpowiedź #18 dnia: 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
« Ostatnia zmiana: 2021.12.07, 13:49:34 wysłana przez KWF »
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

tomi

  • GTS
  • ****
  • Wiadomości: 295
  • Miejsce pobytu:
    Poznań
Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
« Odpowiedź #19 dnia: 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.

trojacek

  • *****
  • Wiadomości: 6840
  • Miejsce pobytu:
    Warszawa
Odp: ZX128+2 i DivMMC - spontaniczne wywołania NMI
« Odpowiedź #20 dnia: 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.