Spisu treści:

6502 i 6522 Minimalny komputer (z Arduino MEGA) Część 2: 4 kroki
6502 i 6522 Minimalny komputer (z Arduino MEGA) Część 2: 4 kroki

Wideo: 6502 i 6522 Minimalny komputer (z Arduino MEGA) Część 2: 4 kroki

Wideo: 6502 i 6522 Minimalny komputer (z Arduino MEGA) Część 2: 4 kroki
Wideo: История о непростых дисководах Commodore , сборка и тест бюджетного эмулятора Pi1541 | Commodore 64 2024, Lipiec
Anonim
6502 i 6522 Minimalny komputer (z Arduino MEGA) część 2
6502 i 6522 Minimalny komputer (z Arduino MEGA) część 2

Kontynuując mój poprzedni Instructable, umieściłem teraz 6502 na płytce z paskiem i dodałem uniwersalny adapter interfejsu 6522 (VIA). Ponownie używam wersji WDC 6522, ponieważ idealnie pasuje do ich 6502. Te nowe układy nie tylko zużywają znacznie mniej energii niż oryginalne wersje MOS, ale mogą być uruchamiane z mniejszymi prędkościami lub nawet przechodzić przez program bez żadnych problemów.

Program Arduino został pierwotnie napisany przez Bena Eatera (który ma wiele filmów na YouTube) i został zmodyfikowany przeze mnie, aby osiągnąć ten wynik.

Kieszonkowe dzieci

1 x procesor WDC W65C02

1 x uniwersalny adapter interfejsu WDC W65C22

1 x 74HC00N IC (czterowejściowa bramka NAND) lub podobny

1x10 cm szerokości (35 linii) Stripboard

2 x 40-pinowe gniazda DIL

1 x 14-pinowe gniazdo DIL

Szpilki PCB 2,54 mm

Gniazda do PCB 2,54 mm

1x12mm chwilowy dotykowy przełącznik wciskany PCB montowany SPST lub podobny;

1 x rezystor 1K

1 x rezystor 3K3

Kondensatory ceramiczne 2 x 0,1 uF

1x8-drożna lampka wodna 5mm czerwona dioda LED

Różne kolorowe przewody do połączeń

8 męskich - męskich przewodów łączących

Krok 1: Płytka drukowana

Płytka drukowana
Płytka drukowana
Płytka drukowana
Płytka drukowana

Płytka drukowana jest dość kompaktowa, a jej spód jest podłączany bezpośrednio do Arduino MEGA. Aby to osiągnąć, kołki są wsuwane jak najgłębiej w plastikowe uchwyty przed przylutowaniem do spodu płytki. Można by do tego użyć dłuższych kołków, ale standardowe kołki oznaczają, że płyta mocno spoczywa na wierzchu MEGA.

Ułożyłem układy scalone 6502 i 6522 w kolejce, aby wykorzystywały ścieżki płyty do łączenia z MEGA. Jest też kilka połączeń dla 6502 ukrytych pod układem scalonym. Podczas tworzenia płytki pierwszą rzeczą do zrobienia było wycięcie 16 pasków, które będą łączyć się z podwójnym rzędem gniazd Arduino. Zewnętrzne 2 nie muszą być cięte, ponieważ 5V i Gnd są po obu stronach. Następnie przylutuj 2 rzędy 18 pinów na spodzie i 2 rzędy 18 gniazd na górze.

Następnie gniazda DIL zostały przylutowane na miejscu, a ścieżki przecięte między nimi. Mogłem uratować połączenie umieszczając pin 14 74HC00 na tej samej ścieżce co 5v. Ścieżki przecinałem tylko wtedy, gdy byłem pewien, że muszą być podczas lutowania przewodów łączących. Jednak nie zawsze wszystko idzie zgodnie z planem, pierwotnie zaprojektowałem płytkę z paskiem z poprzedniej płytki do krojenia chleba za pomocą pinów 2, 3 i 7 Arduino, ale te nie są wyrównane z otworami w płytce z paskiem, więc musiałem użyć piny 18, 31 i 37. Stąd linki na mojej płytce na 31 i 37. Można się zastanawiać, dlaczego nie użyłem jednego z nieużywanych pinów (23, 24 itd.) do zegara, to dlatego, że nie obsługują przerwania, więc musiałem użyć pinów 18, 19, 20 lub 21, które to robią. Na szczęście te 4 szpilki są wyrównane z otworami w płycie z paskami i utrzymują wszystko zwarte. Pin 18 jest również najdalej od wszystkich pozostałych przewodów.

Możesz również zauważyć, że moja ukończona plansza nie jest dokładnie taka sama jak mój diagram. To dlatego, że podążałem za cudzym schematem. Stąd połączenia z 74HC00. Dodałem również diodę LED zasilania i dodatkowe 2 rzędy gniazd dla Gnd i 5v oraz kilka dodatkowych kondensatorów.

Mógłbym podłączyć 2 gniazda danych, ale oznaczałoby to znacznie więcej przewodów przechodzących przez płytkę. Zdecydowałem się na 8 przewodów łączących, aby zrobić to jako środek tymczasowy.

Porty 6522 A i B mają gniazda przylutowane do ich torów, dzięki czemu można łatwo wstawić markizy LED.

Obecnie jest znacznie mniej przewodów niż w wersji z płytą chlebową.

Krok 2: Teoria programowania

Teoria programowania
Teoria programowania

6522 ma dwa porty I/O oraz wiele innych funkcji, ale porty A i B są łatwo dostępne. Aby wyprowadzić dane na porcie, należy odpowiednio ustawić Rejestr Kierunków Danych (DDR) i przesłać dane do samego portu.

W powyższej konfiguracji 6522 znajduje się na E000 $.

Aby wyprowadzić dane na porcie B, DDR w $E002 jest ustawiany na $FF (255 - wszystkie wyjścia), a dane są wysyłane do $E000.

Aby wyprowadzić dane na porcie A, DDR w $E003 jest ustawiany na $FF (255 - wszystkie wyjścia), a dane są wysyłane do $E001.

Poniższy kod ładuje $FF do rejestru 6502 A i zapisuje go w DDR B w $E002. Następnie ładuje 55 USD i zapisuje je na ORB. Kod jest obracany (daje $AA) i zapisywany do ORB. Program przeskakuje z powrotem do $1005 i powtarza się w nieskończoność. UWAGA: DDR wystarczy zainicjować tylko raz.

Zaadresuj demontaż zrzutu heksadecymalnego

$1000 a9 ff LDA #$ff $1002 8d 02 e0 STA $e002 $1005 a9 55 LDA #$55 $1007 8d 00 e0 STA $e000 $100a 6a ROR A $100b 8d 00 e0 STA $e000 $100e 4c 05 10 JMP $1005

55 $ w systemie binarnym to 010101010, a $AA to 10101010, co powoduje, że diody LED na przemian 4 włączone, 4 wyłączone.

Szybka i brudna naprawa:

Wymień 74HC00 (bramka NAND wejściowa Quad 2) na 74HC08 (bramka AND wejściowa Quad 2), a 6522 znajduje się teraz w cenie 6000 USD zamiast E000. Przenosi to z górnych 32K do dolnych 32K adresowalnej pamięci 6502.

Krok 3: Program i wyjście Arduino

Program i wyjście Arduino
Program i wyjście Arduino

Ponieważ 6502 nie ma pamięci RAM do odczytu, Arduino dostarcza program do odczytu. Po wykryciu impulsu zegarowego na pinie 18, Arduino umieszcza dane programu na magistrali danych (piny Arduino 39, 41, 43, 45, 47, 49, 51 i 53). 6502 generuje własne adresy, które są monitorowane tylko przez Arduino na pinach o numerach parzystych od 22 do 52. Arduino dostarcza również impuls zegarowy na pinie 37. Linia R/W 6502 jest monitorowana na pinie 31.

Ponieważ Arduino dostarcza dane, do tej pory nie było możliwe zmuszenie 6502 do wprowadzania danych z VIA (chyba że wiesz lepiej).

Program Arduino znajduje się poniżej, a przykładowe dane wyjściowe z monitora szeregowego powyżej.

Krok 4: Wniosek

Znowu próbowałem pokazać, jak skonfigurować minimalny „komputer 6502”.

Na tym etapie 6502 nadal polega na Arduino, aby dostarczyć mu program i impuls zegarowy, aby mógł działać.

To krok dalej niż wtedy, gdy ustawiłem go na desce do krojenia chleba.

Tym razem nie użyłem 74HC373, ale bardziej złożonego 6522 do blokowania wyjść danych. Również 6522 ma dwa porty I/O.

Zamierzam posunąć ten projekt dalej, instalując trochę SRAM lub EEPROM.

Zalecana: