Բովանդակություն:
- Քայլ 1: onstուցադրական ծրագրեր
- Քայլ 2: EEPROM- ի ավելացում
- Քայլ 3. EEPROM- ի ծրագրավորում
- Քայլ 4: EEPROM ծրագրեր
- Քայլ 5. 6502 -ի գործարկում EEPROM- ից
- Քայլ 6: Արտաքին ժամանակի ազդանշան
- Քայլ 7: Եզրակացություն
Video: 6502 Նվազագույն համակարգիչ (Arduino MEGA- ով) Մաս 3: 7 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
Շարունակելով շարունակել, ես այժմ հիմնական տախտակին ավելացրել եմ Octal Latch, 8 ուղղանկյուն LED և 220 Օմ դիմադրության զանգված: Alsoանգվածի ընդհանուր քորոցի և գետնի միջև կա նաև jumper, այնպես որ LED- ները կարող են անջատվել: 74HC00 NAND դարպասը փոխարինվել է 78LS08 AND դարպասով, դարպասի էլեկտրագծերը նույնպես փոխվել են: AND դարպասը նշանակում է, որ 6522 -ը այժմ գտնվում է $ 6000 -ի փոխարեն $ E000- ի փոխարեն:
6502 -ը վարելու համար արտաքին ժամացույցի միացման համար կա նաև քորոց: Այս կապով MEGA- ի կողմից ժամացույցի ազդանշան տրամադրելու կարիք չկա: MEGA- ն շարունակում է վերահսկել, թե ինչ է կատարվում պրոցեսորի հետ, ինչպես նախկինում:
Ես սողնակի համար օգտագործեցի 20 փին 74HC373, քանի որ ունեի մի քանիսը: Դա նորմալ էր, երբ տախտակի վրա էր, բայց 74HC573- ը ավտոբուսների հետ համատեղելի է և կխնայի էլեկտրագծերի բեռները: UCN5801A- ն, որը 22 փին IC է, նույնպես կարող է դիտարկվել սխեմայի մեջ, սակայն էլեկտրագծերը մի փոքր այլ կլինեն:
Վերին, մեկ նարնջագույն LED- ն էներգիայի ցուցիչ է, իսկ ներքևի ձախ կարմիրը ցույց է տալիս, երբ գրառումը տեղի է ունենում: Վերջինս աննշան կլինի, եթե տախտակն աշխատի ավելի մեծ արագությամբ:
Փոփոխված սխեման վերևում է (74HC573- ով):
Քայլ 1: onstուցադրական ծրագրեր
Երկու պարզ ցուցադրական ծրագիր ներառված է 6502 մոնիտորի մեջ և դրանց ապամոնտաժված ծածկագիրը ՝ այստեղ:
Այս ծրագիրը 1 -ը բեռնում է 6502 A գրանցամատյանում և պահում այն սողնակում: Այնուհետև այն ավելացնում է 1 -ը գրանցամատյանում և պահում է այն սողնակում: Հետո այն վերադառնում է 1005 դոլար և գործընթացը կրկնում է հավիտյան:
* = 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 100DEND
Այս ծրագիրը նախ ելքային է դնում 6522 B նավահանգստի DDR- ը: Այնուհետև նավահանգստում պահում է 55 դոլար (B01010101), ինչպես նաև սողնակ: A գրանցամատյանը այնուհետև պտտվում է 1 քայլ աջ և այժմ պահում է $ AA (B10101010): Սա կրկին պահվում է B նավահանգստում և սողնակում: Backրագիրը վերադառնում է $ 1005 և շարունակվում հավիտյան:
* = 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 41 STA $ 4100 1015 4C 05 10 JMP 1005 1018 $. END
Ձեր մեջ սուր աչքերով կարող եք նկատել, որ գունավոր LED- ները այլ կերպ են ցույց տալիս, քան կանաչները: Դա պայմանավորված է նրանով, որ ընդհանուր կապը գունավորների վրա միացված է 5 վ -ին, իսկ կանաչների վրա սովորականը `գետնին:
Կոդի այս տողը փոխեք program2 կամ program3:
setDataPins (program3 [օֆսեթ]);
6502 Assembler- ը և Disassembler- ը օգտակար գործիքներ են, որոնք կօգնեն կոդավորել ձեր ծրագրերը:
Քայլ 2: EEPROM- ի ավելացում
EEPROM- ի տախտակի համար ես օգտագործեցի 950 x 650 մմ չափսերի տախտակ և 19 մմ տրամագծով տղամարդու գլխատախտակներ `տախտակին մաքրելու համար տակը: Այս տախտակը միանում է ներքևում գտնվող 6502 տախտակին: EEPROM- ը 28C256 ATMEL է, որն ունի 28 կապում և պարունակում է 32k x 8 բիթ հիշողություն: Սա առավել քան համարժեք է ներկայումս կիրառվող փոքր ծրագրերին:
Այս տախտակի համար ես սխեմայի սխեմա չեմ արել, բայց այն բավականին պարզ է, թե ինչպես է այն միանում ներքևի 6502 տախտակին: Այս EEPROM չիպերը հարմար չեն ավտոբուսին, այնպես որ դրանք պետք է միացված լինեն առանձին կապումներին, հետևաբար բոլոր «կանաչ և սպիտակ սպագետտին»: Ես լուծել եմ կամրջման հարցը ավելի վաղ տախտակի վրա ՝ տվյալների տողերը միացնելով տախտակի ներքևի մասում:
EEPROM- ի 14 հասցեն կապում են միացված ձախ կողմի համապատասխան կապումներին (կանաչ լարեր), իսկ I/O կապումներին ՝ աջ կողմում գտնվող տվյալների կապերին (սպիտակ լարեր): Pin 27 (WE) միացված է 28 (5v), 22 -ի (OE) ՝ գետնին, իսկ pin 20 (CE) միացված է NAND դարպասին: NAND դարպասի 2 մուտքերը միացված են A15- ին հիմնական տախտակ: Սա նշանակում է, որ երբ այս քորոցը բարձրանում է, NAND դարպասը ցածր ազդանշան է տալիս EEPROM- ի CE կապին, որն այն դարձնում է ակտիվ: Այս կարգավորմամբ դա նշանակում է, որ EEPROM- ը կարող է կարդալ միայն 6502 -ով:
Քանի որ EEPROM- ն ապրում է հիշողության քարտեզի վերևում `32k- ում, դա նշանակում է, որ $ FFFC- ն և $ FFFD- ն կարող են պահել սկզբնական հասցեն 6502 -ի համար այն վերականգնելուց հետո: 6522 -ի հասցեները 6000-600 դոլար են, իսկ փակիչը 4100 դոլար է, այն դադարեցնում է հիշողության ցանկացած կոնֆլիկտ:
NMI վեկտորը ($ FFFA և $ FFFB) և BRK / IRQ վեկտորը ($ FFFE և $ FFFF) նույնպես կարող են գրվել նույն կերպ:
Քայլ 3. EEPROM- ի ծրագրավորում
EEPROM- ում ծրագիր պահելու համար անհրաժեշտ է ծրագրավորող: Մեկը պատրաստեցի շերտի տախտակից, Arduino Pro Mini- ից, մի քանի հատ 74HC595 և ZIF վարդակից: Ի սկզբանե, ծրագրավորողը ստեղծվել է AT28C16- ի համար, որն ունի ավելի քիչ հասցեատողեր, քան AT28C256- ը, ուստի պետք է փոփոխվեր:
Շղթայի դիագրամը ցույց է տալիս, թե ինչպես միացնել այս երկու EEPROM- երը: Լուսանկարից պարզ չէ, որ երկու 595 չիպերը գլխիվայր են և ոչ այնպես, ինչպես ցույց է տրված դիագրամում: 595/1 -ի 1 -ից 7 -րդ կապերը համընկնում են EEPROM- ի A1- ից A7- ի հետ `անկախ նրանից, թե որն է օգտագործվում: Սա խնայում է 7 միացնող լարերը: Տախտակն այժմ մի փոքր ամուր տեսք ունի, և դա այն պատճառով է, որ ի սկզբանե ես օգտագործել եմ 24 պինանոց DIL վարդակից, որն այժմ փոխարինվել է շատ ավելի մեծ 28 ZIN վարդակով:
Ներառված է ծրագիր, որն աշխատում է իմ խորհրդի հետ: Theրագիրը կաշխատի ցանկացած Arduino- ի և 595 -ի հետ միացումով, ինչպես ցույց է տրված: Ես ընտրեցի 5v Pro Mini- ն, քանի որ այն կոմպակտ է և բավական էժան ՝ տեղադրման մեջ թողնելու համար:
Քայլ 4: EEPROM ծրագրեր
EEPROM ծրագրավորողում կա երեք պարզ ծրագիր: Դրանք օգտագործելու համար պարզապես մեկնաբանեք այն տողը, որը ցանկանում եք օգտագործել:
// Կարդալ 6522 -ի A նավահանգստից
// const բայթ տվյալներ = {0xA9, 0x00, 0x8D, 0x03, 0x60, 0xAD, 0x01, 0x60, 0x4C, 0x05, 0x90, 0x00};
Programրագիրը ցուցադրում է հիշողության աղբանոց, երբ այն ավարտվում է: Ստորև բերված ծրագրի մասը ձեզ լիովին վերահսկում է այն, ինչ ցանկանում եք գրել կամ ջնջել, սահմանում է $ FFFC և $ FFFD և այնուհետև ցուցադրում է տվյալ տիրույթի բովանդակությունը: Պարզապես մեկնաբանեք կամ փոփոխեք պարամետրերը, ինչպես դուք եք պահանջում: Հասցեները կարող են մուտքագրվել նաև տասնորդական ձևաչափով:
// ջնջել EEPROM (422, 930, 0x41); // Օգտագործեք EEPROM- ի ամբողջ կամ մի մասը ջնջելու համար `սկիզբ, ավարտ, բայթ
Serial.println («mingրագրավորում EEPROM»); գումար = ծրագրի_թվային_տվյալներ (0x1000); գրել EEPROM (0x7ffc, 0x00); // Սահմանեք $ FFFC 6502 գրելու համար EEPROM (0x7ffd, 0x90); // Սահմանեք $ FFFD 6502 -ի համար // writeEEPROM (0x1000, 0xA9); // Գրել 1 բայթ տվյալներ Serial.println («կատարված է»); String outline = "Գրված է" + (Լարային) գումար + "բայթ"; Serial.println (ուրվագիծ); Serial.println («Ընթերցում ենք EEPROM»); printContent (0x0000, 0x112f); // Սահմանել շրջանակը printContents- ի ցուցադրման համար (0x7ff0, 0x7fff); // Կարդում է վերջին 16 բայթերը EEPROM- ում
Programրագրից կրճատված ելքը վերևում է:
Քայլ 5. 6502 -ի գործարկում EEPROM- ից
Medրագրավորված EEPROM- ն այժմ կարող է տեղադրվել դրա տախտակի մեջ, և այս խոզուկը հետ է մնում հիմնական 6502 տախտակին, որը խոզուկը հետ է մնում MEGA- ին: Կողքի և վերևի լուսանկարները վերևում ցույց են տալիս, թե ինչպես է այդ ամենը համընկնում:
6502 -ն այժմ կարող է կարդալ սկզբնական վեկտորը $ FFFC- ից և $ FFFD- ից (որը $ 9000 է), այնուհետև անցնել այնտեղ պահված ծրագրին: MEGA- ն դեռ ապահովում է ժամացույցի ազդանշանը, և դրա ծրագիրը պետք է փոխվի `միայն ժամացույցի ազդանշանը ապահովելու և 6502 -ը վերահսկելու համար: Դրա համար նախատեսված է փոփոխված ծրագիր:
Վազող լուսանկարը ցույց է տալիս, որ այս ծրագիրը գործում է:
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 JMP $ 900A 4C 0A 90
Անջատիչները միացված են A պորտին, և ծրագիրը ցուցադրում է այն արժեքը, որը կարդում է B նավահանգստում և 74HC373- ում (որը ներկայումս քողարկված է): անջատիչները միացված են գետնին, իսկ LED- ները միացված են 5 վ -ին: EOR #$ FF- ն ուղղում է սողնակի և B նավահանգստի տարբեր ձևերի ցուցադրման խնդիրը `բիթերը պտտելով փականին գրելուց առաջ:
Քայլ 6: Արտաքին ժամանակի ազդանշան
Եթե տախտակի վերին մասում տեղադրված ժամացույցի ազդանշանը կիրառվի, ապա 6502 -ն այժմ կարող է աշխատել MEGA- ից անկախ: Իհարկե, այն նաև էներգիայի մատակարարման կարիք ունի: Ես փորձեր եմ կատարել տարբեր ժամացույցների հետ և նույնիսկ աշխատել եմ 6502 -ով 1 ՄՀց հաճախականությամբ ՝ բյուրեղյա տատանումով: MEGA- ն չի կարող հետևել ավելի արագ արագություններին, ուստի պետք է հեռացվի:
Ես նաև փորձեցի 555 ժամաչափի ելքը, բայց դա չի աշխատում: Կարծում եմ, որ դա կարող է լինել, քանի որ դա քառակուսի ալիք չէ՞: CD4017 ելքերից մեկին միացնելիս այն 6502 -ը վարեց: Ես վերևում տեղադրեցի հավաքածուներից մեկը `ժամացույցի ազդանշան ստանալու համար:
Ես դեռ տարբեր մեթոդների եմ նայում ժամացույցի ազդանշան ստանալու համար:
Քայլ 7: Եզրակացություն
Ես ցույց տվեցի, թե ինչպես կարելի է կառուցել մի քանի բարդ սխեմաներ և ձեռք բերել շատ պարզ «համակարգիչ» `նվազագույն քանակությամբ մասերով աշխատելու համար: Edիշտ է, համակարգիչը ներկայումս չի կարող շատ բան անել կամ, ամենայն հավանականությամբ, դա կանի ապագայում:
Դեռ 80 -ականների սկզբին, իմ VIC20- ի հետ, ես մտածում էի սարսափելի մեքենայի մասին և չունեի առաջին գաղափարը, թե ինչպես սկսել այն համատեղել: Timesամանակներն անցել են, և տեխնոլոգիան նույնպես, բայց դեռ հաճելի է վերադառնալ հիմնականին և հպարտանալ այն ամենով, ինչ կառուցել ես զրոյից:
Այս համակարգիչն ավելի զարգացնելու համար ես մտադիր եմ 2k SRAM- ը դնել 0000 դոլարից մինչև 2047 դոլար և ավելացնել 1 ՄՀց տատանում: Հավանաբար, CD4040- ի (12 փուլից բաղկացած երկուական ծածանքների հաշվիչ / բաժանարար) պես մի բան կավելացնեմ, որպեսզի կարողանամ ժամացույցի տարբեր արագությունների թակել:
Կարող է նույնիսկ ավելացնել LCD էկրան `տեքստային ելքեր տալու համար, այլ ոչ թե պարզապես թարթող լույսեր: EEPROM ծրագրավորողը նույնպես պետք է փոփոխվի `LCD էկրան աշխատելու համար անհրաժեշտ ավելի մեծ ծրագրերի հետ առնչվելու համար:
Չնայած MEGA- ն դառնում է ավելորդ 6502 -ի գործարկման համար, այն, այնուամենայնիվ, ձեռնտու է մեքենայի կոդը կարգաբերելու համար: Ինչպես որևէ մեկը գիտի, մեքենայի կոդը միշտ պարունակում է սխալներ:
Խորհուրդ ենք տալիս:
6502 & 6522 Նվազագույն համակարգիչ (Arduino MEGA- ով) Մաս 2: 4 քայլ
6502 և 6522 նվազագույն համակարգիչ (Arduino MEGA- ի հետ) Մաս 2. Իմ նախկին Instructable- ից հետո, այժմ ես 6502 -ը դրել եմ ժապավենի տախտակի վրա և ավելացրել 6522 բազմակողմանի ինտերֆեյսի ադապտեր (VIA): Կրկին, ես օգտագործում եմ 6522 -ի WDC տարբերակը, քանի որ այն կատարյալ համընկնում է նրանց 6502 -ի հետ: Ոչ միայն այս նոր գ
6502 Նվազագույն համակարգիչ (Arduino MEGA- ով) Մաս 1: 7 քայլ
6502 նվազագույն համակարգիչ (Arduino MEGA- ի հետ) Մաս 1. 6502 միկրոպրոցեսորը առաջին անգամ հայտնվեց 1975 թվականին և նախագծված էր փոքր թիմի կողմից ՝ Չակ Փեդլի գլխավորությամբ, MOS տեխնոլոգիայի համար: Այն ժամանակ այն օգտագործվում էր տեսախցիկների և տնային համակարգիչների մեջ, ներառյալ Atari, Apple II, Nintendo Entertainment System, BBC Micr
Նվազագույն Arduino ձայնային էֆեկտի տուփ ՝ 5 քայլ
Minimal Arduino Sound Effect Box. Սա ձայնային էֆեկտի տուփի արագ նախագիծ է: Սարքը կարդում է նախապես գրանցված wav ֆայլը microSD- ից, որը տրված է հատուկ կոճակին և նվագում է այն սեղմելիս:
Համակարգիչ RE Systems- ի համար (2 -րդ մաս 1) (Սարքավորումներ) ՝ 5 քայլ
Համակարգիչ RE Systems- ի համար (2 -րդ մաս 1) (Սարքաշար). Այստեղ ես ձեզ ցույց կտամ, թե ինչպես եմ պատրաստել վերականգնվող էներգիայի փոքր համակարգերի համար լիովին աշխատող Mini Desktop համակարգիչ: RE համակարգը, որը ես նախատեսում եմ օգտագործել, լինելու է հիմնականում 12 վոլտ համակարգ: 6 կամ 8 Golf Cart մարտկոցներով, և ես կունենամ 700 վտ հզորություն inver
Համակարգիչ RE Systems- ի համար (2 -րդ մաս 2 -ից) (Softwareրագրային ապահովում) `6 քայլ
Համակարգիչ RE Systems- ի համար (2-րդ մաս 2) (Softwareրագրային ապահովում). Այս հրահանգի առաջին մասում տեղադրված է այստեղ ՝ https://www.instructables.com/id/Computer-for-RE-Systems-Part-1-of-2 -Hardware/, ես ավելացրել եմ այն բոլոր սարքավորումները, որոնք ցանկանում էի ստանալ լավ աշխատասեղան համակարգ: Այժմ ծրագրաշարի համար, բայց ծրագրակազմից առաջ