Popularny post atlantis86 Napisano Styczeń 13, 2019 Popularny post Udostępnij Napisano Styczeń 13, 2019 (edytowany) Zdecydowałem się przestawić swój kolejny projekt utrzymany w klimatach retro. Wszystko zaczęło się jakiś rok temu, gdy przypadkowo odkryłem, że sprzedawcy na popularnych chińskim serwisie aukcyjnym posiadają podejrzanie duże ilości podejrzanie tanich układów MOS6502. Wydało mi się to zbyt piękne, aby było prawdziwe. Z ciekawości zamówiłem kilka sztuk, płacąc za nie kilka dolarów i zapomniałem o całej sprawie, licząc na to, że pewnie otrzymam podróbki z wygrawerowanymi laserowo oznaczeniami. Jak bardzo się myliłem! Po uruchomieniu na płytce prototypowej okazały się być prawdziwymi układami MOS6502, wykonanymi w technice NMOS. Zabrałem się więc za projektowanie właściwej płytki, myśląc o stworzeniu swojego własnego komputera pracującego pod kontrolą języka BASIC. Ten projekt ciągle jest w realizacji, ale nie o nim chcę tutaj napisać. W międzyczasie bowiem w mojej głowie pojawił się jeszcze jeden pomysł. Chciałem sprawdzić jak ta rodzina procesorów sprawdza się w roli mikrokontrolera. Albo innymi słowy - byłem ciekaw co by było, gdyby Arduino powstało trzydzieści lat temu. 😉 Tym razem od brytyjskiego sprzedawcy na eBay-u zamówiłem kilka sztuk nowszych procesorów WDC65C02, wykonanych w technologii CMOS. Zastosowanie tej wersji układów nie tylko zmniejszało znacznie pobór prądu, ale także upraszczało układ, niwelując konieczność stosowania bufora szyny adresowej. Za punkt wyjścia do tego projektu posłużyła płyta procesorowa mojego ciągle powstającego komputera na MOS6502, która została poddana pewnym modyfikacjom. Przede wszystkim zmieniła się organizacja pamięci - zwiększyłem ilość EPROM-u kosztem RAM-u, dodana została także pamięć EEPROM. Organizacja pamięci wygląda następująco, zaczynając od 0x000: 8 kB pamięci RAM 8 kB przestrzeni adresowej I/O 8 kB pamięci EEPROM 8 kB układ EPROM (dodatkowa pamięć, obecnie niewykorzystywana) 32 kB EPROM (główna pamięć, przechowująca program, dane i adresy wektorów) Urządzenie pracuje z prędkością 4 MHz. Sygnał taktowania pochodzi z jednoukładowego generatora kwarcowego. Układ DS1232 odpowiada za obsługę wejścia RST (likwidacja drgań styków i obsługa power-on reset). Urządzenie posiada także port wyjściowy na 74HCT373 - można za jego pomocą migać dwiema diodami, pozostałe linie są wyprowadzone na złącze IDC-40. Dekoder adresów jest zrealizowany na układach 74HCT138 i 74HCT139. Dodatkowo kilka bramek układu 74HCT00 posłużyło do generowania sygnałów !RD i !WR, wykorzystywanych w układach kompatybilnych z magistralą intela (a więc także zastosowanych pamięciach). Wszystkie sygnały szyny danych, adresowej, te związane z obsługą przerwań oraz wyjścia dekodera adresów są wyprowadzone na złącze IDC-40. Moim zamiarem było stworzenie płytki, która nie tylko będzie mogła służyć do eksperymentów z historyczną rodziną procesorów, ale także będzie mogła posłużyć jako podstawa do budowy jakiegoś użytecznego projektu, poprzez dodanie odpowiednich modułów, na wzór shieldów Arduino - z tą różnicą, że podpinanych bezpośrednio do magistrali procesora za pomocą taśmy IDC-40. Na pierwszy ogień poszła płytka zawierająca wyświetlacz HD44780 (4x20) oraz kilka przycisków tact switch. Wyświetlacz pracuje bezpośrednio na magistrali procesora - do tego w końcu został zaprojektowany. Konieczne było tylko dodanie prostej logiki, generującej sygnały sterujące. Od strony programowej obsługa wyświetlacza w takich systemach jest nawet prostsza niż obecnie - wystarczy jedynie wpisywać odpowiednie wartości pod odpowiednie adresy w przestrzeni adresowej procesora. Przyciski posiadają własny port wejściowy, zrealizowany na 74HCT245. Praca nad tym projektem była dla mnie także okazją do zapoznania się z asemblerem 6502, chociaż prawdę mówiąc większość kodu napisałem w C posługując się kompilatorem cc65, uzupełniając go o asemblerowe wstawki. Co prawda jest to dość prosty kompilator i być może nie nadaje się do pisania gier pod Commodore C64, ale w w tego typu zastosowaniach sprawdza się całkiem nieźle. Edytowano Styczeń 13, 2019 przez Treker Poprawiłem formatowanie. 9 Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Styczeń 13, 2019 Udostępnij Styczeń 13, 2019 Właśnie zaakceptowałem Twój opis, możesz go teraz zgłosić do akcji rabatowej umieszczając link w temacie zbiorczym. Dziękuję za przedstawienie ciekawego projektu, zachęcam do prezentowania kolejnych DIY oraz aktywności na naszym forum 🙂 Link do komentarza Share on other sites More sharing options...
Gieneq Styczeń 13, 2019 Udostępnij Styczeń 13, 2019 Gratuluję ciekawego projektu! 46 minut temu, atlantis86 napisał: Albo innymi słowy - byłem ciekaw co by było, gdyby Arduino powstało trzydzieści lat temu. Czyli dałoby się 😎 1 Link do komentarza Share on other sites More sharing options...
atlantis86 Styczeń 13, 2019 Autor tematu Udostępnij Styczeń 13, 2019 (edytowany) 46 minut temu, Gieneq napisał: Gratuluję ciekawego projektu! Dziękuję. 🙂 Cytat Czyli dałoby się 😎 Już się nad tym zastanawiałem i pewnie dałoby się bardziej. To znaczy gdyby EPROM-y zastąpić równoległymi EEPROM-ami i napisać jakiś bootloader, to teoretyczne wsad można by ładować przez RS232. Oczywiście wówczas UART musiałbym znaleźć na płytce trochę miejsca dla odpowiedniego kontrolera i konwertera poziomów. Stwierdziłem jednak, że to gra niewarta świeczki, bo i tak nie osiągnąłbym dostatecznego podobieństwa do współczesnego Arduino, o kompatybilności programowej nawet nie wspominając. Powód jest prosty - nie dosyć, że pakiet cc65 nie posiada kompilatora C++, to jeszcze pisząc w czystym C trzeba się liczyć z paroma kompromisami. Pozostaję więc przy klasycznej metodzie programowania EPROM-ów. Edytowano Styczeń 13, 2019 przez atlantis86 2 Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
xor Luty 7, 2019 Udostępnij Luty 7, 2019 (edytowany) A po co to komu? 😉 Może się mylę, ale małe procesory są fajne bo mają mały pobór energii. Ile twój komputer będzie działał na jednym paluszku? A może na panelu słonecznym? Zastanawiam się nad takim tamagotchi. Ale to wielkie, chcesz zrobić komputer. W sumie pomysł od czapy więc mi się podoba, ale ten procek nie ma MMU więc będzie mógł miec jeden program na raz. Zostaje zatem albo terminal, zegar czy wlasnie tamagotchi. Albo jakieś urzadzenie. Może jakis wyświetlacz? Taki mechaniczny albo magnetyczny. Spokojnie by sie nadawał. A moze programowany SDR? Edytowano Luty 8, 2019 przez Treker Poprawiłem formatowanie. Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »