Obsah:
- Krok 1: Demonstrační programy
- Krok 2: Přidání EEPROM
- Krok 3: Programování EEPROM
- Krok 4: Programy EEPROM
- Krok 5: Spuštění 6502 z EEPROM
- Krok 6: Externí časový signál
- Krok 7: Závěr
Video: 6502 Minimální počítač (s Arduino MEGA) Část 3: 7 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:20
Ještě dále, nyní jsem na hlavní desku přidal Octal Latch, 8 obdélníkových LED a pole odporu 220 Ohm. Mezi společným kolíkem pole a zemí je také propojka, takže LED diody lze vypnout. Brána 74HC00 NAND byla nahrazena bránou 78LS08 AND, bylo také změněno zapojení k bráně. Brána AND znamená, že 6522 se nyní nachází na 6000 $ místo E000 $.
K dispozici je také kolík pro připojení externích hodin k pohonu 6502. S tímto připojením není potřeba, aby MEGA poskytoval hodinový signál. MEGA stále monitoruje, co se děje s procesorem, jako dříve.
Na západku jsem použil 20kolíkový 74HC373, protože jsem nějaké měl. To bylo v pořádku, když byl na prkénku, ale 74HC573 je kompatibilní se sběrnicí a ušetřilo by to spoustu kabeláže. V obvodu může být uvažován také UCN5801A, což je 22pinový IC, ale zapojení se bude mírně lišit.
Horní oranžová LED dioda je indikátor napájení a spodní spodní červená indikuje, že probíhá zápis. Ten bude nevýznamný, pokud bude deska provozována ve vyšších rychlostech.
Upravený obvod je výše (u 74HC573).
Krok 1: Demonstrační programy
Dva jednoduché předváděcí programy jsou součástí monitoru 6502 a jejich rozebraný kód je zde.
Tento program načte 1 do registru 6502 A a uloží jej do západky. Poté přidá 1 do registru A a uloží jej do západky. Poté skočí zpět na 1005 $ a proces se navždy opakuje.
* = 1000
1000 A9 01 LDA #$ 01 1002 8D 00 41 STA $ 4100 1005 69 01 ADC #$ 01 1007 8D 00 41 STA $ 4100 100A 4C 05 10 JMP $ 1005 100D. END
Tento program nejprve nastaví DDR výstupu 6522 portu B na výstup. Do portu a západky pak uloží 55 $ (B01010101). Registr A se poté otočí o 1 krok doprava a nyní obsahuje $ AA (B10101010). To je opět uloženo v portu B a západce. Program skočí zpět na 1005 $ a pokračuje navždy.
* = 1000
1000 A9 FF LDA #$ FF 1002 8D 02 60 STA $ 6002 1005 A9 55 LDA #$ 55 1007 38 SEC 1008 8D 00 60 STA $ 6000 100B 8D 00 41 STA $ 4100 100E 6A ROR A 100F 8D 00 60 STA $ 6000 1012 8D 00 41 STA $ 4100 1015 4C 05 10 ŽMP 1005 1018
Bystré oči mezi vámi si mohou všimnout, že barevné LED diody ukazují jiný vzor než zelené. Důvodem je, že společný vodič je připojen k 5v na barevných a společný na zelených je připojen k zemi.
Změňte tento řádek kódu na program2 nebo program3.
setDataPins (program3 [offset]);
6502 Assembler a Disassembler jsou užitečné nástroje, které pomáhají kódovat vaše programy.
Krok 2: Přidání EEPROM
Pro desku EEPROM jsem použil desku s lištou 950 x 650 mm a 19 mm kolíkové zástrčky, aby bylo možné desku vyčistit pod ní. Tato deska se zapojuje do desky 6502 níže. EEPROM je ATMEL 28C256, který má 28 pinů a obsahuje 32k x 8 bitů paměti. To je pro malé programy, které se v současné době používají, více než dostačující.
Neudělal jsem schéma zapojení pro tuto desku, ale je docela jednoduché, jak se připojuje k desce 6502 níže. Tyto čipy EEPROM nejsou vhodné pro sběrnice, takže musí být připojeny k jednotlivým kolíkům, tedy všem „zeleným a bílým špagetám“. Vyřešil jsem problém přemostění na dřívější desce zapojením datových linek dohromady na spodní straně desky.
14 adresových pinů EEPROM se připojuje k příslušným pinům na levé straně (zelené vodiče) a I/O piny k datovým pinům napravo (bílé vodiče). Pin 27 (WE) je připojen k pinu 28 (5v), pin 22 (OE) je připojen k zemi a pin 20 (CE) je připojen k bráně NAND. 2 vstupy brány NAND jsou připojeny k A15 na hlavní deska. To znamená, že když tento pin stoupne, NAND brána dává nízký signál CE pinu EEPROM, který jej aktivuje. S tímto nastavením to znamená, že EEPROM lze přečíst pouze na 6502.
Vzhledem k tomu, že paměť EEPROM žije na 32 000 nejlepších na mapě paměti, znamená to, že $ FFFC a $ FFFD mohou obsahovat počáteční adresu pro 6502 poté, co byla resetována. S adresou 6522 mezi 6000 a 600 $ a západkou na 4100 $ se zastaví jakékoli konflikty paměti.
Vektor NMI ($ FFFA a $ FFFB) a vektor BRK / IRQ ($ FFFE a $ FFFF) lze také zapsat stejným způsobem.
Krok 3: Programování EEPROM
K uložení programu na EEPROM potřebuje programátor. Jeden jsem vyrobil z páskové desky, Arduino Pro Mini, pár 74HC595 a ze zásuvky ZIF. Původně byl programátor vyroben pro AT28C16, který má méně adresových řádků než AT28C256, takže musel být upraven.
Schéma zapojení ukazuje, jak zapojit obě tyto EEPROM. Z fotografie není zřejmé, že dva čipy 595 jsou vzhůru nohama a ne tak, jak je znázorněno na schématu. Piny 1 až 7 z 595/1 jsou v souladu s A1 až A7 EEPROM bez ohledu na to, který je použit. Tím se ušetří 7 propojovacích vodičů. Deska nyní vypadá trochu těsně, a to proto, že původně jsem použil 24kolíkovou zásuvku DIL, která byla nyní nahrazena mnohem větší 28pólovou zásuvkou ZIF.
Součástí je program, který pracuje s mým boardem. Program bude fungovat s jakýmkoli Arduino a 595 v obvodu, jak je znázorněno. Vybral jsem 5v Pro Mini, protože je kompaktní a dostatečně levný na to, aby byl ponechán v nastavení.
Krok 4: Programy EEPROM
V EEPROM programátoru jsou tři jednoduché programy. Chcete -li je použít, stačí odkomentovat řádek, který chcete použít.
// Čtení z portu A 6522
// data konstantního bajtu = {0xA9, 0x00, 0x8D, 0x03, 0x60, 0xAD, 0x01, 0x60, 0x4C, 0x05, 0x90, 0x00};
Po dokončení programu se zobrazí výpis paměti. Část níže uvedeného programu vám dává plnou kontrolu nad tím, co chcete napsat nebo vymazat, nastaví $ FFFC & $ FFFD a poté zobrazí obsah daného rozsahu. Jednoduše odkomentujte nebo změňte parametry, jak požadujete. Adresy lze také zadat v desítkovém formátu.
// eraseEEPROM (422, 930, 0x41); // Použijte k vymazání celé nebo části EEPROM - začátek, konec, byte
Serial.println ("Programování EEPROM"); částka = program_numeric_data (0x1000); writeEEPROM (0x7ffc, 0x00); // Nastavit $ FFFC pro 6502 writeEEPROM (0x7ffd, 0x90); // Nastavit $ FFFD pro 6502 // writeEEPROM (0x1000, 0xA9); // Napište 1 bajt dat Serial.println ("hotovo"); String outline = "Napsáno" + (Řetězec) částka + "bajtů"; Serial.println (obrys); Serial.println ("Čtení EEPROM"); printContents (0x0000, 0x112f); // Nastavit rozsah pro zobrazení printContents (0x7ff0, 0x7fff); // Přečte posledních 16 bajtů na EEPROM
Zkrácený výstup z programu je výše.
Krok 5: Spuštění 6502 z EEPROM
Naprogramovanou EEPROM lze nyní vložit na její desku a toto prasátko se připojí k hlavní desce 6502, která se připojí k MEGA. Výše uvedené boční a horní fotografie ukazují, jak to všechno do sebe zapadá.
6502 nyní může přečíst počáteční vektor z $ FFFC a $ FFFD (což je 9000 $) a poté přeskočit na program, který je tam uložen. MEGA stále poskytuje hodinový signál a jeho program je třeba upravit tak, aby poskytoval pouze hodinový signál a monitoroval 6502. K tomu je k dispozici upravený program.
Na běžící fotografii je tento program spuštěn.
9000 LDA #00 $ A9 00
9002 STA $ 6003 8D 03 60 9005 LDA #$ FF A9 FF 9007 STA $ 6002 8D 02 60 900A LDA $ 6001 AD 01 60 900D STA $ 6000 8D 00 60 9010 EOR #$ FF 49 FF 9012 STA $ 4100 8D 00 41 9015 ŽMP $ 900A 4C 0A 90
Přepínače jsou zapojeny do portu A a program zobrazí hodnotu, kterou čte, na portu B a 74HC373 (který je v současné době zakryt). spínače jsou připojeny k zemi a LED diody jsou připojeny k 5v. EOR #$ FF opravuje problém západky a portu B se zobrazováním různých vzorů převrácením bitů před zápisem do západky.
Krok 6: Externí časový signál
Pokud je na kolík v horní části desky aplikován hodinový signál, může 6502 nyní běžet nezávisle na MEGA. Samozřejmě také potřebuje napájení. Experimentoval jsem s různými takty a dokonce jsem spustil 6502 na 1MHz s krystalovým oscilátorem. MEGA nemůže držet krok s vyššími rychlostmi, takže musí být odstraněn.
Zkoušel jsem také výstup z časovače 555, ale to nefunguje. Myslím, že to může být proto, že to není čtvercová vlna? Když byl připojen k jednomu z výstupů CD4017, poháněl 6502. Zaplatil jsem do jedné z výše uvedených sad, abych se pokusil získat hodinový signál.
Stále hledám různé způsoby, jak získat hodinový signál.
Krok 7: Závěr
Ukázal jsem, jak postavit některé složité obvody a získat velmi jednoduchý „počítač“pro práci s minimálním množstvím dílů. Je pravda, že počítač v současné době nemůže udělat mnoho nebo pravděpodobně bude dělat v budoucnu.
Na začátku 80. let jsem se svým VIC20 přemýšlel o úžasném stroji a neměl první představu o tom, jak ho začít dávat dohromady. Doba pokročila a technologie také, ale i tak je příjemné vrátit se k základům a být hrdí na něco, co jste vybudovali od nuly.
K dalšímu vývoji tohoto počítače hodlám dát 2k SRAM za 0000 až 2047 $ a přidat oscilátor 1 MHz. Pravděpodobně přidá něco jako CD4040 (12stupňový binární čítač / dělič zvlnění), abych mohl využít různé rychlosti hodin.
Může dokonce přidat LCD displej, který poskytne textové výstupy, nikoli jen blikající světla. Bude také nutné upravit programátor EEPROM, aby se vypořádal s většími programy potřebnými pro provoz LCD displeje.
I když se MEGA pro běh 6502 stává nepotřebným, stále se hodí pro ladění strojového kódu. Jak někdo ví, strojový kód vždy obsahuje chyby!
Doporučuje:
Minimální počítač 6502 a 6522 (s Arduino MEGA) Část 2: 4 kroky
Minimální počítač 6502 a 6522 (s Arduino MEGA) Část 2: V návaznosti na můj předchozí Instructable jsem nyní 6502 umístil na páskovou desku a přidal 6522 Versatile Interface Adapter (VIA). Opět používám WDC verzi 6522, protože se perfektně hodí k jejich 6502. Nejen, že tyto nové c
6502 Minimální počítač (s Arduino MEGA) Část 1: 7 kroků
Minimální počítač 6502 (s Arduino MEGA) Část 1: Mikroprocesor 6502 se poprvé objevil v roce 1975 a byl navržen malým týmem vedeným Chuckem Peddleem pro technologii MOS. Tehdy byl používán ve video konzolách a domácích počítačích včetně Atari, Apple II, Nintendo Entertainment System, BBC Micr
Minimální box zvukových efektů Arduino: 5 kroků
Minimal Arduino Sound Effect Box: Toto je rychlý projekt boxu se zvukovými efekty. Zařízení čte předem nahraný soubor wav z microSD přiřazeného konkrétnímu tlačítku a přehraje jej po stisknutí
Počítač pro systémy RE (část 1 ze 2) (hardware): 5 kroků
Počítač pro systémy RE (část 1 ze 2) (Hardware): Zde vám ukážu, jak jsem vytvořil plně funkční počítač Mini Desktop pro malé systémy obnovitelné energie. Systém RE, který plánuji používat, bude primárně 12voltový systém se 6 nebo 8 golfovými bateriemi a já budu mít 700 wattový invertor
Počítač pro systémy RE (část 2 ze 2) (software): 6 kroků
Počítač pro systémy RE (část 2 ze 2) (software): V první části tohoto instruktážního programu se nachází zde https://www.instructables.com/id/Computer-for-RE-Systems-Part-1-of-2 -Hardware/, přidal jsem veškerý hardware, který jsem chtěl získat dobrý desktopový systém. Nyní pro software, ale před softwarem