
Съдържание:
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 12:59

Следвайки предишния си Instructable, сега сложих 6502 на лента и добавих 6522 универсален интерфейсен адаптер (VIA). Отново използвам WDC версия на 6522, тъй като тя идеално съвпада с техния 6502. Тези нови чипове не само използват много по -малко енергия от оригиналните MOS версии, но могат да работят с по -бавни скорости или дори да преминават през програма без никакви проблеми.
Програмата Arduino първоначално е написана от Бен Ийтър (който има много видеоклипове в YouTube) и е променена от мен за постигане на този резултат.
Консумативи
1 x WDC W65C02 процесор
1 x WDC W65C22 универсален интерфейсен адаптер
1 x 74HC00N IC (Quad 2-вход NAND порта) или подобен
1 x 10 см широка (35 линия) дъска за ленти
2 x 40 пинови DIL гнезда
1 x 14 пинов DIL контакт
Щифтове за печатни платки 2,54 мм
Гнезда за печатни платки 2,54 мм
1 x 12 мм моментен тактилен превключвател с бутон, монтиран на печатна платка SPST или подобен
1 x 1K резистор
1 x 3K3 резистор
2 x 0,1 uF керамични кондензатори
1 x 8 Way Water Light Marquee 5 мм червен светодиод
Различни цветни проводници за свързване
8 проводника мъжки - мъжки
Стъпка 1: Платката


Платката е доста компактна, а долната страна се включва директно в Arduino MEGA. За да се постигне това, щифтовете се притискат доколкото е възможно в пластмасовите държачи, преди да бъдат запоени към долната страна на дъската. За това можеха да се използват по -дълги щифтове, но стандартните щифтове означават, че дъската стои здраво върху MEGA.
Подредих интегралните схеми 6502 и 6522, така че те да използват лентовите ленти за свързване към MEGA. Има и някои връзки за 6502, скрити под ИС. Когато правите дъската, първото нещо, което трябва да направите, е да изрежете 16 ленти, които ще се свържат към двойния ред гнезда на Arduino. Външните 2 не е необходимо да се режат, тъй като 5v и Gnd са от двете страни. Следва запояване в 2 реда с 18 щифта от долната страна и 2 реда с 18 гнезда от горната страна.
След това гнездата DIL бяха запоени на място и релсите са нарязани между тях. Можех да запазя връзка, като поставя щифт 14 на 74HC00 на същата писта като 5v. Нарязах следите само когато бях сигурен, че трябва да са, докато запоявам свързващите проводници. Нещата обаче не винаги вървят по план, първоначално проектирах лентата от предишната дъска за хляб, използвайки щифтове 2, 3 и 7 на Arduino, но те не се подравняват с отворите в лентата, така че трябваше да използвам пинове 18, 31 и 37. Оттук и връзките на дъската ми на 31 и 37. Може би се чудите защо не използвах един от неизползваните щифтове (23, 24 и т.н.) за часовника, това е така, защото те не поддържат прекъсва, така че трябваше да използвам щифтове 18, 19, 20 или 21, които го правят. За щастие тези 4 пина се подравняват с отворите в лентата и поддържат всичко компактно. Пин 18 също е най -отдалечен от всички останали проводници.
Може също да забележите, че моята завършена дъска не е точно същата като моята диаграма. Това е така, защото следвах диаграмата на някой друг. Оттук и връзките към 74HC00. Също така добавих LED за захранване и допълнителни 2 реда гнезда за Gnd и 5v, както и още няколко кондензатора.
Можех да свържа двата гнезда за данни, но това би означавало много повече проводници, пресичащи платката. Избрах 8 свързващи проводника, за да направя това като временна мярка.
Пристанищата A и B на 6522 са с гнезда, запоени към техните следи, така че LED маркировките могат лесно да бъдат поставени.
Сега има много по -малко проводници, отколкото на версията за хляб.
Стъпка 2: Теория за програмирането

6522 има два I/O порта, както и много други функции, но порт A и B са лесно достъпни. За да се изведат данни на порта, регистърът за посока на данни (DDR) трябва да бъде настроен съответно и данните да се изпратят до самия порт.
С горната настройка, 6522 се намира на $ E000.
За извеждане на данни на порт B, DDR при $ E002 е зададен на $ FF (255 - всички изходи) и данните се изпращат на $ E000.
За извеждане на данни на порт А, DDR при $ E003 е зададен на $ FF (255 - всички изходи) и данните се изпращат на $ E001.
Кодът по -долу зарежда $ FF в регистъра 6502 A и го записва в DDR B на стойност $ E002. След това зарежда $ 55 и го записва в ORB. Кодът се завърта (дава $ AA) и се записва в ORB. Програмата отскача обратно tp $ 1005 и се повтаря безкрайно. ЗАБЕЛЕЖКА: DDR трябва да се инициализира само веднъж.
Адрес Hexdump Разглобяване
$ 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 в двоичен формат е 010101010, а $ AA е 10101010, което кара светодиодите да редуват 4 включени, 4 изключени.
Бързо и мръсно решение:
Заменете 74HC00 (вход Quad 2 NAND Gate) със 74HC08 (вход Quad 2 и порта) и 6522 сега се намира на $ 6000 вместо $ E000. Това я премества от горната 32K към долната 32K от адресируемата памет на 6502.
Стъпка 3: Програмата и изходът на Arduino

Тъй като 6502 няма RAM за четене, Arduino предоставя програмата за четене. Когато тактов импулс бъде открит на щифт 18, Arduino поставя програмните данни в шината за данни (Arduino щифтове 39, 41, 43, 45, 47, 49, 51 и 53). 6502 генерира свои собствени адреси, които се наблюдават само от Arduino на четните ножове 22 до 52. Arduino също така подава тактовия импулс на пин 37. R/W линията на 6502 се наблюдава на пин 31.
Тъй като Arduino предоставя данни, досега не беше възможно да се накара 6502 да въведе данни от VIA (освен ако не знаете по -добре).
Програмата Arduino е по -долу, а примерен изход от серийния монитор е по -горе.
Стъпка 4: Заключение
Отново се опитах да покажа как да настроя минимален „компютър 6502“.
На този етап 6502 все още разчита на Arduino да му предостави програма и тактов импулс, за да може да работи.
Това е крачка напред, отколкото когато го поставих на дъската за хляб.
Този път не съм използвал 74HC373, но по -сложния 6522 за блокиране на изходите на данни. Също така 6522 има два I/O порта.
Възнамерявам да продължа този проект, като инсталирам SRAM или EEPROM.
Препоръчано:
6502 Минимален компютър (с Arduino MEGA) Част 3: 7 стъпки

6502 Минимален компютър (с Arduino MEGA) Част 3: Продължавайки още по -нататък, сега добавих осмична брава, 8 правоъгълни светодиода и 220 ома резисторен масив към основната платка. Между общия щифт и масата на масива има и джъмпер, така че светодиодите да могат да се изключват. Портът 74HC00 NAND h
6502 Минимален компютър (с Arduino MEGA) Част 1: 7 стъпки

6502 Минимален компютър (с Arduino MEGA) Част 1: Микропроцесорът 6502 се появява за първи път през 1975 г. и е проектиран от малък екип, ръководен от Чък Педъл за MOS технологията. Тогава той се използва във видеоконзоли и домашни компютри, включително Atari, Apple II, Nintendo Entertainment System, BBC Micr
Rainmeter - Настройване на минимален работен плот (Win 10): 30 стъпки

Rainmeter - Настройка на минимален работен плот (Win 10): Благодаря, че разгледахте тази инструкция! Това ръководство ще ви помогне да създадете минимална настройка на работния плот с някои полезни приспособления, като ви помогне да изчистите работния плот от безпорядъка. Моля, имайте предвид, че това ръководство е създадено за Windows 10
Как да направите минимален OTG конектор: 4 стъпки (със снимки)

Как да си направим минимален OTG конектор: В този електронен DIY проект ще видите как да направите минимален OTG конектор на много ниска цена. OTG конекторът е много практичен инструмент, който улеснява свързването на вашия телефон с Android за разширяване на U диск и връзка с мишката. Можете да направите
Как да гравирате прозорец на компютър (част 1): 6 стъпки

Как да гравирам компютърен прозорец (част 1): Виждал съм много случаи с гравирани прозрачни прозорци. Бях решил да гравирам панталоните си, за да им дам нов облик. Това не е толкова трудно, колкото изглежда, просто отделете време и ще получите добри резултати. Други инструкции за прозореца на случай могат да бъдат намерени на Instru