Indholdsfortegnelse:

6502 & 6522 Minimal computer (med Arduino MEGA) Del 2: 4 trin
6502 & 6522 Minimal computer (med Arduino MEGA) Del 2: 4 trin

Video: 6502 & 6522 Minimal computer (med Arduino MEGA) Del 2: 4 trin

Video: 6502 & 6522 Minimal computer (med Arduino MEGA) Del 2: 4 trin
Video: Сборка и обзор - PE6502 Hobby Computer 2024, November
Anonim
6502 & 6522 Minimal computer (med Arduino MEGA) Del 2
6502 & 6522 Minimal computer (med Arduino MEGA) Del 2

I forlængelse af min tidligere Instructable, har jeg nu sat 6502 på et stripkort og tilføjet en 6522 alsidig interface -adapter (VIA). Igen bruger jeg en WDC -version af 6522, da det er et perfekt match til deres 6502. Ikke alene bruger disse nye chips meget mindre strøm end de originale MOS -versioner, men de kan køres med lavere hastigheder eller endda trædes igennem et program uden problemer.

Arduino -programmet blev oprindeligt skrevet af Ben Eater (som har mange videoer på YouTube) og er blevet ændret af mig for at opnå dette resultat.

Forbrugsvarer

1 x WDC W65C02 -processor

1 x WDC W65C22 alsidig interface -adapter

1 x 74HC00N IC (Quad 2-input NAND gate) eller lignende

1 x 10 cm bred (35 linje) Stripboard

2 x 40 pin DIL -fatninger

1 x 14 -polet DIL -fatning

PCB Header Pins 2.54mm

Printkortstik 2.54mm

1 x 12 mm Momentary Tactile Push Button Switch PCB -monteret SPST eller lignende

1 x 1K modstand

1 x 3K3 modstand

2 x 0,1 uF keramiske kondensatorer

1 x 8 Way Water Light Marquee 5 mm rød LED

Forskellige farvede ledninger til tilslutninger

8 han -han -ledninger

Trin 1: Kredsløbskortet

Kredsløbskortet
Kredsløbskortet
Kredsløbskortet
Kredsløbskortet

Printkortet er ret kompakt, og undersiden tilsluttes direkte til Arduino MEGA. For at opnå dette skubbes stifterne så langt som muligt ind i plastholderne, før de loddes til undersiden af brættet. Længere stifter kunne have været brugt til dette, men standardstifterne betyder, at brættet hviler fast oven på MEGA.

Jeg har opstillet 6502 og 6522 IC'erne, så de gør brug af stripboard -sporene til at oprette forbindelse til MEGA. Der er også nogle forbindelser til 6502 skjult under IC. Når du lavede brættet, var den første ting at gøre at skære de 16 strimler, der vil forbinde til Arduino's dobbelte række stikkontakter. De ydre 2 behøver ikke at blive skåret, da 5v og Gnd er på begge sider. Næste loddemetal i de 2 rækker med 18 ben på undersiden, og de 2 rækker med 18 stikkontakter på oversiden.

Derefter blev DIL -fatningerne loddet på plads, og sporene blev skåret mellem dem. Jeg kunne have gemt en forbindelse ved at placere pin 14 på 74HC00 på samme spor som 5v. Jeg klippede kun sporene, da jeg var sikker på, at de skulle være det, mens jeg lodde forbindelsestrådene. Men tingene går ikke altid efter planen, jeg designede oprindeligt strippladen fra det tidligere brødbræt ved hjælp af ben 2, 3 og 7 på Arduino, men disse er ikke i overensstemmelse med hullerne i strippladen, så jeg måtte bruge pins 18, 31 og 37. Derfor er linkene på mit bord på 31 og 37. Du kan undre dig over, hvorfor jeg ikke brugte en af de ubrugte pins (23, 24 osv.) til uret, dette er fordi de ikke understøtter afbryder, så måtte bruge pin 18, 19, 20 eller 21 som gør. Heldigvis er disse 4 pins på linje med hullerne i strippladen og holder alt kompakt. Pin 18 er også længst væk fra alle de andre ledninger.

Du vil muligvis også bemærke, at mit færdige bord ikke er det samme som mit diagram. Det er fordi jeg fulgte en andens diagram. Derfor forbindelserne til 74HC00. Jeg har også tilføjet en power -LED og ekstra 2 rækker stik til Gnd og 5v samt et par kondensatorer mere.

Jeg kunne have tilsluttet de 2 datastikdåser, men dette ville betyde, at mange flere ledninger krydser tavlen. Jeg valgte 8 forbindelsestråde til at gøre dette som en midlertidig foranstaltning.

6522 port A og B har fået fatninger loddet til deres spor, så LED -mærker let kan indsættes.

Der er langt færre ledninger nu, end der var på brødbrætversionen.

Trin 2: Programmeringsteori

Programmeringsteori
Programmeringsteori

6522 har to I/O -porte samt mange andre funktioner, men port A og B er let tilgængelige. For at sende data på porten skal Data Direction Register (DDR) indstilles i overensstemmelse hermed og dataene sendes til selve porten.

Med ovenstående opsætning er 6522 placeret på $ E000.

For at udsende data på port B, er DDR på $ E002 indstillet til $ FF (255 - alle udgange), og data sendes til $ E000.

For at udsende data på port A sættes DDR ved $ E003 til $ FF (255 - alle udgange), og data sendes til $ E001.

Koden herunder indlæser $ FF i 6502 A -registret og skriver det til DDR B på $ E002. Det indlæser derefter $ 55 og skriver det til ORB. Koden roteres (giver $ AA) og skrives til ORB. Programmet springer tilbage til $ 1005 og gentages uendeligt. BEMÆRK: DDR behøver kun at initialiseres én gang.

Adresse Hexdump -demontering

$ 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 i binært er 010101010 og $ AA er 10101010, hvilket får lysdioderne til at skifte 4 til, 4 fra.

Hurtig og beskidt løsning:

Udskift 74HC00 (Quad 2 input NAND Gate) med en 74HC08 (Quad 2 input AND Gate), og 6522 er nu placeret på $ 6000 i stedet for $ E000. Dette flytter det fra den øvre 32K til den nedre 32K i 6502s adresserbare hukommelse.

Trin 3: Arduino -programmet og output

Arduino -programmet og output
Arduino -programmet og output

Da 6502 ikke har noget RAM at læse fra, leverer Arduino programmet, så den kan læse. Når en urpuls detekteres på pin 18, sender Arduino programdataene til databussen (Arduino pins 39, 41, 43, 45, 47, 49, 51 og 53). 6502 genererer sine egne adresser, som kun overvåges af Arduino på de lige nummererede ben 22 til 52. Arduino leverer også urpulsen på pin 37. R/W -linjen på 6502 overvåges på pin 31.

Da Arduino leverer dataene, har det hidtil ikke været muligt at få 6502 til at indtaste data fra VIA (medmindre du ved bedre).

Arduino -programmet er nedenfor, og et prøveoutput fra Serial Monitor er ovenfor.

Trin 4: Konklusion

Igen har jeg forsøgt at vise, hvordan man opsætter en minimal "6502 Computer".

På dette stadium er 6502 stadig afhængig af Arduino til at forsyne den med et program og en urpuls, for at den kan køre.

Det er et skridt videre, end da jeg satte det op på brødbræt.

Jeg har ikke brugt 74HC373 denne gang, men den mere komplekse 6522 til at låse dataoutputene. 6522 har også to I/O -porte.

Jeg agter at tage dette projekt videre ved at installere noget SRAM eller en EEPROM.

Anbefalede: