Բովանդակություն:
- Քայլ 1: PCB- ի աղբյուրների ձեռքբերում
- Քայլ 2: Բաղադրիչների ձեռքբերում
- Քայլ 3. oldոդման գործիքի ակնարկ
- Քայլ 4. oldոդում #1. Դիմադրիչների և կոնդենսատորների ավելացում
- Քայլ 5. oldոդում #2. Ստեղնաշարի հավաքում
- Քայլ 6: oldոդում #3. Յոթ հատվածի ցուցադրում, անջատիչ և կապում վերնագիր
- Քայլ 7: oldոդում #4. Միկրոկոնտրոլերի զոդում
- Քայլ 8: oldոդում #5: Ավելացրեք մարտկոցի կրիչները (վերջին քայլը)
- Քայլ 9. Flashրամեկուսացման էմուլյատոր
- Քայլ 10: Ավարտված
- Քայլ 11: PCB նախագծման վերլուծություն
- Քայլ 12. Ինչպե՞ս ծրագրել SUBLEQ:
- Քայլ 13: Outlook
Video: The KIM Uno - 5 € միկրոպրոցեսոր Dev Kit Emulator: 13 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:48
KIM Uno- ն (ռետրո) միկրոպրոցեսորների համար նախատեսված շարժական, ծրագրակազմով մշակված ծրագրակազմ է: Բայց թույլ տվեք ներկայացնել դրա գաղափարը ՝ ժամանակի հետ գնալով.
Դեռևս 2018-ի վերջին մտքովս անցավ, որ ես ուզում եմ կառուցել մի փոքր դյուրակիր միկրոպրոցեսորային մշակման սարք, ինչպես MOS Technology, Inc.- ի հայտնի KIM-1- ը և նախագծված է Չակ Պեդլի կողմից, ով նաև մասնակցում էր 6502 պրոցեսորի ստեղծմանը:
Բայց առանձին տրամաբանության բաղադրիչներով «մերկ ոսկորների» սարք ստեղծելը տարբերակ չէր, քանի որ դրա համար անհրաժեշտ էր մեծ էներգիայի մատակարարում (քանի որ այդ հին սարքերը հակված են լուրջ հոսանքի), և զարգացումը շատ ժամանակատար կլինի: Եվ ես հիմա ուզում եմ:
Հետևաբար, ես նախագծեցի KIM Uno- ն որպես շարժական սարք, որը տեղավորվում է մի ձեռքում և սնվում է երկու CR2032 մարտկոցով: Այն օգտագործում է ATMega328p («Arduino») միկրոկոնտրոլերը, որն աշխատում է 8 ՄՀց հաճախականությամբ, ընդօրինակելու (կամ նմանակելու) համար անհրաժեշտ պրոցեսորը: Այս ճարտարապետությունը նաև համոզված է, որ ընդօրինակված պրոցեսորները փոխարինելի են այն ամենին, ինչը տեղավորվում է միկրոկոնտրոլերի ֆլեշ հիշողության մեջ: Այսպիսով, դա բազմաֆունկցիոնալ սարք է:
Byուգադիպությամբ ես ավելի ուշ դիտեցի մի իսկապես լավ զրույց `« The Ultimate Apollo Guidance Computer Talk (34C3) » - YouTube- ում, որտեղ նշված են« One Instruction Set Computers »կամ OISC- ներ: Ես չգիտեի դրանց մասին և սա գտա որպես այն իրականացնելու կատարյալ թեկնածու:
KIM Uno- ն ընդօրինակում է պրոցեսորը ընդամենը մեկ հրահանգով. Subleq - հանում և ճյուղավորում, եթե զրոյից փոքր կամ հավասար է:
Եթե դուք հետևեք ինձ հետ այս Instructable- ի միջոցով, կարող եք կարճ ժամանակում կառուցել ձեր սեփական KIM Uno- ն: Եվ ամենալավ մասը, բացի այն, որ դուք կարող եք այն փոխել ձեր ճաշակի համաձայն, այն է, որ դրա պատրաստումն արժե ընդամենը 4, 75 եվրո (2018 թվականի վերջի դրությամբ):
Մեկ հուշում. Կա Git պահեստ, որը պարունակում է բոլոր ֆայլերը, որոնք տրված են այս հրահանգի տարբեր քայլերով: Եթե ցանկանում եք փոփոխել որոշ ռեսուրսներ և դրանք կիսել մեզ հետ, կարող եք PR անել: Բայց այնտեղ կարող եք միանգամից ներբեռնել բոլոր ֆայլերը: Պարզապես դեպի https://github.com/maxstrauch/kim-uno: Շնորհակալություն
Կա ևս մեկ բավականին հետաքրքիր նախագիծ, որը կոչվում է նույնը (KIM Uno), որը կատարում է 6502 KIM Uno- ի իրական կրկնօրինակը: Ստուգեք այստեղ: Ստեղծողը նույնիսկ վաճառում է հանդերձանքը: Այսպիսով, եթե ձեզ հետաքրքրում է 6502 -ը և ձեզ դուր է գալիս այս նախագիծը, ապա պետք է այնտեղ նայեք:
Քայլ 1: PCB- ի աղբյուրների ձեռքբերում
Ինչպես տեսնում եք, ես օգտագործեցի հնարավորությունը ՝ նախագծել PCB և թողնել, որ այն պրոֆեսիոնալ պատրաստված լինի: Քանի որ այն արտաքին արտադրելը և ձեզ առաքելը ձեզ շատ ժամանակ կպահանջի (կախված աշխարհի գտնվելու վայրից;-)), այն պատվիրելն առաջին քայլն է: Այնուհետև մենք կարող ենք շարունակել մյուս քայլերով, քանի դեռ PCB- ն պատրաստվել է և ուղարկվել ձեզ:
Ես պատվիրեցի իմ PCB- ները Չինաստանում PCBWay- ում ՝ ընդամենը 5 դոլարով: Ես ոչ մի օգուտ չեմ ստանում PCBWay- ը որպես PCB- ների իմ արտադրած արտադրողի ներկայացման համար, պարզապես այն ինձ համար լավ էր աշխատում և կարող էր նաև լավ աշխատել ձեզ համար: Բայց դրանք կարող եք պատվիրել ցանկացած այլ վայրում, ինչպիսիք են JLCPCB- ն, OSH Park- ը կամ PCB- ի ցանկացած տեղական ընկերություն:
Բայց եթե պատրաստ եք դրանք պատվիրել PCBWay- ում, կարող եք ներբեռնել կցված ZIP ֆայլը «kim-uno-rev1_2018-12-12_gerbers.zip» և առանց որևէ փոփոխության այն ուղղակիորեն վերբեռնել PCBWay- ում: Սա այն օրիգինալ ֆայլն է, որն օգտագործել եմ PCB- ներ պատվիրելու համար, որոնք կարող եք տեսնել նկարներում:
Եթե դրանք պատվիրում եք այլ արտադրողից, գուցե անհրաժեշտ լինի դրանք վերաարտահանել KiCad- ի սկզբնաղբյուրներից, քանի որ դրանք ես ստեղծել եմ PCBWay- ի բնութագրերով, որոնք կարող եք գտնել այստեղ: KiCad- ի սկզբնական աղբյուրների համար ներբեռնեք «kim-uno-kicad-sources.zip» և հանեք այն:
Բայց կա նույնիսկ երկրորդ միջոց. Եթե չեք ցանկանում պատվիրել PCB, կարող եք կառուցել ձեր սեփական տարբերակը `օգտագործելով տախտակ կամ նույնիսկ տախտակ:
Ամեն դեպքում. Քանի որ PCB- ները այժմ ճանապարհին են, մենք կարող ենք կենտրոնանալ մյուս մասերի վրա: Արի, հետևիր ինձ:
Քայլ 2: Բաղադրիչների ձեռքբերում
Այժմ դուք պետք է ձեռք բերեք բաղադրիչները: Դրա համար դուք կգտնեք ձեզ անհրաժեշտ բոլոր բաղադրիչների և քանակների ակնարկ, որը կցված է այս քայլին, ինչպես նաև BOM (նյութերի հաշիվ):
BOM- ը պարունակում է հղումներ eBay- ին: Թեև այդ առաջարկները կարդալիս կարող եք փակվել, բայց կարող եք այն օգտագործել որպես ելակետ: Օգտագործված բաղադրիչները բավականին ստանդարտ են:
Ստորև ես ձեզ կբացատրեմ անհրաժեշտ բոլոր բաղադրիչները.
- 7x 1 kΩ դիմադրիչներ յոթ հատվածի էկրանների համար: Դուք կարող եք նվազեցնել արժեքը (օրինակ ՝ մինչև 470 Ω), որպեսզի դրանք ավելի պայծառ փայլեն, բայց ոչ այնքան շատ, այլապես LED- ները կսատկվեն, կամ մարտկոցը շատ արագ լիցքաթափվում է: Ես գտա, որ այս արժեքը աշխատում է ինձ համար
- 1x 10 kΩ ՝ որպես միկրոկառավարիչի RESET գծի ձգվող դիմադրություն
- 1x 100nF կոնդենսատոր `լարման ցանկացած ցնցում հարթեցնելու համար (ինչը չպետք է տեղի ունենա, քանի որ մենք մարտկոցներ ենք օգտագործում, ճիշտ է, բայց լավ չափման համար …)
- 1x ATMega328P DIP-28 փաթեթում (սովորաբար անվանում են ATMega328P-PU)
- 1x հիմնական PCB - տես նախորդ քայլը. կամ պատվիրված, կամ կառուցված ձեր կողմից
- 2x CR2032 մարտկոցի կրիչներ
- 1x SPDT (մեկ բևեռ, կրկնակի նետում) անջատիչ, որը հիմնականում ունի երեք կոնտակտ և իր երկու վիճակներից յուրաքանչյուրում (միացված կամ անջատված) միացնում է երկու կոնտակտ
- 20x շոշափելի կոճակներ ստեղնաշարի համար: PCB- ի հետույքն օգտագործելու համար ես օգտագործել եմ SMD շոշափելի կոճակներ (ստանդարտ 6x6x6 մմ) - դրանք բավականին հեշտ է զոդել, ինչպես կտեսնեք:
- ԸՆՏՐՈԹՅՈՆ. 1x 1x6 փին վերնագիր `ծրագրավորողին միացնելու համար, բայց սա պարտադիր չէ, ինչպես կտեսնեք ավելի ուշ
- 1x յոթ հատվածի էկրան ՝ 4 թվանշանով և 1x յոթ հատվածի ցուցադրում ՝ 2 թվանշանով. Երկու պահանջներն էլ կարևոր են աշխատանքային միավոր ստանալու համար: Բայց նաև յոթ հատվածի ցուցադրման այս տեսակը շատ տարածված է
Այս քայլին կից կարող եք գտնել «component-datasheets.zip» ֆայլը, որը պարունակում է ավելի ճշգրիտ տեղեկատվություն օգտագործված բաղադրիչների չափերի և տեսակների մասին: Բայց բաղադրիչների մեծ մասը շատ ստանդարտ են և կարող են հեշտությամբ ձեռք բերվել փոքր գումարների դիմաց:
Այժմ դուք պետք է սպասեք, մինչև պատրաստ լինեն բոլոր բաղադրիչները ՝ շարունակելու եռակցումը: Այս ընթացքում արդեն կարող եք ցատկել մինչև վերջ և ցանկության դեպքում մի փոքր կարդալ KIM Uno- ի օգտագործման մասին:
Քայլ 3. oldոդման գործիքի ակնարկ
KIM Uno- ի զոդման և կառուցման համար ձեզ հարկավոր են գործիքներով պատկերված գործիքները.
- Հաղորդալար (բաղադրիչ լարերի ծայրը կտրելու համար)
- Հարթ տափակաբերան աքցան
- Պինցետների զույգ
- (պարկեշտ) oldոդիչ, որը հաստ չէ - ես օգտագործում եմ 0.56 մմ զոդ
- Soldոդման երկաթ. Ձեզ պետք չէ բարձրակարգ զոդիչ (քանի որ մենք այստեղ նույնպես հրթիռագիտություն չենք անում) - ես երկար ժամանակ օգտագործում եմ Ersa FineTip 260 -ը և այն իսկապես լավ է:
- Հեղուկ գրիչ. Բաղադրիչներին և բարձիկներին հոսք ավելացնելը շատ ավելի հեշտ է դարձնում դրանք զոդելը, քանի որ զոդումն այնուհետև ինքնուրույն «հոսում» է ճիշտ տեղում*
- Ptionանկության դեպքում `սպունգ (մետաղի բուրդից) ձեր եռակցման երկաթի համար
KIM Uno- ն հետագայում ծրագրելու համար ձեզ նույնպես պետք է.
- համակարգիչ ՝ AVR-GCC գործիքակազմով և avrdude ՝ որոնվածը ներբեռնելու համար
- ISP (ծրագրավորող).
* անհրաժեշտ են որոշ մարդկանց ուղեցույցներ;-)
Պատրաստ ես? Հաջորդ քայլում մենք պատրաստվում ենք սկսել KIM Uno- ի հավաքումը:
Քայլ 4. oldոդում #1. Դիմադրիչների և կոնդենսատորների ավելացում
Դուք միշտ պետք է աշխատեք ամենափոքրից (բաղադրիչի բարձրության առումով) նախ `ամենաբարձր բաղադրիչներից մինչև վերջինը: Հետևաբար, մենք սկսում ենք ռեզիստորների ավելացումով և հետևի ոտքերի վրա թեքվելով, որպեսզի դիմադրիչները հեշտությամբ կպչեն և մնան տեղում: Դրանից հետո կտրեք երկար լարերը:
Բացի այդ, պատկերներում ցուցադրված չէ, նույն կերպ ավելացրեք փոքր 100 nF կոնդենսատորը:
Մի խորհուրդ. Պահեք այդ մետաղալար ոտքերը մի փոքր տարայի մեջ, դրանք երբեմն օգտակար են:
Քայլ 5. oldոդում #2. Ստեղնաշարի հավաքում
Հաջորդ քայլը 20 SMD շոշափելի անջատիչների զոդումն է: Քանի որ այս աշխատանքը մի փոքր անհեթեթ է, մենք դա անում ենք հիմա, երբ PCB- ն հարթ տեղադրվում է աշխատասեղանին:
Մենք կաշխատենք վերևից ներքև (կամ ձախից աջ, եթե PCB- ն կողմնորոշված է, ինչպես ցույց է տրված լուսանկարներում) և կսկսենք առաջին տողից. Յուրաքանչյուր անջատիչի համար ընտրեք չորս բարձիկներից մեկը և թրջեք այն հոսքի գրիչով:
Այնուհետև մի պինցետ օգտագործեք անջատիչը և այն զգուշորեն տեղադրեք չորս բարձիկների վրա: Այնուհետև կպցրեք անջատիչի միայն այն ոտքը, որը գտնվում է ձեր ընտրած և պատրաստած հոսքով: Դրա համար սկսելուց առաջ պետք է «բռնեք» ինչ -որ զոդ ձեր երկաթով: Օգտագործելով այս մեթոդը, լրացրեք անջատիչների ամբողջ շարանը `զոդելով միայն մեկ ոտքը:
Նետերով պատկերված պատկերը ցույց է տալիս խոշորացում, թե ինչպես է ճշգրիտ կատարվել զոդումը:
Ամբողջ շարանը միացնելուց հետո (միայն մեկ քորոց) կարող եք փոքր ճշգրտումներ կատարել ՝ տաքացնելով քորոցը և միացնելով անջատիչը: Համոզվեք, որ անջատիչները հնարավորինս հավասարեցված են:
Եթե դուք գոհ եք դասավորվածությունից, կարող եք թրջել մնացած բոլոր կապումները հոսքի գրիչով, այնուհետև դրանք զոդել `դիպչելով այն զոդման երկաթով և ավելացնելով մի փոքր զոդ` նույնպես դիպչելով դրան: Դուք կտեսնեք, որ զոդը ներծծվում է անմիջապես բարձի վրա:
Շարքը մոտավորապես կպցնելուց հետո կնկատեք, որ գլուխ եք հանում դրանից, և դա այդքան էլ դժվար չէ, բայց կրկնվող: Այսպիսով, պարզապես արեք մնացածը, և շուտով կավարտվեք ավարտված ստեղնաշարով:
Քայլ 6: oldոդում #3. Յոթ հատվածի ցուցադրում, անջատիչ և կապում վերնագիր
Այժմ կարող եք ավելացնել անջատիչն ու կապի վերնագիրը (ըստ ցանկության) ՝ այն մատով պահելով և մեկ քորոցը կպցնելով, որպեսզի այն կպցնել PCB- ին, այնպես որ կարող եք զոդել մյուս կապումներն ու վերջապես դիպչել նախնական բռնակին:
Carգույշ եղեք, որ տաք այրվող երկաթով չայրվեք: Եթե դա ձեզ հարմար չէ, կարող եք օգտագործել մի փոքր ժապավեն (օրինակ ՝ նկարչի ժապավեն) ՝ բաղադրիչը պահելու համար: Այսպիսով, դուք երկու ձեռքեր ունեք ազատ շարժվելու համար:
Յոթ հատվածի դիսփլեյները կպչում են նույն կերպ (տես նկարը). Դուք դնում եք այն, պահում եք ձեր ձեռքով կամ ժապավենով և զոդում երկու հակառակ կապում, որպեսզի այն մնա տեղում, իսկ մյուս կապերը կարող եք զոդել:
Բայց զգույշ եղեք և յոթ հատվածի ցուցադրումը դրեք ճիշտ ուղղությամբ (տասնորդական կետերը ՝ դեպի ստեղնաշարը): Հակառակ դեպքում դժվարության մեջ եք…
Քայլ 7: oldոդում #4. Միկրոկոնտրոլերի զոդում
Այժմ, երբ դուք շատ պրակտիկա ունեք, կարող եք առաջ գնալ և միկրոկառավարիչ տեղադրել, որի վերևում գտնվող խազը (կամ առաջին քորոցը) ուղղված է դեպի անջատիչը: Flat տափակաբերան աքցան օգտագործելով, կարող եք մի փոքր ներս թեքել միկրոկառավարիչի ոտքերը, որպեսզի դրանք համապատասխանեն PCB- ի անցքերին:
Քանի որ այն ամուր տեղավորվում է, միկրոկոնտրոլերը տեղադրելու համար անհրաժեշտ է որոշակի վերահսկվող ուժ: Առավելությունն այն է, որ այն չի ընկնում: Սա նշանակում է, որ դուք կարող եք ժամանակ վերցնել և զոդել այն հետևից:
Քայլ 8: oldոդում #5: Ավելացրեք մարտկոցի կրիչները (վերջին քայլը)
Ի վերջո, անհրաժեշտ է մարտկոցի ամրակները ավելացնել հետևի մասում: Դրա համար դուք պարզապես օգտագործում եք հոսքի գրիչը և թրջում բոլոր չորս բարձիկները, այնուհետև մի քիչ կպցնում ձեր արդուկի վրա: Երկու բարձիկների վրա զգուշորեն հավասարեցրեք մարտկոցի բռնիչը: Կոնտակտների երկու ծայրերում պետք է տեսանելի լինի նույն չափի PCB պահոցը: Ձեր արդուկով դիպչեք PCB- ի բարձիկին և մարտկոցի կրիչի ոտքին: Theոդիչը հոսելու է պահոցի տակ և դրա վրայով և ամրացնելու այն տեղում, ինչպես ցույց է տրված նկարում: Եթե դրա հետ կապված խնդիրներ ունեք, կարող եք գրիչի հետ ավելի շատ հոսք ավելացնել:
Քայլ 9. Flashրամեկուսացման էմուլյատոր
Կցված zip արխիվում «kim-uno-firmware.zip» կարող եք գտնել էմուլյատորի սկզբնաղբյուրը ՝ արդեն կազմված «main.hex»-ի հետ, որը կարող եք ուղղակիորեն վերբեռնել միկրոկառավարիչին:
Նախքան այն իրականում օգտագործելը, դուք պետք է սահմանեք միկրոկառավարիչի ապահովիչների բիթերը, որպեսզի այն օգտագործի ներքին 8 ՄՀց ժամացույցը ՝ առանց այն կիսով չափ բաժանելու: Դուք կարող եք աշխատանքը կատարել հետևյալ հրամանով.
avrdude -c stk500v1 -b 9600 -v -v -P /dev/cu.usbmodem1421 -p m328p -U lfuse: w: 0xe2: m -U hfuse: w: 0xd9: m -U efuse: w: 0xff: m
Եթե չգիտեք avrdude- ը, դա միկրոկոնտրոլերի վրա ծրագրեր վերբեռնելու ծրագիր է: Դրա մասին ավելին կարող եք իմանալ այստեղ: Հիմնականում դուք տեղադրեք այն, այնուհետև այն պատրաստ է օգտագործման համար: Ձեր կարգավորման համար գուցե անհրաժեշտ լինի «-P»-ի փաստարկը փոխել այլ սերիական նավահանգստի: Խնդրում ենք ձեր համակարգչում ստուգել, թե որ սերիալային պորտն է օգտագործվում (օրինակ ՝ Arduino IDE- ի ներսում):
Դրանից հետո դուք կարող եք որոնվածը միացնել միկրոկառավարիչի վրա այս հրամանով.
avrdude -c stk500v1 -b 9600 -v -v -P /dev/cu.usbmodem1421 -p m328p -U flash: w: main.hex
Կրկին. Նույնը վերաբերում է «-P»-ին, ինչպես վերևում:
Քանի որ ես «պրոֆեսիոնալ» պրովայդեր (համակարգում ծրագրավորող) չունեմ, ես միշտ օգտագործում եմ իմ Arduino UNO- ն (տես նկարը) և այն կցված էսքիզը («arduino-isp.ino», Ռանդալ Բոնից): Ես գիտեմ, որ կա ավելի նոր տարբերակ, բայց այս տարբերակի հետ ես վերջին հինգ տարիների ընթացքում զրո խնդիր ունեի, ուստի այն պահում եմ: Այն պարզապես աշխատում է: Էսքիզների վերնագրի մեկնաբանության միջոցով դուք ստանում եք Arduino UNO- ի pinout- ը և օգտագործելով KIM Uno- ի սխեման (տես կցվածը) կարող եք ստանալ 1x6 ISP վերնագրի pinout- ը KIM Uno- ում: Քառակուսի քորոցը, յոթ հատվածի ցուցադրման կողքին, 1 -ն է (GND): Հետևյալ կապումներն են (ճիշտ կարգով) ՝ RESET, MOSI, MISO, SCK, VCC: Դուք կարող եք VCC- ն միացնել 3V3- ին կամ 5V- ին:
Եթե դուք չեք ավելացրել 1x6 կապի վերնագիրը, կարող եք օգտագործել տախտակի լարերը և դրանք դնել միացման անցքերի մեջ և մատով թեքել դրանք, ինչպես ցույց է տրված նկարում: Սա բավականաչափ կոնտակտ է ստեղծում `որոնվածը բռնկելու և ապահովիչները տեղադրելու համար: Բայց եթե ձեզ դուր է գալիս ավելի մշտական տեղադրում, ապա անպայման պետք է ավելացնեք 1x6 փին վերնագրերը:
Ես ունեմ երկու սարք ՝ արտադրական տարբերակ ՝ առանց քորոց վերնագրերի, և մշակման տարբերակ ՝ քորով վերնագրերով, որոնք թողնում եմ միացված և դրանք անընդհատ օգտագործում զարգացման ընթացքում: Սա շատ ավելի հարմարավետ է:
Քայլ 10: Ավարտված
Այժմ դուք ավարտել եք և կարող եք սկսել գրել ձեր սեփական ենթածրագրի ծրագրերը թղթի վրա, հավաքել այն, այնուհետև մտցնել հիշողության մեջ:
KIM Uno- ն գալիս է նախապես ծրագրավորված Ֆիբոնաչիի հաշվարկով `սկսած 0x0a հիշողության վայրից: Այն կանխադրված է n = 6 -ի, այնպես որ այն պետք է հանգեցնի 8 -ի: Հաշվարկը սկսելու համար կտտացրեք «Գնալ»:
Քայլ 11: PCB նախագծման վերլուծություն
Այս նախագիծն ավարտելուց հետո ես գտա մի քանի կետ, որոնք ուշագրավ են և պետք է անդրադառնան խորհրդի նոր վերանայմանը.
- ATMega328p- ի մետաքսե էկրանը սովորական խազ չունի, որտեղ գտնվում է առաջին քորոցը: DIP-28 ոտնահետքը նույնիսկ չունի քառակուսի պահոց, որտեղ գտնվում է առաջին քորոցը: Սա անպայման պետք է բարելավվի ավելի մանրամասն մետաքսե էկրանով `շփոթությունը կանխելու համար
- ISP վերնագիրը մետաքսե էկրանին միացման պիտակներ չունի: Սա դժվարացնում է ճանաչել, թե ինչպես միացնել այն ISP- ին
- ISP- ի վերնագիրը կարող է փոխվել 2x6 փին վերնագրի `ստանդարտ կապի դասավորությամբ` ցանկացած շփոթություն կանխելու համար
Բացի այդ կետերից, ես շատ ուրախ եմ, թե ինչպես ստացվեց և աշխատեց առաջին փորձի ժամանակ:
Քայլ 12. Ինչպե՞ս ծրագրել SUBLEQ:
Ինչպես նշվեց սկզբում, KIM Uno- ի ընթացիկ որոնվածը նմանակում է One Instruction Set Computer (OISC) համակարգին և տրամադրում է subleq հրահանգ ՝ հաշվարկներ կատարելու համար:
Subleq հրահանգը նշանակում է հանել և ճյուղել, եթե զրոյից փոքր կամ հավասար է: Կեղծ կոդում սա հետևյալն է.
subleq A B C mem [B] = mem [B] - mem [A]; եթե (mem [B] <= 0) goto C;
Քանի որ KIM Uno- ն ընդօրինակում է 8-բիթանոց մեքենա, A, B և C բոլոր արգումենտները 8 բիթանոց արժեքներ են, ուստի այն կարող է անդրադառնալ ընդհանուր հիմնական հիշողությանը `256 բայթ: Ակնհայտ է, որ դա կարող է երկարաձգվել ՝ A, B և C բազմաբայթ արժեքներ կազմելով: Բայց առայժմ եկեք պարզ պահենք:
KIM Uno- ն ունի նաև «ծայրամասային սարքեր» ՝ էկրան և ստեղնաշար: Այն օգտագործում է հիշողության քարտեզավորված ճարտարապետություն `այդ ծայրամասային սարքերը միացնելու համար, չնայած հիշողության քարտեզը շատ պարզ է.
- 0x00 = Z գրանցամատյանը (զրո) և պետք է զրո պահվի:
- 0x01 - 0x06 = վեց բայթ, որոնք ներկայացնում են ցուցադրման յուրաքանչյուր հատվածի արժեքը (աջից ձախ): 0xf արժեք - մանրամասն տես աղբյուրի կոդը (main.c):
- 0x07, 0x08, 0x09 = երեք բայթ, որտեղ յուրաքանչյուր բայթ ներկայացնում է երկու յոթ հատվածի ցուցադրում (աջից ձախ): Հիշողության այս վայրերը թույլ են տալիս պարզապես ցուցադրել արդյունքը ՝ առանց արդյունքը երկու բծերի բաժանելու, որպեսզի այն տեղադրեն մեկանիշ նիշերի հիշողության 0x01 - 0x06 վայրերում:
- 0x0a+ = startsրագիրը սկսվում է 0x0a- ից: Ներկայումս «Գնալ» ստեղնը գործում է 0x0a ֆիքսվածից:
Այս տեղեկատվության շնորհիվ այժմ կարելի է ծրագիր գրել assembler- ում և հրահանգները մտցնել հիշողության մեջ, այնուհետև կատարել այն: Քանի որ կա միայն մեկ հրահանգ, մուտքագրվում են միայն փաստարկները (A, B և C): Այսպիսով, հիշողության երեք վայրերից հետո սկսվում են հաջորդ հրահանգների փաստարկները և այլն:
Այս քայլին կից կարող եք գտնել «retracement.ս» ֆայլը, ինչպես նաև ձեռագիր ծրագրի պատկերը, որը Ֆիբոնաչիի իրականացման օրինակ է: Բայց սպասեք. Օգտագործվում են երեք հրահանգներ `մասնավորապես ADD, MOV և HLT, որոնք ենթակետ չեն: «Ի՞նչ գործարք կա, չե՞ք ասել, որ միայն մեկ հրահանգ կա ՝ ենթակետ»: հարցնում ես Դա շատ հեշտ է. Subleq- ով կարելի է շատ հեշտ ընդօրինակել այդ հրահանգները.
MOV a, b - a- ից b վայրում տվյալները կարող են պատճենվել
- subleq b, b, 2 (հաջորդ հրահանգը)
- subleq a, Z, 3 (հաջորդ հրահանգը)
- subleq Z, b, 4 (հաջորդ հրահանգը)
- subleq Z, Z, օր. 5 (հաջորդ հրահանգը)
Օգտագործելով subleq- ի հանման հատկանիշը, որը կատարում է mem - mem [a] և արդյունքում վերագրում է mem , արժեքը պատճենվում է զրոյական գրանցամատյանի միջոցով: Իսկ «subleq Z, Z,…» - ն պարզապես զրոյական գրանցամատյանը վերակայում է 0 -ի ՝ անկախ Z- ի արժեքից:
ADD a, b - ավելացնում է a + b արժեքները և պահում է b- ի գումարը, որը կարող է բաղկացած լինել
- subleq a, Z, 2 (հաջորդ հրահանգը)
- subleq Z, b, 3 (հաջորդ հրահանգը)
- subleq Z, Z, օր. 4 (հաջորդ հրահանգը)
Այս հրահանգը պարզապես հաշվարկում է mem - (- mem [a]), որը mem + mem [a] է ՝ օգտագործելով նաև հանում հատկությունը:
HLT - դադարեցնում է պրոցեսորը և ավարտում կատարումը
Ըստ սահմանման, emulator- ը գիտի, որ պրոցեսորը ցանկանում է դադարեցնել, եթե այն անցնի 0xff (կամ -1, եթե երգվի): Այսպիսով, մի պարզ
subleq Z, Z, -1
կատարում է աշխատանքը և ցույց է տալիս էմուլյատորին, որ այն պետք է ավարտի էմուլյացիան:
Օգտագործելով այս երեք պարզ հրահանգները ՝ Ֆիբոնաչիի ալգորիթմը կարող է իրականացվել և լավ է աշխատում: Դա պայմանավորված է նրանով, որ OISC- ն կարող է հաշվարկել այն ամենը, ինչ «իրական» համակարգիչը կարող է հաշվարկել միայն հրահանգի ենթակետով: Բայց, իհարկե, կան բազմաթիվ փոխզիջումներ, ինչպիսիք են կոդի երկարությունը և արագությունը: Այնուամենայնիվ, դա հիանալի միջոց է սովորելու և փորձարկելու ցածր մակարդակի ծրագրային ծրագրավորում և համակարգիչներ:
Այս քայլին կից կարող եք գտնել նաև «kim_uno_tools.zip» zip արխիվը: Այն պարունակում է KIM Uno- ի որոշ հիմնական հավաքող և սիմուլյատոր: Դրանք գրված են NodeJS- ում. Համոզվեք, որ այն տեղադրել եք:
Ծրագրերի հավաքում
Եթե դուք նայեք "retracement/retracement.ս" -ին, ապա կգտնեք, որ այն քննարկված fibonacci ծրագրի իրականացման աղբյուրն է: Այն հավաքելու և դրանից ծրագիր կազմելու համար, որը կարող է գործարկել KIM Uno- ն, մուտքագրեք հետևյալ հրամանը (արդյունահանվող «kim_uno_tools.zip» արխիվի արմատում).
node assemble.js fibonacci/retracement.s
կամ դա սխալ է տպելու, եթե դուք սխալ եք թույլ տվել, կամ թափելու եք արդյունքում ստացված ծրագիրը: Այն պահպանելու համար կարող եք պատճենել ելքը և պահել այն ֆայլում կամ պարզապես գործարկել այս հրամանը.
հանգույց assemble.js fibonacci/retracement.s> yourfile.h
Ելքը ձևաչափվում է այնպես, որ այն կարող է ուղղակիորեն ներառվել KIM Uno որոնվածում որպես C վերնագրի ֆայլ, սակայն սիմուլյատորը կարող է նաև այն օգտագործել մոդելավորելու համար: Պարզապես մուտքագրեք.
հանգույց sim.js yourfile.h
Եվ ձեզ կներկայացվի մոդելավորման արդյունքը և էկրանին KIM Uno- ից ակնկալվող ելքը:
Սա շատ կարճ ներածություն էր այս գործիքների համար. Ես խորհուրդ եմ տալիս խաղալ նրանց հետ և տեսնել, թե ինչպես են նրանք աշխատում: Այս կերպ Դուք ստանում եք խորը գիտելիքներ և սովորում եք պրոցեսորների, հրահանգների, հավաքողների և էմուլյատորների հիմքում ընկած գործունեության սկզբունքները;-)
Քայլ 13: Outlook
Շնորհավորում եմ:
Եթե կարդաք սա, հավանաբար անցաք այս ամբողջ ուսանելիի միջով և ստեղծեցիք ձեր սեփական KIM Uno- ն: Սա իսկապես հաճելի է:
Բայց ճանապարհորդությունն այստեղ չի ավարտվում. Կան անսահմանափակ տարբերակներ, թե ինչպես կարող եք փոփոխել KIM Uno- ն և հարմարեցնել այն ձեր կարիքներին և ցանկություններին:
Օրինակ, KIM Uno- ն կարող էր հագեցած լինել «իրական» ռետրո պրոցեսորի էմուլյատորով, որը կարող էր ընդօրինակել հանրահայտ MOS 6502 կամ Intel 8085, 8086 կամ 8088: Այնուհետև այն կուղղվեր դեպի իմ սկզբնական տեսլականը, նախքան OISC- ների մասին իմանալը:
Բայց կան հնարավոր այլ օգտագործումներ, քանի որ ապարատային դիզայնը բավականին ընդհանուր է: KIM Uno- ն կարող է օգտագործվել որպես…
- … Հեռակառավարիչ, օրինակ. CNC- ների կամ այլ սարքերի համար: Գուցե լարով կամ հագեցած IR դիոդով կամ ցանկացած այլ անլար ուղարկողով
- … Գրպանային (տասնվեցական) հաշվիչ: Firmware- ը կարող է շատ հեշտությամբ հարմարվել, և տախտակի դիզայնը շատ փոխելու կարիք չունի: Միգուցե մետաքսե էկրանը կարող է հարմարեցվել մաթեմատիկական գործողություններով, և հատվածների միջև եղած բացը կարող է հեռացվել: Բացի դրանից, այն արդեն պատրաստ է այս փոխակերպմանը
Հուսով եմ, որ դուք նույնքան զվարճացաք հետևելով և հույս ունենալով KIM Uno- ի կառուցման վրա, որքան ես այն նախագծել և ծրագրել էի: Եվ եթե այն երկարացնեք կամ փոփոխեք, խնդրում եմ ինձ տեղյակ պահեք: Ողջույն
Երկրորդ տեղը PCB մրցույթում
Խորհուրդ ենք տալիս:
Ձայնային թռիչք Arduino Uno- ի հետ Քայլ առ քայլ (8 քայլ) `8 քայլ
Ձայնային թռիչք Arduino Uno- ի հետ Քայլ առ քայլ (8 քայլ). Ուլտրաձայնային ձայնային փոխարկիչներ L298N Dc կանացի ադապտեր էներգիայի մատակարարում արական dc pin Arduino UNOBreadboard և անալոգային նավահանգիստներ ՝ կոդը փոխարկելու համար (C ++)
GamePi - Handheld Emulator Console: 17 քայլ (նկարներով)
GamePi - Handheld Emulator Console: Ներածություն. Այս հրահանգը նկարագրում է Raspberry Pi 3 սնուցվող ձեռքի էմուլյացիայի վահանակի կառուցվածքը. Ես այն մկրտել եմ GamePi: Կան շատ նման հրահանգներ նման սարքերի համար, բայց իմ ճաշակի համար դրանցից շատերը կամ չափազանց մեծ են, շատ փոքր են, շատ
Dev Board Breadboard: 12 քայլ (նկարներով)
Dev Board Breadboard: Այս հրահանգները ցույց են տալիս, թե ինչպես ստեղծել հատուկ տախտակի համար հատուկ տախտակ
PC Mouse Emulator օգտագործելով Arduino Uno և տվիչներ. 8 քայլ
PC Mouse Emulator- ը Arduino Uno- ի և սենսորների միջոցով. շարժումներ: Նախագիծը բաղկացած է մեկ ուլ
RGB LED գույնի հաջորդականիչ - Առանց միկրոպրոցեսոր `3 քայլ
RGB LED գույնի հաջորդականիչ - Առանց միկրոպրոցեսոր. Վերևի բազմաթիվ ծորակները օգտագործվում են «ծրագրելու» համար