INHOUDSOPGAWE:

6502 & 6522 Minimale rekenaar (met Arduino MEGA) Deel 2: 4 stappe
6502 & 6522 Minimale rekenaar (met Arduino MEGA) Deel 2: 4 stappe

Video: 6502 & 6522 Minimale rekenaar (met Arduino MEGA) Deel 2: 4 stappe

Video: 6502 & 6522 Minimale rekenaar (met Arduino MEGA) Deel 2: 4 stappe
Video: Сборка и обзор - PE6502 Hobby Computer 2024, November
Anonim
6502 en 6522 minimale rekenaar (met Arduino MEGA) Deel 2
6502 en 6522 minimale rekenaar (met Arduino MEGA) Deel 2

Na aanleiding van my vorige Instructable, het ek die 6502 nou op 'n strookbord aangebring en 'n veelsydige koppelvlakadapter (VIA) van 6522 bygevoeg. Weereens gebruik ek 'n WDC -weergawe van die 6522, want dit pas perfek by hul 6502. Nie net gebruik hierdie nuwe skyfies baie minder krag as die oorspronklike MOS -weergawes nie, maar dit kan teen stadiger snelhede uitgevoer word of selfs deurgetrap word. 'n program sonder probleme.

Die Arduino -program is oorspronklik geskryf deur Ben Eater (wat baie video's op YouTube het) en is deur my aangepas om hierdie resultaat te bereik.

Voorrade

1 x WDC W65C02 verwerker

1 x WDC W65C22 veelsydige koppelvlakadapter

1 x 74HC00N IC (Quad 2-input NAND-hek) of soortgelyk

1 x 10 cm breed (35 lyn) strookbord

2 x 40 -pins DIL -voetstukke

1 x 14 -pins DIL -aansluiting

PCB -kopstukpenne 2,54 mm

PCB -kopstukke 2,54 mm

1 x 12 mm kortstondige tasbare drukknopskakelaar PCB -gemonteerde SPST of soortgelyk

1 x 1K weerstand

1 x 3K3 weerstand

2 x 0,1 uF keramiek kapasitors

1 x 8 Way Water Light Marquee 5mm rooi LED

Verskeie gekleurde draad vir verbindings

8 manlike - manlike skakeldrade

Stap 1: Die kringbord

Die kringbord
Die kringbord
Die kringbord
Die kringbord

Die printplaat is redelik kompak en die onderkant sluit direk in die Arduino MEGA. Om dit te bereik, word die penne so ver as moontlik in die plastiekhouers gedruk voordat dit aan die onderkant van die bord gesoldeer word. Hiervoor kon langer penne gebruik word, maar die standaard penne beteken dat die bord stewig bo -op die MEGA rus.

Ek het die 6502 en 6522 IC's opgestel sodat hulle die bandbordbane kan gebruik om aan te sluit op die MEGA. Daar is ook 'n paar verbindings vir die 6502 wat onder die IC versteek is. By die maak van die bord was die eerste ding om die 16 stroke te sny wat aansluit by die Arduino se dubbele ry voetstukke. Die buitenste 2 hoef nie gesny te word nie, aangesien die 5v en Gnd aan beide kante is. Soldeer dan in die 2 rye van 18 penne aan die onderkant en die 2 rye met 18 voetstukke aan die bokant.

Daarna is die DIL -voetstukke op hul plek gesoldeer en die spore tussen hulle gesny. Ek kon 'n verbinding red deur pen 14 van die 74HC00 op dieselfde snit as 5v te plaas. Ek het die spore eers gesny toe ek seker was dat dit nodig sou wees terwyl ek die verbindingsdrade soldeer. Dit gaan egter nie altyd so nie; ek het die strookbord oorspronklik ontwerp van die vorige broodbord met behulp van penne 2, 3 en 7 van die Arduino, maar dit pas nie by die gate in die strookbord nie, dus ek moes dit gebruik penne 18, 31 en 37. Vandaar die skakels op my bord op 31 en 37. U wonder miskien hoekom ek nie een van die ongebruikte penne (23, 24 ens) vir die horlosie gebruik het nie, dit is omdat dit nie ondersteun word nie onderbreek, en moes dus pen 18, 19, 20 of 21 gebruik, wat wel die geval is. Gelukkig is hierdie 4 penne in lyn met die gate in die strookbord en hou alles kompak. Speld 18 is ook die verste weg van al die ander drade.

U sal ook opmerk dat my voltooide bord nie presies dieselfde is as my diagram nie. Dit is omdat ek iemand anders se diagram gevolg het. Vandaar die verbindings met die 74HC00. Ek het ook 'n krag -LED en 2 ekstra rye voetstukke vir Gnd en 5v bygevoeg, asook 'n paar kondensators.

Ek kon die 2 data -voetstukke gekoppel het, maar dit sou baie meer drade beteken wat die bord oorsteek. Ek het gekies vir 8 skakeldrade om dit as 'n tydelike maatreël te doen.

Die poort A en B van 6522 het voetstukke aan hul spore gesoldeer sodat LED -merke maklik ingevoeg kan word.

Daar is nou baie minder drade as wat daar op die broodbordweergawe was.

Stap 2: Programmeringsteorie

Programmeringsteorie
Programmeringsteorie

Die 6522 het twee I/O -poorte sowel as baie ander funksies, maar poort A en B is maklik bereikbaar. Om data op die poort uit te voer, moet die Data Direction Register (DDR) dienooreenkomstig ingestel word en die data na die poort self gestuur word.

Met die bogenoemde opstelling, is die 6522 geleë op $ E000.

Om data oor poort B uit te voer, is die DDR by $ E002 ingestel op $ FF (255 - alle uitsette) en data word na $ E000 gestuur.

Om data op poort A uit te voer, is die DDR by $ E003 ingestel op $ FF (255 - alle uitsette) en data word na $ E001 gestuur.

Die onderstaande kode laai $ FF in die 6502 A -register en skryf dit aan DDR B teen $ E002. Dit laai dan $ 55 en skryf dit aan ORB. Die kode word gedraai ($ AA gegee) en aan ORB geskryf. Die program spring terug op $ 1005 en word eindeloos herhaal. LET WEL: die DDR hoef slegs een keer geïnisieer te word.

Adres Hexdump Dissassemble

$ 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 in binêre is 010101010 en $ AA is 10101010, wat veroorsaak dat die LED's 4 aan, 4 af wissel.

Vinnige en vuil oplossing:

Vervang die 74HC00 (Quad 2 input NAND Gate) met 'n 74HC08 (Quad 2 input AND Gate) en die 6522 is nou geleë op $ 6000 in plaas van $ E000. Dit beweeg dit van die boonste 32K na die onderste 32K van die adresbare geheue van die 6502.

Stap 3: Die Arduino -program en -uitset

Die Arduino -program en -uitset
Die Arduino -program en -uitset

Aangesien die 6502 geen RAM het om van te lees nie, verskaf die Arduino die program sodat hy kan lees. As 'n klokpuls op pen 18 bespeur word, plaas die Arduino die programdata op die databus (Arduino penne 39, 41, 43, 45, 47, 49, 51 en 53). Die 6502 genereer sy eie adresse wat slegs deur die Arduino gemonitor word op die ewe genommerde penne 22 tot 52. Die Arduino verskaf ook die klokpuls op pen 37. Die R/W -lyn van die 6502 word op pen 31 gemonitor.

Aangesien die Arduino die data verskaf, was dit tot dusver nie moontlik om die 6502 data van die VIA in te voer nie (tensy u van beter weet).

Die Arduino -program is hieronder en 'n voorbeelduitset van die Serial Monitor is hierbo.

Stap 4: Gevolgtrekking

Ek het weer probeer om aan te toon hoe u 'n minimale '6502 -rekenaar' opstel.

In hierdie stadium vertrou die 6502 nog steeds op die Arduino om 'n program en 'n klokpuls te voorsien sodat dit kan werk.

Dit is 'n stap verder as toe ek dit op broodbord gesit het.

Ek het hierdie keer nie die 74HC373 gebruik nie, maar die meer komplekse 6522 om die data -uitsette vas te hou. Die 6522 het ook twee I/O -poorte.

Ek is van plan om hierdie projek verder te neem deur SRAM of 'n EEPROM te installeer.

Aanbeveel: