eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › Niestabilna praca komputera retro/DIY - rodziny układów logicznych?
Ilość wypowiedzi w tym wątku: 39

  • 1. Data: 2021-07-21 17:16:08
    Temat: Niestabilna praca komputera retro/DIY - rodziny układów logicznych?
    Od: Atlantis <m...@w...pl>

    Wróciłem ostatnio do jednego z moich starych projektów, komputerka retro
    na polskim procesorze MCY7880. Jego pierwotna wersja została zmontowana
    na płytkach uniwersalnych, z zastosowaniem dużej ilości kynaru.

    https://hackaday.io/project/161333-polon-7880

    Bez większych problemów udało mi się na nim odpalić TinyBASIC-a, a potem
    dodać kontroler ekranu i klawiatury AT. Wszystko działało tak, jak powinno.

    W międzyczasie zacząłem projektować bardziej finalną wersję, zmontowaną
    na dwóch (finalnie trzech) płytkach drukowanych (ręcznie trawionych,
    jednostronnych, z dużą liczbą kynarowych mostków po stronie elementów).

    https://www.youtube.com/watch?v=CoANjd3YkHU
    https://github.com/marekw1986/POLON7880

    Ta wersja jest już bardziej rozbudowana - dodałem chociażby kontroler DMA.

    Po odpaleniu okazało się jednak, że występują pewne problemy. TinyBsic
    zgłasza się na porcie szeregowym. Jednak zazwyczaj komputer zawiesza się
    już po otrzymaniu pojedynczego znaku (i odesłaniu echa). Czasem jednak
    (bardzo rzadko) udawało mi się trafić na moment, kiedy komputer pracował
    na tyle długo, że udawało mi się wbić kawałek kodu w BASIC-u. Nigdy
    jednak nie pracował na tyle długo, żebym był w stanie wprowadzić choćby
    wypisywanie czegoś w pętli - komputer wieszał się zanim zdążyłem wykonać
    "RUN".

    Najwyraźniej problem jest związany z aktywnością użytkownika, bo jeśli
    nie będę robił nic po resecie, to komputer sam z siebie się nie zawiesi.
    Będzie czekał na wysłanie pierwszego znaku i (zazwyczaj) zawiesi się
    właśnie dopiero po odesłaniu echa.

    Początkowo sądziłem, że wina może leżeć po stronie zbyt cienkich kabli
    zasilających. Jednak po ich wyminie na znacznie grubsze problem wciąż
    występuje.

    Komputerek składa się z dwóch płytek. Jedna zawiera procesor, bufory
    szyny adresowej, pamięci RAM oraz ROM, dekoder adresów, a także jeden
    port wyjściowy za pomoc którego można migać dwiema diodami. Jeśli
    odpalam tę pojedynczą płytkę z jakimś prostym programem do migania
    diodami - wszystko zdaje się działać stabilnie.
    Problemy najwyraźniej pojawiają się po podpięciu drugiej płytki, która
    zwiera peryferia (DMA, RTC, UART 8251, timer 8253, kontroler klawiatury
    8242, kontroler przerwań 8259), przy próbie odpalenia TinyBasic'a.

    Czy możliwe, że winę za taki stan rzeczy ponoszą układy z rodziny 74HCT,
    zastosowane w dekoderach adresów i innej "pomocniczej" logice? Wydawało
    mi się, że są one zgodne ze starą elektroniką z czasów TTL, ale może
    jednak NMOS-y od CEMI nie bardzo będą z nimi współpracowały?
    Bo chyba pamięci SRAM na 100ns nie będą zbyt wolne dla systemu na 8080...

    Ktoś ma jakieś sugestie co do dalszego debugowania? Powinienem się
    czemuś przyjrzeć za pomoc analizatora stanów logicznych lub oscyloskopu?


  • 2. Data: 2021-07-21 18:16:59
    Temat: Re: Niestabilna praca komputera retro/DIY - rodziny układów logicznych?
    Od: Arrmii <a...@g...com>

    On Wednesday, July 21, 2021 at 5:16:12 PM UTC+2, Atlantis wrote:
    > Wróciłem ostatnio do jednego z moich starych projektów, komputerka retro
    > na polskim procesorze MCY7880.
    >
    [...]
    > Ktoś ma jakieś sugestie co do dalszego debugowania? Powinienem się
    > czemuś przyjrzeć za pomoc analizatora stanów logicznych lub oscyloskopu?

    weź oscyloskop i sprawdź jak wyglądają zbocza sygnałów. czy nie ma "dzwonienia", czy
    nie pojawiają sie oscylacje tam, gdzie powinien być stan stabilny. zakładam, że każdy
    układ ma odpowiedni kondensator blokujący.

    co do pamięci i czasu dostępu, to sprawdź analizatorem zależności czasowe pomiędzy
    sygnałami CE, RD i WR a stanami na szynie danych. 100ns wydaje się dość dużo, da się
    jakieś wait stat'y dodać w konfiguracji CPU?

    a.


  • 3. Data: 2021-07-21 23:49:22
    Temat: Re: Niestabilna praca komputera retro/DIY - rodziny układów logicznych?
    Od: Uzytkownik <a...@s...pl>

    W dniu 2021-07-21 o 17:16, Atlantis pisze:
    > Ta wersja jest już bardziej rozbudowana - dodałem chociażby kontroler
    > DMA.
    >
    > Po odpaleniu okazało się jednak, że występują pewne problemy. TinyBsic
    > zgłasza się na porcie szeregowym. Jednak zazwyczaj komputer zawiesza
    > się już po otrzymaniu pojedynczego znaku (i odesłaniu echa). Czasem
    > jednak (bardzo rzadko) udawało mi się trafić na moment, kiedy komputer
    > pracował na tyle długo, że udawało mi się wbić kawałek kodu w BASIC-u.
    > Nigdy jednak nie pracował na tyle długo, żebym był w stanie wprowadzić
    > choćby wypisywanie czegoś w pętli - komputer wieszał się zanim
    > zdążyłem wykonać "RUN".
    >
    > Najwyraźniej problem jest związany z aktywnością użytkownika, bo jeśli
    > nie będę robił nic po resecie, to komputer sam z siebie się nie
    > zawiesi. Będzie czekał na wysłanie pierwszego znaku i (zazwyczaj)
    > zawiesi się właśnie dopiero po odesłaniu echa.
    >
    > Początkowo sądziłem, że wina może leżeć po stronie zbyt cienkich kabli
    > zasilających. Jednak po ich wyminie na znacznie grubsze problem wciąż
    > występuje.
    >
    > Komputerek składa się z dwóch płytek. Jedna zawiera procesor, bufory
    > szyny adresowej, pamięci RAM oraz ROM, dekoder adresów, a także jeden
    > port wyjściowy za pomoc którego można migać dwiema diodami. Jeśli
    > odpalam tę pojedynczą płytkę z jakimś prostym programem do migania
    > diodami - wszystko zdaje się działać stabilnie.
    > Problemy najwyraźniej pojawiają się po podpięciu drugiej płytki, która
    > zwiera peryferia (DMA, RTC, UART 8251, timer 8253, kontroler
    > klawiatury 8242, kontroler przerwań 8259), przy próbie odpalenia
    > TinyBasic'a.
    >
    > Czy możliwe, że winę za taki stan rzeczy ponoszą układy z rodziny
    > 74HCT, zastosowane w dekoderach adresów i innej "pomocniczej" logice?
    > Wydawało mi się, że są one zgodne ze starą elektroniką z czasów TTL,
    > ale może jednak NMOS-y od CEMI nie bardzo będą z nimi współpracowały?
    > Bo chyba pamięci SRAM na 100ns nie będą zbyt wolne dla systemu na 8080...
    >
    > Ktoś ma jakieś sugestie co do dalszego debugowania? Powinienem się
    > czemuś przyjrzeć za pomoc analizatora stanów logicznych lub oscyloskopu?

    W pierwszej kolejności chciałbym pogratulować samozaparcia :)

    Układy HCT są robione w technologii CMOS. Teoretycznie są kompatybilne z
    układami TTL, które  zarówno pod względem topografii jak i napięć
    poziomów logicznych. Jednakże posiadają część wad układów CMOS czyli
    większe pojemności wejściowe, które wymagają przeładowania i zwiększenie
    czasó propagacji przy sterowaniu z układów TTL, wrażliwość  na
    pozostawienie niepodłączonych wejść oraz podłączenie do wyjść typu OC.
    HCT tak jak podstawowa seria CMOS musi mieć wejścia wszystkich bramek
    podłączone czy to do +Vcc lub GND. Także tych nieużywanych. Pozostawione
    takie, niepodłączone wejścia mogą generować zakłócenia pozostałych
    bramek w skutek nieustalonych stanów przejściowych, kiedy to układ mocno
    obciąża zasilanie.

    Widzę, że przy większości układów masz zblokowane zasilanie
    kondensatorami 100nF, ale nie wszystkie. W przypadku układów TTL jest to
    bardzo ważne.

    Szkoda, że nie zamieściłeś schematów.

    Sprzęgasz układy bezpośrednio? Używasz translatorów poziomów? Używasz
    jakieś układy w wersji OC np. drivery? Jakimi częstotliwościami taktujesz?


  • 4. Data: 2021-07-22 00:04:44
    Temat: Re: Niestabilna praca komputera retro/DIY - rodziny układów logicznych?
    Od: "J.F." <j...@p...onet.pl>

    Użytkownik "Atlantis" napisał w wiadomości grup
    dyskusyjnych:60f83a38$0$559$6...@n...neostrada.
    pl...
    >Wróciłem ostatnio do jednego z moich starych projektów, komputerka
    >retro na polskim procesorze MCY7880. Jego pierwotna wersja została
    >zmontowana na płytkach uniwersalnych, z zastosowaniem dużej ilości
    >kynaru.

    >https://hackaday.io/project/161333-polon-7880

    >Bez większych problemów udało mi się na nim odpalić TinyBASIC-a, a
    >potem dodać kontroler ekranu i klawiatury AT. Wszystko działało tak,
    >jak powinno.

    Czyli nalezy sie domyslac, ze schemat i program sa poprawne ?

    >W międzyczasie zacząłem projektować bardziej finalną wersję,
    >zmontowaną na dwóch (finalnie trzech) płytkach drukowanych (ręcznie
    >trawionych, jednostronnych, z dużą liczbą kynarowych mostków po
    >stronie elementów).

    >https://www.youtube.com/watch?v=CoANjd3YkHU
    >https://github.com/marekw1986/POLON7880

    >Ta wersja jest już bardziej rozbudowana - dodałem chociażby kontroler
    >DMA.

    A nie - to schemat niekoniecznie jest poprawny.
    Ale program sprawdzony...

    >Po odpaleniu okazało się jednak, że występują pewne problemy.
    >TinyBsic zgłasza się na porcie szeregowym. Jednak zazwyczaj komputer
    >zawiesza się już po otrzymaniu pojedynczego znaku (i odesłaniu echa).
    >Czasem jednak (bardzo rzadko) udawało mi się trafić na moment, kiedy
    >komputer pracował na tyle długo, że udawało mi się wbić kawałek kodu
    >w BASIC-u. Nigdy jednak nie pracował na tyle długo, żebym był w
    >stanie wprowadzić choćby wypisywanie czegoś w pętli - komputer
    >wieszał się zanim zdążyłem wykonać "RUN".

    >Najwyraźniej problem jest związany z aktywnością użytkownika, bo
    >jeśli nie będę robił nic po resecie, to komputer sam z siebie się nie
    >zawiesi. Będzie czekał na wysłanie pierwszego znaku i (zazwyczaj)
    >zawiesi się właśnie dopiero po odesłaniu echa.

    Tak ogolnie:
    -nie widze kondensatorow blokujacych, dodaj. troche elektrolitow na
    zasilaniu tez dodaj.
    -mam zle doswiadczenia z wieloplytkowcami, jakies cuda potrafia latac
    po masach.
    no ale duza ilosc komputerow tak zrobiona,
    -zwolnij zegar dwa razy - zobaczy sie, czy to jakas praca na krawedzi
    mozliwosci,
    -mozna probowac chlodzic czy podgrzewac elementy.


    Ale to mi wyglada na jakis inny problem - prawie dziala.
    "Zawieszenie" domyslam sie, ze diagnozujesz po tych migajacych
    diodach - to wcale nie musi byc prawdziwe zawieszenie.

    Dobrze byloby sprawdzic analizatorem czy oscyloskopem co sie dzieje w
    czasie takiego zawieszenia.

    A poza tym, to przeciez znasz pare powodow - luzna podstawka, podgieta
    nozka.

    >Komputerek składa się z dwóch płytek. Jedna zawiera procesor, bufory
    >szyny adresowej, pamięci RAM oraz ROM, dekoder adresów, a także jeden
    >port wyjściowy za pomoc którego można migać dwiema diodami. Jeśli
    >odpalam tę pojedynczą płytkę z jakimś prostym programem do migania
    >diodami - wszystko zdaje się działać stabilnie.
    >Problemy najwyraźniej pojawiają się po podpięciu drugiej płytki,
    >która zwiera peryferia (DMA, RTC, UART 8251, timer 8253, kontroler
    >klawiatury 8242, kontroler przerwań 8259), przy próbie odpalenia
    >TinyBasic'a.

    >Czy możliwe, że winę za taki stan rzeczy ponoszą układy z rodziny
    >74HCT, zastosowane w dekoderach adresów i innej "pomocniczej" logice?
    >Wydawało mi się, że są one zgodne ze starą elektroniką z czasów TTL,
    >ale może jednak NMOS-y od CEMI nie bardzo będą z nimi współpracowały?
    >Bo chyba pamięci SRAM na 100ns nie będą zbyt wolne dla systemu na
    >8080...

    >Ktoś ma jakieś sugestie co do dalszego debugowania? Powinienem się
    >czemuś przyjrzeć za pomoc analizatora stanów logicznych lub
    >oscyloskopu?

    Zobacz co sie dzieje na magistrali. Czyta rozkazy czy nie, z jakich
    adresow.

    J.


  • 5. Data: 2021-07-22 10:09:31
    Temat: Re: Niestabilna praca komputera retro/DIY - rodziny układów logicznych?
    Od: Atlantis <m...@w...pl>

    On 22.07.2021 00:04, J.F. wrote:

    > Czyli nalezy sie domyslac, ze schemat i program sa poprawne ?

    Zarówno jedno, jak i drugie jest dostępne na GitHubie - link wrzuciłem w
    pierwszej wiadomości w tym temacie.
    Od wczoraj przeprowadziłem kilka eksperymentów. Udało mi się stwierdzić,
    że z jakiegoś powodu usunięcie kontrolera klawiatury 8242 przywraca
    prawidłową pracę komputera. W kodzie kontroler nie jest ani inicjowany,
    ani używany (wszystkie wywołania procedur z nim związanych są
    zakomentowane). Układ ten co prawda steruje jeszcze bramkami dwóch
    timerów z 8253 (tym odpowiedzialnym za zliczanie "ticków" oraz
    generowanie dźwięku) ale te funkcje także nie są wykorzystywane. Nie
    uruchomiłem także jeszcze kontrolera przerwań 8259, który nie jest
    inicjowany, a globalne przerwania są wyłączone.



    > Tak ogolnie:
    > -nie widze kondensatorow blokujacych, dodaj. troche elektrolitow na
    > zasilaniu tez dodaj.

    Kondensatory blokujące jak najbardziej są. Elektrolitów również trochę
    zastosowałem. Po prostu na schemacie nie są umieszczone przy układach,
    ale wydzielone na osobnym bloku (górna część schematów).


  • 6. Data: 2021-07-22 10:15:04
    Temat: Re: Niestabilna praca komputera retro/DIY - rodziny układów logicznych?
    Od: Atlantis <m...@w...pl>

    On 21.07.2021 23:49, Uzytkownik wrote:

    > W pierwszej kolejności chciałbym pogratulować samozaparcia :)

    Dziękuję. ;)


    > Widzę, że przy większości układów masz zblokowane zasilanie
    > kondensatorami 100nF, ale nie wszystkie. W przypadku układów TTL jest to
    > bardzo ważne.

    Opierasz się na nagraniu z YouTube'a? Spokojnie, kondensatory blokujące
    są przy wszystkich układach, przynajmniej mam nadzieję, że żadnego nie
    pominąłem. Po prostu nie widać wszystkich, ponieważ dla ułatwienia
    montażu (i oszczędzenia sobie wiercenia) w większości przypadków
    zastosowałem kondensatory SMD po drugiej stronie płytki. ;)


    > Szkoda, że nie zamieściłeś schematów.

    Są na GotHubie, do którego link wrzuciłem w pierwszej wiadomości.


    > Sprzęgasz układy bezpośrednio? Używasz translatorów poziomów? Używasz
    > jakieś układy w wersji OC np. drivery? Jakimi częstotliwościami taktujesz?

    Nie używam driverów OC. To znaczy w paru miejscach miałem linie OC
    (chyba przerwanie RTC miało wyjście tego typu), to dawałem tam rezystory
    podciągające. Częstotliwość taktowania dość standardowa dla systemów z
    8080 - coś koło 1,8 MHz. Dokładnie nie pamiętam, sprawdzę.


  • 7. Data: 2021-07-22 12:04:49
    Temat: Re: Niestabilna praca komputera retro/DIY - rodziny układów logicznych?
    Od: Atlantis <m...@w...pl>

    Zrobiłem jeszcze kilka testów. Okazuje się, że próba włączenia przerwań
    także blokuje komputer, przy czym dzieje się to w nieco inny sposób, niż
    w przypadku 8242.

    1) Jeśli zostawię w podstawce 8242, to komputer (zazwyczaj) wyświetla
    test powitalny i czeka na polecenia. Zawiesza się (zwykle) po
    wprowadzeniu pierwszego znaku i odesłaniu echa. W rzadkich przypadkach
    działa na tyle długo, że mogę wprowadzić więcej.
    2) Jeśli próbuję uruchomić przerwania (konfiguracja 8259 + instrukcja
    EI) komputer zawiesza się już po włączeniu zasilania i nie dochodzi
    nawet do napisu powitalnego.

    Nie sądzę, aby obydwa przypadki były ze sobą związane, chociaż wykluczyć
    tego nie mogę. Podejrzewam, że problem z przerwaniami może wynikać z
    faktu, że pomyliłem się przenosząc projekt z prototypu. Jeszcze raz
    rzucę na to okiem.

    Co powoduje problem z kontrolerem klawiatury - nie mam pojęcia.
    Teoretycznie dwie linie GPIO układu 8242 są wykorzystane do sterowania
    bramkami timera 8253 (konkretnie tymi odpowiedzialnymi za dźwięk oraz
    "systick"). Niemniej problem występuje nawet wtedy, gdy przerwania są
    wyłączne, a więc żaden timer nie powinien zablokować systemu.


  • 8. Data: 2021-07-24 09:42:15
    Temat: Re: Niestabilna praca komputera retro/DIY - rodziny układów logicznych?
    Od: Atlantis <m...@w...pl>

    Problem z przerwaniami udało mi się rozwiązać. Okazało się, że był
    zupełnie programowy - przenosząc kod z prototypu o nieco innej
    architekturze (która przejawiała się nieco innym układem połączeń
    przerwań z poszczególnych urządzeń) pomyliłem się przy ustawianiu maski
    aktywnych przerwań. Dodatkowo debugowania nie ułatwił fakt, że razem z
    8042 podczas testów usunąłem znajdujący się przy nim 7406 zapominając,
    że jeden z inwerterów użyłem na linii przerwania RTC.

    Problemu z kontrolerem klawiatury nie udało mi się rozwiązać. Komputer
    nadal wiesza się, jeśli włożę 8242 w podstawkę.


  • 9. Data: 2021-07-24 12:39:33
    Temat: Re: Niestabilna praca komputera retro/DIY - rodziny układów logicznych?
    Od: "J.F." <j...@p...onet.pl>

    Dnia Sat, 24 Jul 2021 09:42:15 +0200, Atlantis napisał(a):
    > Problem z przerwaniami udało mi się rozwiązać. Okazało się, że był
    > zupełnie programowy - przenosząc kod z prototypu o nieco innej
    > architekturze (która przejawiała się nieco innym układem połączeń
    > przerwań z poszczególnych urządzeń) pomyliłem się przy ustawianiu maski
    > aktywnych przerwań. Dodatkowo debugowania nie ułatwił fakt, że razem z
    > 8042 podczas testów usunąłem znajdujący się przy nim 7406 zapominając,
    > że jeden z inwerterów użyłem na linii przerwania RTC.

    Jak to mowia - zrodlo problemu jest z reguly pol metra od monitora :-)

    > Problemu z kontrolerem klawiatury nie udało mi się rozwiązać. Komputer
    > nadal wiesza się, jeśli włożę 8242 w podstawkę.

    Szukaj dalej, pewnie jest przyczyna.

    J.



  • 10. Data: 2021-07-24 12:45:41
    Temat: Re: Niestabilna praca komputera retro/DIY - rodziny układów logicznych?
    Od: "J.F." <j...@p...onet.pl>

    Dnia Thu, 22 Jul 2021 10:09:31 +0200, Atlantis napisał(a):
    > On 22.07.2021 00:04, J.F. wrote:
    >> Czyli nalezy sie domyslac, ze schemat i program sa poprawne ?
    >
    > Zarówno jedno, jak i drugie jest dostępne na GitHubie - link wrzuciłem w
    > pierwszej wiadomości w tym temacie.

    Ale ile osob zrealizowalo i potwierdzilo, ze dziala ?

    A tak w ogole - rzuc to hobby, zajmij sie ARM, to ma jakas przyszlosc
    :-)

    >> Tak ogolnie:
    >> -nie widze kondensatorow blokujacych, dodaj. troche elektrolitow na
    >> zasilaniu tez dodaj.
    >
    > Kondensatory blokujące jak najbardziej są. Elektrolitów również trochę
    > zastosowałem. Po prostu na schemacie nie są umieszczone przy układach,
    > ale wydzielone na osobnym bloku (górna część schematów).

    Patrzylem na tym filmie z YT.

    J.

strony : [ 1 ] . 2 ... 4


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: