Sisällysluettelo:
- Tarvikkeet
- Vaihe 1: Piirilevy
- Vaihe 2: Ohjelmointiteoria
- Vaihe 3: Arduino -ohjelma ja tulostus
- Vaihe 4: Johtopäätös
Video: 6502 & 6522 Minimitietokone (Arduino MEGA: lla) Osa 2: 4 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:00
Edellisen Instructable -ohjelmani jälkeen olen nyt laittanut 6502: n nauhalevylle ja lisännyt 6522 -monikäyttöisen sovittimen (VIA). Käytän jälleen WDC -versiota 6522: stä, koska se sopii täydellisesti heidän 6502: een. Nämä uudet sirut käyttävät paitsi paljon vähemmän virtaa kuin alkuperäiset MOS -versiot, mutta ne voidaan ajaa hitaammin tai jopa astua läpi ohjelma ilman ongelmia.
Arduino -ohjelman kirjoitti alunperin Ben Eater (jolla on paljon videoita YouTubessa), ja olen muokannut sitä tämän tuloksen saavuttamiseksi.
Tarvikkeet
1 x WDC W65C02 -prosessori
1 x monipuolinen WDC W65C22 -sovitin
1 x 74HC00N IC (Quad 2-tulon NAND-portti) tai vastaava
1 x 10 cm leveä (35 riviä) nauhalevy
2 x 40 -nastaista DIL -liitintä
1 x 14 -nastainen DIL -liitin
Piirilevyn otsikkotapit 2,54 mm
Piirikorttirasiat 2,54 mm
1 x 12 mm: n hetkellinen kosketuspainike, piirilevyasennettava SPST tai vastaava
1 x 1K vastus
1 x 3K3 vastus
2 x 0,1 uF keraamiset kondensaattorit
1 x 8 -tie Water Light Marquee 5mm punainen LED
Erivärinen johto liitäntöihin
8 uros - uros linkki johdot
Vaihe 1: Piirilevy
Piirilevy on melko kompakti ja alapuoli liitetään suoraan Arduino MEGA -laitteeseen. Tämän saavuttamiseksi tapit työnnetään mahdollisimman pitkälle muovipidikkeisiin ennen juottamista levyn alapuolelle. Tähän olisi voitu käyttää pidempiä tappeja, mutta vakiotapit tarkoittavat, että levy on tukevasti MEGA: n päällä.
Olen asettanut 6502- ja 6522 -IC: t niin, että ne käyttävät nauhalevyn raitoja MEGA -yhteyden muodostamiseen. 6502: een on myös joitain yhteyksiä piilotettuna IC: n alle. Levyä valmistettaessa ensimmäinen asia oli leikata 16 nauhaa, jotka yhdistyvät Arduinon kaksoisriviin. Ulompaa 2 ei tarvitse leikata, koska 5v ja Gnd ovat molemmin puolin. Seuraava juote 2 rivillä 18 nastaa alapuolella ja 2 riviä 18 pistorasiaa yläpuolella.
Tämän jälkeen DIL -pistorasiat juotettiin paikoilleen ja raot leikattiin niiden väliin. Olisin voinut tallentaa yhteyden asettamalla 74HC00: n nastan 14 samalle radalle kuin 5v. Leikkasin raidat vasta kun olin varma, että niiden täytyi olla, kun juotin liitosjohtoja. Asiat eivät kuitenkaan aina mene suunnitelmien mukaan, suunnittelin alunperin nauhalevyn edellisestä leipälaudasta Arduinon tapilla 2, 3 ja 7, mutta nämä eivät ole linjassa levyn reikien kanssa, joten piti käyttää nastat 18, 31 ja 37. Tästä syystä linkit taulullani 31 ja 37. Saatat ihmetellä, miksi en käyttänyt yhtä käyttämättömistä nastoista (23, 24 jne.) kelloon, koska ne eivät tue keskeyttää, joten joutui käyttämään tappia 18, 19, 20 tai 21. Onneksi nämä 4 nastaa ovat linjassa nauhalevyn reikien kanssa ja pitävät kaiken tiivistettynä. Nasta 18 on myös kauimpana kaikista muista johtimista.
Saatat myös huomata, että valmis paneelini ei ole täsmälleen sama kuin kaavioni. Tämä johtuu siitä, että seurasin jonkun toisen kaaviota. Siksi liitännät 74HC00: een. Olen myös lisännyt virran merkkivalon ja ylimääräiset 2 riviä pistorasioita Gnd- ja 5v -laitteille sekä pari kondensaattoria.
Olisin voinut yhdistää kaksi dataliitäntää, mutta tämä merkitsisi paljon enemmän johtoja levyn yli. Valitsin 8 linkkijohtoa tekemään tämän väliaikaisena toimenpiteenä.
6522 -portissa A ja B on pistorasiat juotettu raitoihinsa, jotta LED -merkkejä voidaan helposti asentaa.
Johtoja on nyt paljon vähemmän kuin leipälevyversiossa.
Vaihe 2: Ohjelmointiteoria
6522: ssä on kaksi I/O -porttia sekä monia muita ominaisuuksia, mutta portit A ja B ovat helposti käytettävissä. Tietojen lähettämiseksi portista Data Direction Register (DDR) on asetettava vastaavasti ja tiedot lähetettävä itse porttiin.
Edellä esitetyllä tavalla 6522 sijaitsee $ E000.
Jos haluat tulostaa tietoja portista B, DDR -arvoksi $ E002 on asetettu $ FF (255 - kaikki lähdöt) ja tiedot lähetetään $ E000: een.
Datan lähettämiseksi portista A DDR -arvoksi $ E003 on asetettu $ FF (255 - kaikki lähdöt) ja tiedot lähetetään $ E001.
Alla oleva koodi lataa $ FF 6502 A -rekisteriin ja kirjoittaa sen DDR B: hen hintaan $ E002. Sitten se lataa 55 dollaria ja kirjoittaa sen ORB: lle. Koodi kierretään (jolloin saadaan AA -arvo) ja kirjoitetaan ORB: lle. Ohjelma hyppää takaisin $ 1005 ja toistaa loputtomasti. HUOMAUTUS: DDR on alustettava vain kerran.
Osoite Hexdump Dissass Assembly
$ 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 dollaria binäärissä on 010101010 ja AA on 10101010, minkä vuoksi LEDit vuorottelevat 4 päälle, 4 pois päältä.
Nopea ja likainen korjaus:
Korvaa 74HC00 (Quad 2 -tulon NAND -portti) 74HC08: lla (Quad 2 -tulo JA portti), ja 6522: n hinta on nyt 6000 dollaria E000 dollarin sijasta. Tämä siirtää sen 6502: n osoitemuistin ylemmästä 32K: sta alempaan 32K: een.
Vaihe 3: Arduino -ohjelma ja tulostus
Koska 6502: lla ei ole RAM -muistia lukemiseen, Arduino toimittaa ohjelman lukemista varten. Kun kellopulssi havaitaan nastassa 18, Arduino siirtää ohjelmatiedot dataväylälle (Arduino -nastat 39, 41, 43, 45, 47, 49, 51 ja 53). 6502 luo omat osoitteensa, joita vain Arduino valvoo parillisilla numeroilla 22-52. Arduino toimittaa myös kellopulssin nastassa 37. 6502: n R/W -linjaa valvotaan nastassa 31.
Koska Arduino toimittaa tiedot, toistaiseksi ei ole ollut mahdollista saada 6502 syöttämään tietoja VIA: sta (ellet tiedä paremmin).
Arduino -ohjelma on alla ja sarjamittarin näytteenotto on yllä.
Vaihe 4: Johtopäätös
Olen jälleen yrittänyt näyttää, kuinka perustaa minimaalinen "6502 -tietokone".
Tässä vaiheessa 6502 luottaa edelleen siihen, että Arduino toimittaa sille ohjelman ja kellopulssin, jotta se voi toimia.
Se on askel pidemmälle kuin silloin, kun asetin sen leipäpöydälle.
En ole tällä kertaa käyttänyt 74HC373: ta, mutta monimutkaisempaa 6522: tä datalähtöjen lukitsemiseen. Lisäksi 6522: ssä on kaksi I/O -porttia.
Aion viedä tätä projektia eteenpäin asentamalla jonkin SRAM- tai EEPROM -laitteen.
Suositeltava:
Bluetooth RC -auto STM32F103C: llä ja L293D: llä - Edullinen: 5 vaihetta
Bluetooth RC -auto STM32F103C: llä ja L293D: llä - Edullista: Tein Bluetooth Arduino -auton, kuten tässä kuvattu, Ardumotive_com. Ongelmani olivat akut ja niiden paino sekä kustannukset. Sittemmin matkapuhelimien halvoista virtapankkeista on tullut erittäin edullisia. Kaikki mitä tarvitsen
Alexa Ääniohjattu Raspberry Pi Drone IoT: llä ja AWS: llä: 6 vaihetta (kuvilla)
Alexa Ääniohjattu Raspberry Pi Drone IoT: llä ja AWS: llä: Hei! Nimeni on Armaan. Olen 13-vuotias Massachusettsin poika. Tämä opetusohjelma näyttää, kuten voit päätellä otsikosta, kuinka rakentaa Raspberry Pi Drone. Tämä prototyyppi osoittaa, kuinka dronit kehittyvät ja kuinka suuri rooli niillä voi olla
6502 Minimitietokone (Arduino MEGA: lla) Osa 3: 7 vaihetta
6502 Minimitietokone (Arduino MEGA: n kanssa) Osa 3: Jatkaessani edelleen, olen nyt lisännyt emolevyyn Octal -salvan, 8 suorakulmaista LEDiä ja 220 ohmin vastuksen. Ryhmän yhteisen nastan ja maan välissä on myös hyppyjohdin, jotta LEDit voidaan sammuttaa. 74HC00 NAND -portti h
6502 Minimitietokone (Arduino MEGA: n kanssa) Osa 1: 7 vaihetta
6502 Minimitietokone (Arduino MEGA: lla) Osa 1: 6502 -mikroprosessori ilmestyi ensimmäisen kerran vuonna 1975, ja sen on suunnitellut pieni tiimi, jota johtaa Chuck Peddle MOS -tekniikalle. Silloin sitä käytettiin videokonsolissa ja kotitietokoneissa, kuten Atari, Apple II, Nintendo Entertainment System, BBC Micr
Sisäkasvien kastelu NodeMCU: lla, paikallisella Blynk -palvelimella ja Blynk Apk: lla, säädettävä asetuspiste: 3 vaihetta
Sisäkasvien kastelu NodeMCU: lla, paikallisella Blynk -palvelimella ja Blynk Apk: llä, säädettävä asetuspiste: Olen rakentanut tämän projektin, koska sisäkasvieni on oltava terveitä, vaikka olen lomalla pitkään ja pidän ajatuksesta hallita tai ainakin seurata kaikkia mahdollisia asioita, joita kotona tapahtuu Internetin kautta