Jak już parę razy pisałem od jakiegoś czasu eksperymentuję ze starymi systemami mikroprocesorowymi. Powody nie są praktyczne, a czysto dydaktyczne - to okazja do bardziej niskopoziomowego wejścia w tę tematykę i rozpoczęcie zabawy z asemblerem. Jakiś czas temu wykonałem płytkę bazową z WDC65C02:
Zarówno stronę sprzętową, jak i programową udało mi się już przetestować na jednym projekcie - przyciski działają w nim prawidłowo. Problemy zaczęły się natomiast, gdy spróbowałem przenieść to samo rozwiązanie do innego projektu. Tam zastosowałem ten sam układ, z tą jedną różnicą, że przyciski i magistrala są podłączone do 245 z odwrotnej strony, ale to nie powinno mieć znaczenia, bo odpowiednio zmieniony został stan na wejściu DIR.
Okazało się jednak, że w tym drugim urządzeniu to rozwiązanie nie chce już działać. To znaczy przyciski niby działają - ich wciśnięcia sa rejestrowane przez program, ale jednocześnie pojawia się niestabilność systemu. Po pierwsze pojawiają się fałszywe sygnały z przycisków, po drugie urządzenie zaczyna działać niestabilnie i co jakiś czas resetuje się. Problem znika, jeśli zakomentuję linie odpowiedzialne za sprawdzanie stanu przycisków.
Na chwilę obecną sprawdziłem już następujące kwestie:
- Na pewno port wejściowy jest podłączony do prawidłowego wyjścia dekodera adresów i w programie sprawdzany jest właściwy, odpowiadający mu adres.
- Na pewno na wejściu DIR wymuszony jest właściwy stan i przyciski podłączone są do wejść układu 245, a magistrala danych do jego wyjść.
- Do tego samego dekodera adresów (74HCT138) na płytce podłączone jest także jeszcze jedno urządzenie (wyświetlacz hd44780) i ono działa prawidłowo.
- Przyciski są podciągnięte do VCC. Próbowałem zmniejszyć wartości rezystorów podciągających z 10k do 3,3k - nie pomogło.
- Próbowałem wymienić 245 na inny egzemplarz. Wymieniłem także towarzyszące mu bramki 74HCT00. Nie pomogło.
Spróbuję jeszcze wymienić dekoder adresów (138), ale powoli już kończą mi się pomysły. Ktoś ma może pomysł, gdzie jeszcze mogę szukać przycyzny?