Inhoudsopgave:
- Benodigdheden
- Stap 1: De printplaat
- Stap 2: Programmeertheorie
- Stap 3: Het Arduino-programma en de uitvoer
- Stap 4: Conclusie
Video: 6502 & 6522 Minimal Computer (met Arduino MEGA) Deel 2: 4 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
In navolging van mijn vorige Instructable heb ik nu de 6502 op een stripbord gezet en een 6522 veelzijdige interface-adapter (VIA) toegevoegd. Nogmaals, ik gebruik een WDC-versie van de 6522, omdat het een perfecte match is voor hun 6502. Deze nieuwe chips gebruiken niet alleen veel minder stroom dan de originele MOS-versies, maar ze kunnen ook op lagere snelheden worden gebruikt of zelfs door een programma zonder problemen.
Het Arduino-programma is oorspronkelijk geschreven door Ben Eater (die veel video's op YouTube heeft) en is door mij aangepast om dit resultaat te bereiken.
Benodigdheden
1 x WDC W65C02-processor
1 x WDC W65C22 veelzijdige interface-adapter
1 x 74HC00N IC (Quad 2-input NAND-poort) of vergelijkbaar
1 x 10 cm breed (35 lijnen) Stripbord
2 x 40-pins DIL-aansluitingen
1 x 14-pins DIL-aansluiting
PCB-koppennen 2,54 mm
PCB-kopcontactdozen 2,54 mm
1 x 12 mm kortstondige tactiele drukknopschakelaar op PCB gemonteerd SPST of vergelijkbaar
1 x 1K weerstand
1 x 3K3-weerstand
2 x 0.1 uF keramische condensatoren
1 x 8-weg waterlichttent 5 mm rode LED
Verschillende gekleurde draad voor verbindingen
8 mannelijke - mannelijke verbindingsdraden
Stap 1: De printplaat
De printplaat is vrij compact en de onderkant kan rechtstreeks in de Arduino MEGA worden gestoken. Om dit te bereiken, worden de pinnen zo ver mogelijk in de plastic houders geduwd voordat ze aan de onderkant van het bord worden gesoldeerd. Hiervoor hadden langere pinnen kunnen worden gebruikt, maar de standaard pinnen zorgen ervoor dat het bord stevig op de MEGA rust.
Ik heb de 6502 en 6522 IC's opgesteld zodat ze gebruik maken van de stripboardsporen om verbinding te maken met de MEGA. Er zijn ook enkele aansluitingen voor de 6502 verborgen onder het IC. Bij het maken van het bord was het eerste wat je moest doen het knippen van de 16 strips die zullen worden aangesloten op de dubbele rij sockets van de Arduino. De buitenste 2 hoeven niet te worden afgesneden omdat de 5v en Gnd aan beide kanten zitten. Soldeer vervolgens de 2 rijen van 18 pinnen aan de onderkant, en de 2 rijen van 18 pinnen aan de bovenkant.
Daarna werden de DIL-sockets op hun plaats gesoldeerd en de sporen ertussen gesneden. Ik had een verbinding kunnen redden door pin 14 van de 74HC00 op hetzelfde spoor als 5v te plaatsen. Ik sneed de sporen alleen door als ik zeker wist dat ze moesten zijn terwijl ik de verbindingsdraden aan het solderen was. De dingen gaan echter niet altijd volgens plan, ik heb oorspronkelijk het stripbord van het vorige broodbord ontworpen met behulp van pinnen 2, 3 en 7 van de Arduino, maar deze komen niet overeen met de gaten in het stripbord, dus moest ik het gebruiken pinnen 18, 31 en 37. Vandaar de links op mijn bord op 31 en 37. Je vraagt je misschien af waarom ik niet een van de ongebruikte pinnen (23, 24 etc) voor de klok heb gebruikt, dit komt omdat ze niet ondersteunen interrupts, dus moest pin 18, 19, 20 of 21 gebruiken die dat wel doen. Gelukkig komen deze 4 pinnen overeen met de gaten in het stripbord en houden ze alles compact. Pin 18 is ook het verst verwijderd van alle andere draden.
Je merkt misschien ook dat mijn voltooide bord niet precies hetzelfde is als mijn diagram. Dit komt omdat ik het diagram van iemand anders volgde. Vandaar de aansluitingen op de 74HC00. Ik heb ook een power-LED en een extra 2 rijen sockets voor Gnd en 5v toegevoegd, evenals een paar meer condensatoren.
Ik had de 2 data-aansluitingen kunnen aansluiten, maar dit zou betekenen dat er veel meer draden over het bord zouden gaan. Ik heb gekozen voor 8 schakeldraden om dit als tijdelijke maatregel te doen.
De 6522 poorten A en B hebben sockets op hun rails gesoldeerd, zodat LED-merktekens gemakkelijk kunnen worden geplaatst.
Er zijn nu veel minder draden dan op de breadboard-versie.
Stap 2: Programmeertheorie
De 6522 heeft twee I/O-poorten en vele andere functies, maar poort A en B zijn gemakkelijk toegankelijk. Om gegevens op de poort uit te voeren, moet het Data Direction Register (DDR) dienovereenkomstig worden ingesteld en moeten de gegevens naar de poort zelf worden verzonden.
Met de bovenstaande instelling bevindt de 6522 zich op $ E000.
Om gegevens op poort B uit te voeren, wordt de DDR bij $E002 ingesteld op $FF (255 - alle uitgangen) en worden gegevens verzonden naar $E000.
Om gegevens op poort A uit te voeren, wordt de DDR bij $E003 ingesteld op $FF (255 - alle uitgangen) en worden gegevens verzonden naar $E001.
De onderstaande code laadt $FF in het 6502 A-register en schrijft het naar DDR B op $E002. Vervolgens laadt het $ 55 en schrijft het naar ORB. De code wordt geroteerd (geeft $AA) en geschreven naar ORB. Het programma springt terug naar $ 105 en herhaalt zich eindeloos. OPMERKING: de DDR hoeft maar één keer te worden geïnitialiseerd.
Adres Hexdump Demontage
$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 binair is 010101010 en $ AA is 10101010, waardoor de LED's afwisselend 4 aan en 4 uit zijn.
Snelle en vuile oplossing:
Vervang de 74HC00 (Quad 2 input NAND Gate) door een 74HC08 (Quad 2 input AND Gate) en de 6522 staat nu op $6000 in plaats van $E000. Dit verplaatst het van de bovenste 32K naar de onderste 32K van het adresseerbare geheugen van de 6502.
Stap 3: Het Arduino-programma en de uitvoer
Omdat de 6502 geen RAM heeft om uit te lezen, levert de Arduino het programma om te lezen. Wanneer een klokpuls wordt gedetecteerd op pin 18, zet de Arduino de programmagegevens op de databus (Arduino-pinnen 39, 41, 43, 45, 47, 49, 51 en 53). De 6502 genereert zijn eigen adressen die alleen door de Arduino worden gecontroleerd op de even genummerde pinnen 22 tot 52. De Arduino levert ook de klokpuls op pin 37. De R/W-lijn van de 6502 wordt bewaakt op pin 31.
Aangezien de Arduino de gegevens levert, is het tot nu toe niet mogelijk geweest om de 6502 gegevens van de VIA te laten invoeren (tenzij u beter weet).
Het Arduino-programma staat hieronder en een voorbeelduitvoer van de seriële monitor staat hierboven.
Stap 4: Conclusie
Opnieuw heb ik geprobeerd te laten zien hoe je een minimale "6502 Computer" opzet.
In dit stadium vertrouwt de 6502 nog steeds op de Arduino om hem te voorzien van een programma en een klokpuls om hem te laten werken.
Het is een stap verder dan toen ik het op broodplank zette.
Ik heb deze keer niet de 74HC373 gebruikt, maar de meer complexe 6522 om de gegevensuitgangen te vergrendelen. Ook heeft de 6522 twee I/O-poorten.
Ik ben van plan dit project verder te brengen door wat SRAM of een EEPROM te installeren.
Aanbevolen:
Door beweging geactiveerde cosplayvleugels met Circuit Playground Express - Deel 1: 7 stappen (met afbeeldingen)
Door beweging geactiveerde cosplayvleugels met Circuit Playground Express - Deel 1: Dit is deel één van een tweedelige project, waarin ik je mijn proces laat zien voor het maken van een paar geautomatiseerde feeënvleugels. Het eerste deel van het project is de mechanica van de vleugels, en het tweede deel is het draagbaar maken en de vleugels toevoegen
6502 Minimal Computer (met Arduino MEGA) Deel 3: 7 stappen
6502 Minimal Computer (met Arduino MEGA) Deel 3: Als we nog verder gaan, heb ik nu een Octal Latch, 8 rechthoekige LED's en een 220 Ohm weerstandsarray aan het moederbord toegevoegd. Er is ook een jumper tussen de gemeenschappelijke pin van de array en aarde, zodat de LED's kunnen worden uitgeschakeld. De 74HC00 NAND-poort h
6502 Minimal Computer (met Arduino MEGA) Deel 1: 7 stappen
6502 Minimal Computer (met Arduino MEGA) Deel 1: De 6502 microprocessor verscheen voor het eerst in 1975 en werd ontworpen door een klein team onder leiding van Chuck Peddle voor MOS Technology. Destijds werd het gebruikt in videoconsoles en thuiscomputers, waaronder de Atari, Apple II, Nintendo Entertainment System, BBC Micr
Computer voor RE-systemen (deel 1 van 2) (hardware): 5 stappen
Computer voor RE-systemen (deel 1 van 2) (hardware): hier zal ik u laten zien hoe ik een volledig werkende mini-desktopcomputer heb gemaakt voor kleine hernieuwbare energiesystemen. Het RE-systeem dat ik van plan ben te gebruiken, zal voornamelijk een 12 volt-systeem zijn met 6 of 8 Golf Cart-batterijen, en ik heb een 700 watt vermogen inver
Computer voor RE-systemen (deel 2 van 2) (software): 6 stappen
Computer voor RE-systemen (deel 2 van 2) (software): in het eerste deel van deze Instructable bevindt zich hier https://www.instructables.com/id/Computer-for-RE-Systems-Part-1-of-2 -Hardware/, ik heb alle hardware toegevoegd die ik wilde om een goed desktopsysteem te krijgen. Nu voor de software, maar vóór de software