Turinys:

6502 ir 6522 minimalus kompiuteris (su „Arduino MEGA“) 2 dalis: 4 žingsniai
6502 ir 6522 minimalus kompiuteris (su „Arduino MEGA“) 2 dalis: 4 žingsniai

Video: 6502 ir 6522 minimalus kompiuteris (su „Arduino MEGA“) 2 dalis: 4 žingsniai

Video: 6502 ir 6522 minimalus kompiuteris (su „Arduino MEGA“) 2 dalis: 4 žingsniai
Video: 6502 CPU: 6522 VIA output to LEDs 2024, Lapkritis
Anonim
6502 ir 6522 minimalus kompiuteris (su „Arduino MEGA“) 2 dalis
6502 ir 6522 minimalus kompiuteris (su „Arduino MEGA“) 2 dalis

Tęsdamas ankstesnį „Instructable“, dabar įdėjau 6502 į juostos plokštę ir pridėjau 6522 universalų sąsajos adapterį (VIA). Vėlgi, aš naudoju 6522 WDC versiją, nes ji puikiai tinka jų 6502. Šios naujos mikroschemos ne tik sunaudoja daug mažiau energijos nei originalios MOS versijos, bet ir gali būti paleistos lėčiau ar net peržengtos. programa be jokių problemų.

„Arduino“programą iš pradžių parašė Benas Eateris („YouTube“turi daug vaizdo įrašų) ir aš ją pakeičiau, kad pasiekčiau šį rezultatą.

Prekės

1 x WDC W65C02 procesorius

1 x WDC W65C22 universalus sąsajos adapteris

1 x 74HC00N IC (keturių įėjimų NAND vartai) arba panašiai

1 x 10 cm pločio (35 linijų) juostelių lenta

2 x 40 kontaktų DIL lizdai

1 x 14 kontaktų DIL lizdas

PCB antraštės kaiščiai 2,54 mm

PCB antraštės lizdai 2,54 mm

1 x 12 mm momentinis prisilietimo mygtuko jungiklis PCB, sumontuotas SPST arba panašus

1 x 1K rezistorius

1 x 3K3 rezistorius

2 x 0,1 uF keraminiai kondensatoriai

1 x 8 krypčių vandens šviesos palapinė 5 mm raudonas LED

Įvairių spalvų viela jungtims

8 vyriški - vyriški jungiamieji laidai

1 žingsnis: grandinės plokštė

Circuit Board
Circuit Board
Circuit Board
Circuit Board

Grandinės plokštė yra gana kompaktiška, o apatinė dalis prijungiama tiesiai prie „Arduino MEGA“. Norėdami tai padaryti, kaiščiai, kiek įmanoma, stumiami į plastikinius laikiklius, prieš juos lituojant prie lentos apačios. Tam galėjo būti naudojami ilgesni kaiščiai, tačiau standartiniai kaiščiai reiškia, kad plokštė tvirtai remiasi ant MEGA.

Aš surikiavau 6502 ir 6522 IC, kad jie naudotų juostos plokštės takelius, kad galėtų prisijungti prie MEGA. Taip pat yra keletas 6502 jungčių, paslėptų po IC. Kuriant lentą, pirmas dalykas, kurį reikia padaryti, buvo nupjauti 16 juostelių, kurios bus prijungtos prie dvigubos „Arduino“lizdų eilės. Išorinių 2 nereikia pjauti, nes 5v ir Gnd yra abiejose pusėse. Kitas litavimas 2 eilėse po 18 kaiščių apatinėje pusėje ir 2 eilėse po 18 lizdų viršutinėje pusėje.

Po to DIL lizdai buvo lituojami ir tarp jų pjaustomi takeliai. Galėjau išsaugoti ryšį, įdėdamas 74HC00 14 kaištį į tą patį takelį kaip ir 5v. Aš pjoviau takelius tik tada, kai buvau tikras, kad jų reikia, kol lituosiu jungiamuosius laidus. Tačiau ne visada viskas vyksta pagal planą, iš pradžių sukūriau juostelę iš ankstesnės duonos lentos, naudodamas 2, 3 ir 7 „Arduino“kaiščius, tačiau jie nesutampa su juostų lentos skylėmis, todėl turėjau naudoti 18, 31 ir 37 smeigtukai. Taigi 31 ir 37 mano lentos nuorodos. Jums gali kilti klausimas, kodėl aš nenaudojau vieno iš nepanaudotų kaiščių (23, 24 ir tt) laikrodžiui, nes jie nepalaiko pertraukia, todėl teko naudoti 18, 19, 20 arba 21 kaištį. Laimei, šie 4 kaiščiai sutampa su juostų plokštės skylėmis ir viskas yra kompaktiška. 18 kaištis taip pat yra labiausiai nutolęs nuo visų kitų laidų.

Taip pat galite pastebėti, kad mano užpildyta lenta nėra visiškai tokia pati kaip mano schema. Taip yra todėl, kad sekiau kažkieno schemą. Taigi jungtys prie 74HC00. Aš taip pat pridėjau maitinimo šviesos diodą ir papildomas 2 eilutes lizdų Gnd ir 5v, taip pat dar porą kondensatorių.

Aš galėjau prijungti 2 duomenų lizdus, tačiau tai reikštų daug daugiau laidų, kertančių plokštę. Aš pasirinkau 8 jungčių laidus, kad tai padaryčiau kaip laikiną priemonę.

6522 prievado A ir B lizdai buvo prilituoti prie jų takelių, kad būtų galima lengvai įterpti LED ženklus.

Dabar yra daug mažiau laidų nei duonos lentos versijoje.

2 žingsnis: programavimo teorija

Programavimo teorija
Programavimo teorija

6522 turi du įvesties/išvesties prievadus ir daugybę kitų funkcijų, tačiau A ir B prievadai yra lengvai pasiekiami. Norint išvesti duomenis į uostą, reikia atitinkamai nustatyti duomenų krypties registrą (DDR) ir siųsti duomenis į patį uostą.

Nustatę aukščiau, „6522“yra E000 USD.

Norėdami išvesti duomenis iš B prievado, DDR prie $ E002 yra nustatytas kaip $ FF (255 - visi išėjimai), o duomenys siunčiami į E000 USD.

Norėdami išvesti duomenis iš A prievado, DDR prie $ E003 yra nustatytas kaip $ FF (255 - visi išėjimai) ir duomenys siunčiami į E001 $.

Žemiau pateiktas kodas įkelia $ FF į 6502 A registrą ir įrašo jį į DDR B už $ E002. Tada jis įkelia 55 USD ir įrašo jį į ORB. Kodas pasukamas (suteikiant $ AA) ir parašomas ORB. Programa šokinėja atgal į 1005 USD ir kartojasi be galo. PASTABA: DDR reikia inicijuoti tik vieną kartą.

Adresas Šešiakampis išmontavimas

$ 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 USD dvejetainėje sistemoje yra 010101010, o AA - 10101010, todėl šviesos diodai pakaitomis keičiasi 4, 4 išjungiami.

Greitas ir nešvarus pataisymas:

Pakeiskite 74HC00 (keturių įėjimų NAND vartai) 74HC08 (keturių įėjimų ir vartų) ir 6522 dabar yra 6000 USD, o ne E000 USD. Tai perkelia jį iš 6502 adresinės atminties į viršutinę 32K į apatinę 32K.

3 žingsnis: „Arduino“programa ir išvestis

„Arduino“programa ir išvestis
„Arduino“programa ir išvestis

Kadangi „6502“neturi RAM, iš kurios būtų galima skaityti, „Arduino“pateikia jai skaityti skirtą programą. Kai 18 kaištyje aptinkamas laikrodžio impulsas, „Arduino“perkelia programos duomenis į duomenų magistralę („Arduino“kaiščiai 39, 41, 43, 45, 47, 49, 51 ir 53). „6502“sukuria savo adresus, kuriuos „Arduino“stebi tik ant lyginių 22–52 kaiščių. „Arduino“taip pat tiekia laikrodžio impulsą ant 37 kaiščio. 6502 R/W linija stebima 31 kaištyje.

Kadangi „Arduino“teikia duomenis, iki šiol nepavyko pasiekti, kad 6502 įvestų duomenis iš VIA (nebent žinote geriau).

„Arduino“programa yra žemiau, o pavyzdys iš serijinio monitoriaus yra aukščiau.

4 žingsnis: Išvada

Vėl bandžiau parodyti, kaip nustatyti minimalų „6502 kompiuterį“.

Šiame etape „6502“vis dar tikisi, kad „Arduino“suteiks jam programą ir laikrodžio impulsą, kad jis veiktų.

Tai yra žingsnis toliau nei tada, kai jį pastatiau ant duonos lentos.

Šį kartą naudojau ne 74HC373, o sudėtingesnį 6522 duomenų išvestims fiksuoti. Taip pat 6522 turi du įvesties/išvesties prievadus.

Ketinu toliau plėtoti šį projektą, įdiegdamas tam tikrą SRAM arba EEPROM.

Rekomenduojamas: