Goto page 1, 2 Next
Atlantis
Guest
Thu Aug 09, 2018 11:19 am
Kontynuuję swoją zabawę z antycznym procesorem.
Wytrawiłem i złożyłem płytkę zawierającą CPU, pamięci i parę innych
układów. W dekoderze adresów i układzie przełączania banków pracują
układy z serii HCT i LS. Szyna adresowa jest podłączona bezpośrednio do
pamięci i wejść dekodera - bufory (74HCT245) dałem dopiero przed
złączem, do którego w przyszłości zamierzam podłączyć inne moduły.
Płytka jest jednostronna, więc sporo sygnałów musiałem puścić mostkami,
gdzieniegdzie masa i zasilanie zostały puszczone w ten sam sposób.
Wszystkie połączenia sprawdziłem wiele razy. Wygląda jednak na to, że
urządzenie nie działa prawidłowo. To znaczy działa wybitnie niestabilnie.
Odpaliłem prosty program migający dwiema diodami podłączonymi do
74LS373. Działał on jako tako w momencie, gdy program był prostą pętlą,
niekorzystającą z żadnych wywołań funkcji (taka zmiana skutkowała
zupełnie chaotycznym zachowaniem LED-ów). Jedyne co zaobserwowałem, to
zauważalne zwalnianie tempa migani po położeniu palca na jednym z
układów 74HCT00 (układ generujący sygnały WR i RD + jedna bramka w roli
inwertera wykorzystywanego w dekoderze adresów).
Wylutowałem ten układ i zastąpiłem go gniazdkiem. Próbowałem podmienić
go na inne egzemplarze. Na wersji LS i zwykłym UCY7400 w ogóle nie
działa (diody nie migają).
Dziwne jest jednak to, że po włożeniu w podstawkę 74HCT00 układ nie
zaczął się zachowywać tak, jak na początku. Diody co prawda migają, ale
dużo wolniej i nieregularnie, nieraz "przeskakując" swoją kolejkę.
Sytuacja znacznie poprawia się po dotknięciu masy palcem albo
podłączeniu oscyloskopu do masy.
Ktoś orientuje się co może odpowiadać za takie zachowanie? Jak to
zdebugować?
Próbowałem już poprawić "podejrzane" mostki masy, zastępując je
izolowanymi przewodami, podłączonymi bliżej gniazdka zasilana.
Może mieć znaczenie fakt, że pole masy tworzy "pierścień na obrzeżu płytki?
J.F.
Guest
Thu Aug 09, 2018 12:06 pm
Użytkownik "Atlantis" napisał w wiadomości grup
dyskusyjnych:5b6c2338$0$679$65785112@news.neostrada.pl...
Ech, przypomniales mi dawne czasy.
Plytka nie dziala, a na oscyloskopie wszytko w porzadku.
Z oscyloskopem dziala, a bez oscyloskopu nie dziala.
Doszedlem do tego, ze wystarczylo podlaczyc mase od oscyloskopu i
dziala :-)
Zeby bylo smieszniej - to byl interfejs magnetofonu do Atari, ktory
jak wiadomo 6502 mial :-)
Quote:
Wytrawiłem i złożyłem płytkę zawierającą CPU, pamięci i parę innych
układów. W dekoderze adresów i układzie przełączania banków pracują
układy z serii HCT i LS. Szyna adresowa jest podłączona bezpośrednio
do
pamięci i wejść dekodera - bufory (74HCT245) dałem dopiero przed
złączem, do którego w przyszłości zamierzam podłączyć inne moduły.
Tak w ogolnosci - o ile dobrze pamietam, to 6502 byl elektrycznie
"slaby" i obciazanie wieloma ukladami LS nie jest wskazane.
Quote:
Płytka jest jednostronna, więc sporo sygnałów musiałem puścić
mostkami,
gdzieniegdzie masa i zasilanie zostały puszczone w ten sam sposób.
Tez sie moze mscic.
Kondensatorowo nie zalowales przy tym ?
Quote:
Odpaliłem prosty program migający dwiema diodami podłączonymi do
74LS373. Działał on jako tako w momencie, gdy program był prostą
pętlą,
niekorzystającą z żadnych wywołań funkcji (taka zmiana skutkowała
zupełnie chaotycznym zachowaniem LED-ów).
Sugeruje problemy z RAM. Adres powrotu na stosie jest w RAM.
Quote:
Jedyne co zaobserwowałem, to
zauważalne zwalnianie tempa migani po położeniu palca na jednym z
układów 74HCT00 (układ generujący sygnały WR i RD + jedna bramka w
roli
inwertera wykorzystywanego w dekoderze adresów).
Na HCT uwazaj - one maja obnizone progi napiec na wejsciu, dostosowane
to standardu wyjsc TTL.
Z 6502 tez powinny dzialac, ale jesli on jakis przeciazony i w
standardzie sie nie miesci ...
Quote:
Ktoś orientuje się co może odpowiadać za takie zachowanie? Jak to
zdebugować?
W pierwszej kolejnosci - przejdz na nizsza czestotliwosc.
Moze problemy ustapia.
Quote:
Próbowałem już poprawić "podejrzane" mostki masy, zastępując je
izolowanymi przewodami, podłączonymi bliżej gniazdka zasilana.
To tez niekoniecznie pomoze.
Quote:
Może mieć znaczenie fakt, że pole masy tworzy "pierścień na obrzeżu
płytki?
Raczej nie.
Ja bym raczej dodal troche polaczen, zeby ta masa byla "kratką".
Ale czy to pomoze ... nie obiecuje.
J.
Atlantis
Guest
Thu Aug 09, 2018 12:33 pm
Sebastian BiaĹy
Guest
Thu Aug 09, 2018 1:20 pm
On 8/9/2018 1:19 PM, Atlantis wrote:
Quote:
Sytuacja znacznie poprawia się po dotknięciu masy palcem albo
podłączeniu oscyloskopu do masy.
1. Jedna z lini input procesora/pamięci badź czegokolwiek wisi sobie w
powietrzu.
2. Zabrakło kondensatorów na zasilaniu, dolutuj na pająka w poprzek
scalaków.
Zainteresuj się tym:
https://pl.aliexpress.com/wholesale?catId=0&initiative_id=SB_20180809051854&SearchText=logic+probe+ttl
Cudo to nie jest ale potrafi wykryć niepodpięte wejścia i ogólnie się
przydaje w takich sytuacjach.
Atlantis
Guest
Thu Aug 09, 2018 1:48 pm
On 09.08.2018 15:20, Sebastian Biały wrote:
Quote:
1. Jedna z lini input procesora/pamięci badź czegokolwiek wisi sobie w
powietrzu.
Wielkie dzięki. Dosłowne strzał w dziesiątkę. Problem tkwił w projekcie,
podczas gdy ja szukałem czegoś związanego z prowadzeniem masy albo
zasilania.
Jak się okazuje błąd pojawił się jeszcze na etapie rysowania schematu w
Eagle - dwa sygnały stykały się ze sobą, ale nie zostały połączone -
właśnie przy tym nieszczęsnym 7400.
Atlantis
Guest
Sun Aug 12, 2018 6:12 pm
Hmm... Mam jeszcze jedną "zagadkę" związaną z tym układem.
Poprawiłem zauważone błędy, poprzednio opisany problem zniknął.
Zauważyłem jednak pewną inną "anomalię". Mianowicie w pamięci EPROM był
wgrany prosty program do migania LED-ami. z dwiema zagnieżdżonymi
pętlami opóźniającymi zmniejszającymi wartość rejestru. Program działał
prawidłowo, ale zauważyłem jedną dziwną rzecz.
Raz na jakiś czas (mniej więcej jedno na dziesięć podpięć zasilania)
diody migały szybciej, niż powinny. Czasem była to normalna szybkość x2,
czasem x4, czasem więcej. Zresetowanie mikroprocesora NIE przywracało
normalnego tempa.
Moje pierwsze podejrzenie dotyczyło generatora, jednak test z
oscyloskopem wykazał, że podczas wystąpienia anomalii przebieg taktujący
wygląda zupełnie normalnie.
Teraz zmieniłem wsad - zamiast pętli opóźniającej mam zmienną funkcję
pełniącą funkcję timera. Od chwili wykasowania i ponownego
zaprogramowania pamięci problem nie wystąpił.
Co mogło być przyczyną takiego dziwnego zachowania? Czy uszkodzenie
zawartości pamięci przez promienie słoneczne jest prawdopodobnym
wyjaśnieniem? Przez weekend płytka stała na stole, tuż przy oknie.
Sebastian BiaĹy
Guest
Sun Aug 12, 2018 6:47 pm
On 8/12/2018 8:12 PM, Atlantis wrote:
Quote:
Teraz zmieniłem wsad - zamiast pętli opóźniającej mam zmienną funkcję
pełniącą funkcję timera.
Co to jest zmienna funkcja?
Stawiam na niezainicjowana zmienną w ram.
Quote:
Co mogło być przyczyną takiego dziwnego zachowania? Czy uszkodzenie
zawartości pamięci przez promienie słoneczne jest prawdopodobnym
wyjaśnieniem?
Kasowalem kiedyś epromy słońcem, ale trwało to kilka dni i zazwyczaj
kończyło sie w 50%. Niektórych w ogóle nie dało się skasować.
Atlantis
Guest
Sun Aug 12, 2018 7:07 pm
On 12.08.2018 20:47, Sebastian Biały wrote:
Quote:
Co to jest zmienna funkcja?
Tak to jest, jak się edytuje wiadomość i potem tego nie czyta.
Chodziło mi o zmienną pełniącą funkcję timera. Czyli mam w pamięci
zmienną szesnastobitową, która jest zmniejszana i jeśli dojdzie do zera,
wykonuje się kod zapalający lub gaszący diodę.
Quote:
Stawiam na niezainicjowana zmienną w ram.
Wersja ze zmienną akurat działa ok. Problemy były z prostszym wsadem,
gdzie była tylko pętla opóźniająca na rejestrach X i Y.
Quote:
Kasowalem kiedyś epromy słońcem, ale trwało to kilka dni i zazwyczaj
kończyło sie w 50%. Niektórych w ogóle nie dało się skasować.
Chodzi mi o to, czy wystawienie EPROM-u na działanie słońca (właśnie
przez kilka dni, poprzez położenie go koło okna) może w teorii
spowodować niestabilne działania programu? A konkretnie działanie
niestabilne w ten konkretny sposób, gdy czasem po włączeniu do zasilania
program zaczyna zachowywać się dziwnie?
Bop nic innego nie przychodzi mi do głowy. Skoro generator sygnału
taktującego był ok, a program robił to co powinien (tyko czasem
szybciej) to mam wrażenie, że raz na ileś tam włączeń musiało się dziać
coś, co sprawiało, że błędnie interpretowana była wartość, którą
reinicjowany był rejestr po zakończeniu przebiegu pętli.
Sebastian BiaĹy
Guest
Sun Aug 12, 2018 7:19 pm
On 8/12/2018 9:07 PM, Atlantis wrote:
Quote:
Stawiam na niezainicjowana zmienną w ram.
Wersja ze zmienną akurat działa ok. Problemy były z prostszym wsadem,
gdzie była tylko pętla opóźniająca na rejestrach X i Y.
Która była ładowana z czego?
Ponadto jednak w tego typu projekcie wykluczyłbym najpierw hardware.
6502 można solidnie przetaktować przez zniekształcony sygnał zegarowy,
wtedy częśc funkcjonalności nie działa a takim małym programie czasem
nie widać że np. się sam resetuje. Jak wygląda generator zegara?
Quote:
Chodzi mi o to, czy wystawienie EPROM-u na działanie słońca (właśnie
przez kilka dni, poprzez położenie go koło okna) może w teorii
spowodować niestabilne działania programu? A konkretnie działanie
niestabilne w ten konkretny sposób, gdy czasem po włączeniu do zasilania
program zaczyna zachowywać się dziwnie?
Wątpliwe. Nie dość że za krotko to jeszcze epromy nie mają w zwyczaju
wracać jak już się ustawia na 1.
Quote:
Bop nic innego nie przychodzi mi do głowy. Skoro generator sygnału
taktującego był ok, a program robił to co powinien (tyko czasem
szybciej) to mam wrażenie, że raz na ileś tam włączeń musiało się dziać
coś, co sprawiało, że błędnie interpretowana była wartość, którą
reinicjowany był rejestr po zakończeniu przebiegu pętli.
Niezainicjowania zmienna/rejestr, błąd w sofcie. Mozliwe, choć watpliwe
że wina asemblera/kompilatora. Czego używasz?
Pokaż źródła jednego i drugiego. Jeszcze coś pamiętam z asm 6502.
Sebastian BiaĹy
Guest
Sun Aug 12, 2018 7:26 pm
On 8/12/2018 9:07 PM, Atlantis wrote:
Quote:
Bop nic innego nie przychodzi mi do głowy.
Jesli to problem z hardware warto zerknąc tutaj:
https://github.com/Klaus2m5/6502_65C02_functional_tests
Mała uwaga: miałem w ręku uszkodzony 6510 bodaj, wydłubany z C64 na
którym Kernal nie wstawał tylko sobie wisiał, ale kolory na ekranie są
poprawne czyli część kodu wykonał. Okazało się przy zabawie że coś było
w środku popsute co powodowało że jedna z instrukcji, jakiś prostych jak
TAX czy podobna powodowała halt procesora. Zdiagnozował to kolega, wiele
więcej nie wiem, ale lata potem doczytalem że ludzie bawiący się naprawą
retro czasami trafiają na egzemplarze które "prawie działają". Hipoteza
jest taka że maskrom w cpu do zarządzania bebechami czasem gubi bit ze
starości, naprężeń, chemitrails czy innych neutrin.
Atlantis
Guest
Sun Aug 12, 2018 7:43 pm
Atlantis
Guest
Sun Aug 12, 2018 7:51 pm
I jeszcze jedno, czy hipotetycznie powodem (lub jednym z powodów) takiej
niestabilności może być fakt zasilania tego z 5V stabilizowanego
zasilacza impulsowego?
Sebastian BiaĹy
Guest
Sun Aug 12, 2018 8:04 pm
On 8/12/2018 9:51 PM, Atlantis wrote:
Quote:
I jeszcze jedno, czy hipotetycznie powodem (lub jednym z powodów) takiej
niestabilności może być fakt zasilania tego z 5V stabilizowanego
zasilacza impulsowego?
Jak chiński to może. Dodaj solidny elektrolit, najlepiej mały i duzy na
zasilaniu.
Sebastian BiaĹy
Guest
Sun Aug 12, 2018 8:12 pm
J.F.
Guest
Sun Aug 12, 2018 8:21 pm
Dnia Sun, 12 Aug 2018 21:07:36 +0200, Atlantis napisał(a):
Quote:
On 12.08.2018 20:47, Sebastian Biały wrote:
Kasowalem kiedyś epromy słońcem, ale trwało to kilka dni i zazwyczaj
kończyło sie w 50%. Niektórych w ogóle nie dało się skasować.
Chodzi mi o to, czy wystawienie EPROM-u na działanie słońca (właśnie
przez kilka dni, poprzez położenie go koło okna) może w teorii
spowodować niestabilne działania programu?
Moze
Quote:
A konkretnie działanie
niestabilne w ten konkretny sposób, gdy czasem po włączeniu do zasilania
program zaczyna zachowywać się dziwnie?
Ale nie tak, ze raz po wlaczeniu petla dziala dobrze, a innym razem
nie.
Quote:
Bop nic innego nie przychodzi mi do głowy. Skoro generator sygnału
taktującego był ok, a program robił to co powinien (tyko czasem
szybciej) to mam wrażenie, że raz na ileś tam włączeń musiało się dziać
coś, co sprawiało, że błędnie interpretowana była wartość, którą
reinicjowany był rejestr po zakończeniu przebiegu pętli.
.... hm, a eproma zakleiles ?
Moze to oswietlenie mu przeszkadzalo i sie zmienialo ?
J.
Goto page 1, 2 Next