Բովանդակություն:

The KIM Uno - 5 € միկրոպրոցեսոր Dev Kit Emulator: 13 քայլ (նկարներով)
The KIM Uno - 5 € միկրոպրոցեսոր Dev Kit Emulator: 13 քայլ (նկարներով)

Video: The KIM Uno - 5 € միկրոպրոցեսոր Dev Kit Emulator: 13 քայլ (նկարներով)

Video: The KIM Uno - 5 € միկրոպրոցեսոր Dev Kit Emulator: 13 քայլ (նկարներով)
Video: Կորոնավիրուս. Անհանգստացեք, մենք չենք կարող տանը փակվել: Վարակման երկրներում տագնապած անցորդները: 2024, Հունիսի
Anonim
Image
Image
The KIM Uno - 5 € միկրոպրոցեսոր Dev Kit Emulator
The KIM Uno - 5 € միկրոպրոցեսոր Dev Kit Emulator
The KIM Uno - 5 € միկրոպրոցեսոր Dev Kit Emulator
The KIM Uno - 5 € միկրոպրոցեսոր Dev Kit Emulator

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- ի աղբյուրներ
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ոդման գործիքի ակնարկ

Sոդման գործիքի ակնարկ
Sոդման գործիքի ակնարկ
Sոդման գործիքի ակնարկ
Sոդման գործիքի ակնարկ

KIM Uno- ի զոդման և կառուցման համար ձեզ հարկավոր են գործիքներով պատկերված գործիքները.

  • Հաղորդալար (բաղադրիչ լարերի ծայրը կտրելու համար)
  • Հարթ տափակաբերան աքցան
  • Պինցետների զույգ
  • (պարկեշտ) oldոդիչ, որը հաստ չէ - ես օգտագործում եմ 0.56 մմ զոդ
  • Soldոդման երկաթ. Ձեզ պետք չէ բարձրակարգ զոդիչ (քանի որ մենք այստեղ նույնպես հրթիռագիտություն չենք անում) - ես երկար ժամանակ օգտագործում եմ Ersa FineTip 260 -ը և այն իսկապես լավ է:
  • Հեղուկ գրիչ. Բաղադրիչներին և բարձիկներին հոսք ավելացնելը շատ ավելի հեշտ է դարձնում դրանք զոդելը, քանի որ զոդումն այնուհետև ինքնուրույն «հոսում» է ճիշտ տեղում*
  • Ptionանկության դեպքում `սպունգ (մետաղի բուրդից) ձեր եռակցման երկաթի համար

KIM Uno- ն հետագայում ծրագրելու համար ձեզ նույնպես պետք է.

  • համակարգիչ ՝ AVR-GCC գործիքակազմով և avrdude ՝ որոնվածը ներբեռնելու համար
  • ISP (ծրագրավորող).

* անհրաժեշտ են որոշ մարդկանց ուղեցույցներ;-)

Պատրաստ ես? Հաջորդ քայլում մենք պատրաստվում ենք սկսել KIM Uno- ի հավաքումը:

Քայլ 4. oldոդում #1. Դիմադրիչների և կոնդենսատորների ավելացում

Sոդում #1. Դիմադրության և կոնդենսատորների ավելացում
Sոդում #1. Դիմադրության և կոնդենսատորների ավելացում
Sոդում #1. Դիմադրության և կոնդենսատորների ավելացում
Sոդում #1. Դիմադրության և կոնդենսատորների ավելացում
Sոդում #1. Դիմադրության և կոնդենսատորների ավելացում
Sոդում #1. Դիմադրության և կոնդենսատորների ավելացում
Sոդում #1. Դիմադրության և կոնդենսատորների ավելացում
Sոդում #1. Դիմադրության և կոնդենսատորների ավելացում

Դուք միշտ պետք է աշխատեք ամենափոքրից (բաղադրիչի բարձրության առումով) նախ `ամենաբարձր բաղադրիչներից մինչև վերջինը: Հետևաբար, մենք սկսում ենք ռեզիստորների ավելացումով և հետևի ոտքերի վրա թեքվելով, որպեսզի դիմադրիչները հեշտությամբ կպչեն և մնան տեղում: Դրանից հետո կտրեք երկար լարերը:

Բացի այդ, պատկերներում ցուցադրված չէ, նույն կերպ ավելացրեք փոքր 100 nF կոնդենսատորը:

Մի խորհուրդ. Պահեք այդ մետաղալար ոտքերը մի փոքր տարայի մեջ, դրանք երբեմն օգտակար են:

Քայլ 5. oldոդում #2. Ստեղնաշարի հավաքում

Sոդում #2. Ստեղնաշարի հավաքում
Sոդում #2. Ստեղնաշարի հավաքում
Sոդում #2. Ստեղնաշարի հավաքում
Sոդում #2. Ստեղնաշարի հավաքում
Sոդում #2. Ստեղնաշարի հավաքում
Sոդում #2. Ստեղնաշարի հավաքում

Հաջորդ քայլը 20 SMD շոշափելի անջատիչների զոդումն է: Քանի որ այս աշխատանքը մի փոքր անհեթեթ է, մենք դա անում ենք հիմա, երբ PCB- ն հարթ տեղադրվում է աշխատասեղանին:

Մենք կաշխատենք վերևից ներքև (կամ ձախից աջ, եթե PCB- ն կողմնորոշված է, ինչպես ցույց է տրված լուսանկարներում) և կսկսենք առաջին տողից. Յուրաքանչյուր անջատիչի համար ընտրեք չորս բարձիկներից մեկը և թրջեք այն հոսքի գրիչով:

Այնուհետև մի պինցետ օգտագործեք անջատիչը և այն զգուշորեն տեղադրեք չորս բարձիկների վրա: Այնուհետև կպցրեք անջատիչի միայն այն ոտքը, որը գտնվում է ձեր ընտրած և պատրաստած հոսքով: Դրա համար սկսելուց առաջ պետք է «բռնեք» ինչ -որ զոդ ձեր երկաթով: Օգտագործելով այս մեթոդը, լրացրեք անջատիչների ամբողջ շարանը `զոդելով միայն մեկ ոտքը:

Նետերով պատկերված պատկերը ցույց է տալիս խոշորացում, թե ինչպես է ճշգրիտ կատարվել զոդումը:

Ամբողջ շարանը միացնելուց հետո (միայն մեկ քորոց) կարող եք փոքր ճշգրտումներ կատարել ՝ տաքացնելով քորոցը և միացնելով անջատիչը: Համոզվեք, որ անջատիչները հնարավորինս հավասարեցված են:

Եթե դուք գոհ եք դասավորվածությունից, կարող եք թրջել մնացած բոլոր կապումները հոսքի գրիչով, այնուհետև դրանք զոդել `դիպչելով այն զոդման երկաթով և ավելացնելով մի փոքր զոդ` նույնպես դիպչելով դրան: Դուք կտեսնեք, որ զոդը ներծծվում է անմիջապես բարձի վրա:

Շարքը մոտավորապես կպցնելուց հետո կնկատեք, որ գլուխ եք հանում դրանից, և դա այդքան էլ դժվար չէ, բայց կրկնվող: Այսպիսով, պարզապես արեք մնացածը, և շուտով կավարտվեք ավարտված ստեղնաշարով:

Քայլ 6: oldոդում #3. Յոթ հատվածի ցուցադրում, անջատիչ և կապում վերնագիր

Sոդում #3. Յոթ հատվածի ցուցադրում, անջատիչ և կապում վերնագիր
Sոդում #3. Յոթ հատվածի ցուցադրում, անջատիչ և կապում վերնագիր
Sոդում #3. Յոթ հատվածի ցուցադրում, անջատիչ և կապում վերնագիր
Sոդում #3. Յոթ հատվածի ցուցադրում, անջատիչ և կապում վերնագիր
Sոդում #3. Յոթ հատվածի ցուցադրում, անջատիչ և կապում վերնագիր
Sոդում #3. Յոթ հատվածի ցուցադրում, անջատիչ և կապում վերնագիր

Այժմ կարող եք ավելացնել անջատիչն ու կապի վերնագիրը (ըստ ցանկության) ՝ այն մատով պահելով և մեկ քորոցը կպցնելով, որպեսզի այն կպցնել PCB- ին, այնպես որ կարող եք զոդել մյուս կապումներն ու վերջապես դիպչել նախնական բռնակին:

Carգույշ եղեք, որ տաք այրվող երկաթով չայրվեք: Եթե դա ձեզ հարմար չէ, կարող եք օգտագործել մի փոքր ժապավեն (օրինակ ՝ նկարչի ժապավեն) ՝ բաղադրիչը պահելու համար: Այսպիսով, դուք երկու ձեռքեր ունեք ազատ շարժվելու համար:

Յոթ հատվածի դիսփլեյները կպչում են նույն կերպ (տես նկարը). Դուք դնում եք այն, պահում եք ձեր ձեռքով կամ ժապավենով և զոդում երկու հակառակ կապում, որպեսզի այն մնա տեղում, իսկ մյուս կապերը կարող եք զոդել:

Բայց զգույշ եղեք և յոթ հատվածի ցուցադրումը դրեք ճիշտ ուղղությամբ (տասնորդական կետերը ՝ դեպի ստեղնաշարը): Հակառակ դեպքում դժվարության մեջ եք…

Քայլ 7: oldոդում #4. Միկրոկոնտրոլերի զոդում

Oldոդում #4. Միկրոկոնտրոլերի զոդում
Oldոդում #4. Միկրոկոնտրոլերի զոդում

Այժմ, երբ դուք շատ պրակտիկա ունեք, կարող եք առաջ գնալ և միկրոկառավարիչ տեղադրել, որի վերևում գտնվող խազը (կամ առաջին քորոցը) ուղղված է դեպի անջատիչը: Flat տափակաբերան աքցան օգտագործելով, կարող եք մի փոքր ներս թեքել միկրոկառավարիչի ոտքերը, որպեսզի դրանք համապատասխանեն PCB- ի անցքերին:

Քանի որ այն ամուր տեղավորվում է, միկրոկոնտրոլերը տեղադրելու համար անհրաժեշտ է որոշակի վերահսկվող ուժ: Առավելությունն այն է, որ այն չի ընկնում: Սա նշանակում է, որ դուք կարող եք ժամանակ վերցնել և զոդել այն հետևից:

Քայլ 8: oldոդում #5: Ավելացրեք մարտկոցի կրիչները (վերջին քայլը)

Sոդում #5: Ավելացրեք մարտկոցի կրիչները (վերջին քայլը)
Sոդում #5: Ավելացրեք մարտկոցի կրիչները (վերջին քայլը)
Sոդում #5: Ավելացրեք մարտկոցի կրիչները (վերջին քայլը)
Sոդում #5: Ավելացրեք մարտկոցի կրիչները (վերջին քայլը)
Sոդում #5: Ավելացրեք մարտկոցի կրիչները (վերջին քայլը)
Sոդում #5: Ավելացրեք մարտկոցի կրիչները (վերջին քայլը)

Ի վերջո, անհրաժեշտ է մարտկոցի ամրակները ավելացնել հետևի մասում: Դրա համար դուք պարզապես օգտագործում եք հոսքի գրիչը և թրջում բոլոր չորս բարձիկները, այնուհետև մի քիչ կպցնում ձեր արդուկի վրա: Երկու բարձիկների վրա զգուշորեն հավասարեցրեք մարտկոցի բռնիչը: Կոնտակտների երկու ծայրերում պետք է տեսանելի լինի նույն չափի PCB պահոցը: Ձեր արդուկով դիպչեք PCB- ի բարձիկին և մարտկոցի կրիչի ոտքին: Theոդիչը հոսելու է պահոցի տակ և դրա վրայով և ամրացնելու այն տեղում, ինչպես ցույց է տրված նկարում: Եթե դրա հետ կապված խնդիրներ ունեք, կարող եք գրիչի հետ ավելի շատ հոսք ավելացնել:

Քայլ 9. Flashրամեկուսացման էմուլյատոր

Flashրամեկուսացում Emulator
Flashրամեկուսացում Emulator
Flashրամեկուսացում Emulator
Flashրամեկուսացում Emulator
Flashրամեկուսացում Emulator
Flashրամեկուսացում Emulator

Կցված 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 նախագծման վերլուծություն

PCB նախագծման վերլուծություն
PCB նախագծման վերլուծություն
PCB նախագծման վերլուծություն
PCB նախագծման վերլուծություն

Այս նախագիծն ավարտելուց հետո ես գտա մի քանի կետ, որոնք ուշագրավ են և պետք է անդրադառնան խորհրդի նոր վերանայմանը.

  • ATMega328p- ի մետաքսե էկրանը սովորական խազ չունի, որտեղ գտնվում է առաջին քորոցը: DIP-28 ոտնահետքը նույնիսկ չունի քառակուսի պահոց, որտեղ գտնվում է առաջին քորոցը: Սա անպայման պետք է բարելավվի ավելի մանրամասն մետաքսե էկրանով `շփոթությունը կանխելու համար
  • ISP վերնագիրը մետաքսե էկրանին միացման պիտակներ չունի: Սա դժվարացնում է ճանաչել, թե ինչպես միացնել այն ISP- ին
  • ISP- ի վերնագիրը կարող է փոխվել 2x6 փին վերնագրի `ստանդարտ կապի դասավորությամբ` ցանկացած շփոթություն կանխելու համար

Բացի այդ կետերից, ես շատ ուրախ եմ, թե ինչպես ստացվեց և աշխատեց առաջին փորձի ժամանակ:

Քայլ 12. Ինչպե՞ս ծրագրել SUBLEQ:

Image
Image
Ինչպե՞ս ծրագրել SUBLEQ
Ինչպե՞ս ծրագրել SUBLEQ
Ինչպե՞ս ծրագրել SUBLEQ
Ինչպե՞ս ծրագրել 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 վայրում տվյալները կարող են պատճենվել

  1. subleq b, b, 2 (հաջորդ հրահանգը)
  2. subleq a, Z, 3 (հաջորդ հրահանգը)
  3. subleq Z, b, 4 (հաջորդ հրահանգը)
  4. subleq Z, Z, օր. 5 (հաջորդ հրահանգը)

Օգտագործելով subleq- ի հանման հատկանիշը, որը կատարում է mem - mem [a] և արդյունքում վերագրում է mem , արժեքը պատճենվում է զրոյական գրանցամատյանի միջոցով: Իսկ «subleq Z, Z,…» - ն պարզապես զրոյական գրանցամատյանը վերակայում է 0 -ի ՝ անկախ Z- ի արժեքից:

ADD a, b - ավելացնում է a + b արժեքները և պահում է b- ի գումարը, որը կարող է բաղկացած լինել

  1. subleq a, Z, 2 (հաջորդ հրահանգը)
  2. subleq Z, b, 3 (հաջորդ հրահանգը)
  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

Outlook
Outlook
Outlook
Outlook
Outlook
Outlook

Շնորհավորում եմ:

Եթե կարդաք սա, հավանաբար անցաք այս ամբողջ ուսանելիի միջով և ստեղծեցիք ձեր սեփական KIM Uno- ն: Սա իսկապես հաճելի է:

Բայց ճանապարհորդությունն այստեղ չի ավարտվում. Կան անսահմանափակ տարբերակներ, թե ինչպես կարող եք փոփոխել KIM Uno- ն և հարմարեցնել այն ձեր կարիքներին և ցանկություններին:

Օրինակ, KIM Uno- ն կարող էր հագեցած լինել «իրական» ռետրո պրոցեսորի էմուլյատորով, որը կարող էր ընդօրինակել հանրահայտ MOS 6502 կամ Intel 8085, 8086 կամ 8088: Այնուհետև այն կուղղվեր դեպի իմ սկզբնական տեսլականը, նախքան OISC- ների մասին իմանալը:

Բայց կան հնարավոր այլ օգտագործումներ, քանի որ ապարատային դիզայնը բավականին ընդհանուր է: KIM Uno- ն կարող է օգտագործվել որպես…

  • … Հեռակառավարիչ, օրինակ. CNC- ների կամ այլ սարքերի համար: Գուցե լարով կամ հագեցած IR դիոդով կամ ցանկացած այլ անլար ուղարկողով
  • … Գրպանային (տասնվեցական) հաշվիչ: Firmware- ը կարող է շատ հեշտությամբ հարմարվել, և տախտակի դիզայնը շատ փոխելու կարիք չունի: Միգուցե մետաքսե էկրանը կարող է հարմարեցվել մաթեմատիկական գործողություններով, և հատվածների միջև եղած բացը կարող է հեռացվել: Բացի դրանից, այն արդեն պատրաստ է այս փոխակերպմանը

Հուսով եմ, որ դուք նույնքան զվարճացաք հետևելով և հույս ունենալով KIM Uno- ի կառուցման վրա, որքան ես այն նախագծել և ծրագրել էի: Եվ եթե այն երկարացնեք կամ փոփոխեք, խնդրում եմ ինձ տեղյակ պահեք: Ողջույն

PCB մրցույթ
PCB մրցույթ
PCB մրցույթ
PCB մրցույթ

Երկրորդ տեղը PCB մրցույթում

Խորհուրդ ենք տալիս: