Autor Wątek: Nie działa dżojstik przez interfejs Kempston  (Przeczytany 6992 razy)

marmazzaa

  • *
  • Wiadomości: 18
Odp: Nie działa dżojstik przez interfejs Kempston
« Odpowiedź #30 dnia: 2022.04.01, 12:16:42 »
Cześć,

Wyciągnąłem 74HCT32 i po zwarciu pinu 8 do masy poprawnie detekuję aktywację joysticka na złączu krawędziowym, zatem 74HCT240 jest OK.
Podejrzenie padło na 74HCT32 - na razie zauważyłem problem z wyjściem bramk (U5A)i pod pinem3.
Domyślnie piny 1 i 2 pływają i na pinie 3 panuje stan wysoki. Po ściągnięciu pinu1 (A5) do masy na pinie 3 jest niski. Niestety po ściągnięciu pinu 2 (IOREQ) do masy nadal jest stan wysoki na pinie 3.
To by tłumaczyło dlaczego 74HCT240 jest nieaktywny po podpięciu do komputera, nie da się osiągnąć stanu niskiego na pinie 3.
Dlaczego się tak dzieje? wszystkie ułady które mam zachowują się identycznie - również nowe, nieużywane.

trojacek

  • *****
  • Wiadomości: 6846
  • Miejsce pobytu:
    Warszawa
Odp: Nie działa dżojstik przez interfejs Kempston
« Odpowiedź #31 dnia: 2022.04.01, 12:58:46 »
Wyciągnąłem 74HCT32 i po zwarciu pinu 8 do masy poprawnie detekuję aktywację joysticka na złączu krawędziowym, zatem 74HCT240 jest OK.

Czyli działają wszystkie kierunki, fire, a na najstarszych 3 bitach jest logiczne zero?

Cytuj
Domyślnie piny 1 i 2 pływają i na pinie 3 panuje stan wysoki. Po ściągnięciu pinu1 (A5) do masy na pinie 3 jest niski. Niestety po ściągnięciu pinu 2 (IOREQ) do masy nadal jest stan wysoki na pinie 3.

Moim zdaniem testujesz to dziwacznie. Wiesz, jak działa bramka OR? Czyli taka, jak w 74x32? Żeby mieć niski stan na wyjściu, musisz mieć niski stan na OBU wejściach jednocześnie. Zwierając jedno wejście, a drugie pozostawiając losowi, to nie wiadomo tak naprawdę, co testujesz. Prawdopodobnie chwilowy poziom zakłóceń elektromagnetycznych w swojej okolicy.

Wrzuć pull-upy na oba wejścia i wtedy testuj. A skoro to bramka OR, powinna dawać takie wyniki:
0, 0 => 0
0, 1 => 1
1, 0 => 1
1, 1 => 1

I najlepiej przetestuj też U5C.

Cytuj
To by tłumaczyło dlaczego 74HCT240 jest nieaktywny po podpięciu do komputera, nie da się osiągnąć stanu niskiego na pinie 3.

Jak na razie, to moim zdaniem jeszcze nic nie tłumaczy. Zwłaszcza, że dwa egzemplarze '240 dawały różne wyniki. Równie dobrze może być coś z samą PCB, jakiś niepewny lut gdzieś lub uszkodzona/skorodowana ścieżka (lub via).

KWF

  • *****
  • Wiadomości: 6838
  • Miejsce pobytu:
    trzecia planeta od Słońca
  • "I co ja robię tu, u-u, co Ty tutaj robisz ..."
    • PCBway
Odp: Nie działa dżojstik przez interfejs Kempston
« Odpowiedź #32 dnia: 2022.04.01, 13:02:50 »
Akurat nic by to nie tłumaczyło. Te "ściąganie" robisz przy interfejsie podpiętym do komputera? No i piny 1 I 2 (wejścia bramki OR) nie mogą pływać (float), muszą mieć jeden ze stanów TTL (niski U < 0,8 V lub wysoki U > 2,0 V), a stan pośredni jest zabroniony.

Jesteś pewien tych układów co masz? Możesz sam sprawdzić swoje układy 74x32 na płytce prototypowej podłączając do zasilanie (+5 V) do nogi 14 a masę do nogi 7. Do wyjścia bramki A (pin 3) podpiąć w szeregu rezystor 150-470R i LEDa z zasilania. A na wejściach (piny 1 i 2) możesz wymuszać logiczne 0 lub 1 poprzez zwieranie ich do masy lub zasilania. Empirycznie zobaczysz, kiedy dioda zaświeci się.

Poza tym prześledź jak działa ten interfejs. Przy normalnej pracy komputera linie adresowe, w tym A5 i linia wywołania urządzeń zewnętrznych (/IORQ) zmieniają swój stan w zależności od potrzeb oraz tego co procesor robi w danym momencie. W przypadku interfejsu typu Kempston, jego odczyt następuje z portu 31 (0x1F), więc procesor wystawia stan niski na liniach: A5 (innych adresach też, ale tu jest sprawdzana tylko ta linia), /IORQ i /RD, a następnie odczytuje stany z całej szyny danych (D0 do D7). Aby Kempston działał popranie, dekoder adresu aktywuje bufor tylko i wyłącznie dla tych trzech lini w stanie niskim. W przypadku tego konkretnego interfejsu zworka J5 musi być w pozycji 1-2, aby aktywować dekoder adresu (wejście do bramki OR z linii A5). Aby na wyjściu bramki OR (U5A) był stan niski, to oba wejścia tej bramki muszą być w stanie niskim. W następnej bramce OR dokładany jest stan linii /RD i dopiero kiedy wszystkie 3 niezbędne linie są stanie niskim aktywowany jest bufor. A bufor jest aktywny na tyle długo, aby procesor odczytał dane, a następnie jest on wylączony, do następnego odczytu z porty joysticka. Ot cała filozofia.

Pull-upy o których wspominał @trojacek, to takie z zakresu 4k7 - 10k. Choć przy układach typu LS są one zbędne.
KWF
-----
R Tape loading error 0:1
Moje zabawki: https://github.com/McKlaud76

marmazzaa

  • *
  • Wiadomości: 18
Odp: Nie działa dżojstik przez interfejs Kempston
« Odpowiedź #33 dnia: 2022.04.01, 13:52:03 »
Interfejs testuje na sucho, bez komputera.

Tak, macie rację, dopiero teraz zorientowałem się jakie głupoty napisałem. Sprawdziłem obie bramki OR-  bramka U5A i U5C działa.

"Czyli działają wszystkie kierunki, fire, a na najstarszych 3 bitach jest logiczne zero?" - tak, mierząc bezpośrednio analizatorem stanów logicznych sygnały D0-D4 widzę zmianę ze stanu niskiego w wysoki gdy aktywuję kierunek lub fire (A5, IOREQ i RD zwarłem do masy, wszystkie znajdują się układy w podstawkach).
Jeśli chodzi o sygnały D5-D7 to też mają w tym przypadku stan niski.