Სარჩევი:

KIM Uno - 5 € მიკროპროცესორული ნაკრების ემულატორი: 13 ნაბიჯი (სურათებით)
KIM Uno - 5 € მიკროპროცესორული ნაკრების ემულატორი: 13 ნაბიჯი (სურათებით)

ვიდეო: KIM Uno - 5 € მიკროპროცესორული ნაკრების ემულატორი: 13 ნაბიჯი (სურათებით)

ვიდეო: KIM Uno - 5 € მიკროპროცესორული ნაკრების ემულატორი: 13 ნაბიჯი (სურათებით)
ვიდეო: Essential Scale-Out Computing by James Cuff 2024, ივნისი
Anonim
Image
Image
KIM Uno - 5 € მიკროპროცესორული Dev Kit ემულატორი
KIM Uno - 5 € მიკროპროცესორული Dev Kit ემულატორი
KIM Uno - 5 € მიკროპროცესორის Dev Kit ემულატორი
KIM Uno - 5 € მიკროპროცესორის Dev Kit ემულატორი

KIM Uno არის პორტატული, პროგრამული უზრუნველყოფით განსაზღვრული dev ნაკრები (რეტრო) მიკროპროცესორებისთვის. ნება მომეცით წარმოგიდგინოთ მისი იდეა დროის უკან დაბრუნებით:

ჯერ კიდევ 2018 წლის ბოლოს მომივიდა აზრად, რომ მინდოდა აეშენებინა პატარა პორტატული მიკროპროცესორის შემქმნელი ნაკრები, ისევე როგორც ცნობილი KIM-1 MOS Technology, Inc. და შექმნილია ჩაკ პედლის მიერ, რომელიც ასევე მონაწილეობდა 6502 CPU- ს შექმნაში.

მაგრამ "შიშველი ძვლის" შემუშავების ნაკრების შექმნა დისკრეტული ლოგიკური კომპონენტებით არ იყო ვარიანტი, რადგან მას სჭირდებოდა დიდი ელექტროენერგიის მიწოდება (ვინაიდან ეს უძველესი მოწყობილობები ახორციელებენ სერიოზულ დენს) და ასევე განვითარება იქნება ძალიან ინტენსიური. და მე მინდა ახლა!

ამიტომ, მე დავამუშავე KIM Uno, როგორც პორტატული მოწყობილობა, რომელიც ჯდება ერთ ხელში და იკვებება ორი CR2032 ბატარეით. ის იყენებს ATMega328p ("Arduino") მიკროკონტროლერს, რომელიც მუშაობს 8 MHz სიხშირეზე, რათა მოახდინოს სასურველი პროცესორის იმიტაცია (ან სიმულაცია). ეს არქიტექტურა ასევე დარწმუნებულია იმაში, რომ იმიტირებული პროცესორები ცვალებადია ყველაფერში, რაც მიკროკონტროლერის ფლეშ მეხსიერებაში ჯდება. ასე რომ, ეს არის მრავალფუნქციური მოწყობილობა.

შემთხვევით მე მოგვიანებით ვუყურე მართლაც კარგ საუბარს - სახელწოდებით The Ultimate Apollo Guidance Computer Talk (34C3) - YouTube- ზე, სადაც ნახსენებია "One Instruction Set Computers" ან OISC. მე არ ვიცოდი მათ შესახებ და ეს აღმოვაჩინე, როგორც სრულყოფილი კანდიდატი მისი განსახორციელებლად.

KIM Uno ემორჩილება CPU– ს მხოლოდ ერთი ინსტრუქციით: subleq - გამოაკელი და გაშალე, თუ ნულზე ნაკლები ან ტოლია.

თუ თქვენ მიყვებით ჩემთან ერთად ამ ინსტრუქციის საშუალებით, შეგიძლიათ შექმნათ თქვენი საკუთარი KIM Uno უმოკლეს დროში. და საუკეთესო ნაწილი - გარდა იმისა, რომ თქვენ შეგიძლიათ შეცვალოთ იგი თქვენი გემოვნებით - არის ის, რომ მისი დამზადება მხოლოდ 4, 75 € ღირს (2018 წლის ბოლოსთვის).

ერთი მინიშნება: არსებობს Git საცავი, რომელიც შეიცავს ყველა ფაილს, რომელიც მოცემულია ამ ინსტრუქციის სხვადასხვა საფეხურებით. იმ შემთხვევაში, თუ გსურთ შეცვალოთ ზოგიერთი რესურსი და გაგვიზიაროთ, შეგიძლიათ გააკეთოთ პიარი. თქვენ ასევე შეგიძლიათ ჩამოტვირთოთ ყველა ფაილი ერთდროულად. უბრალოდ 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– ების ჩემი goto მწარმოებელი, უბრალოდ ის კარგად მუშაობდა ჩემთვის და შესაძლოა თქვენთვისაც. მაგრამ თქვენ შეგიძლიათ შეუკვეთოთ ისინი ნებისმიერ სხვა ადგილას, როგორიცაა 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 ციფრით - დაფა მიიღებს მხოლოდ 0.36 ინჩის (9, 14 მმ) ელემენტებს საერთო ანოდის გაყვანილობით. ორივე მოთხოვნა მნიშვნელოვანია სამუშაო ერთეულის მისაღებად. მაგრამ ამ ტიპის შვიდი სეგმენტის ჩვენება ძალიან ხშირია

ამ საფეხურზე მიმაგრებული შეგიძლიათ იპოვოთ ფაილი "component-datasheets.zip", რომელიც შეიცავს უფრო ზუსტ ინფორმაციას გამოყენებული კომპონენტების ზომებისა და ტიპების შესახებ. მაგრამ კომპონენტების უმეტესი ნაწილი ძალიან სტანდარტულია და ადვილად მოიპოვება მცირე ფულისთვის.

ახლა თქვენ უნდა დაელოდოთ სანამ ყველა კომპონენტი მზად იქნება გასაგრძელებლად. ამ დროის განმავლობაში თქვენ უკვე შეგიძლიათ ბოლომდე გადახტომა და თუ გსურთ, წაიკითხეთ ცოტაოდენი KIM Uno– ს გამოყენების შესახებ.

ნაბიჯი 3: შედუღების ინსტრუმენტის მიმოხილვა

Soldering Tool მიმოხილვა
Soldering Tool მიმოხილვა
Soldering Tool მიმოხილვა
Soldering Tool მიმოხილვა

KIM Uno– ს შესადუღებლად და შესაქმნელად გჭირდებათ სურათებით ნაჩვენები ინსტრუმენტები:

  • მავთულის საჭრელი (კომპონენტის მავთულის დასასრული)
  • ბინა pliers
  • წყვილი პინცეტი
  • (წესიერი) შემდუღებელი, რომელიც არ არის სქელი - მე ვიყენებ 0.56 მმ -იანი შესაკრავს
  • გამაგრილებელი რკინა - თქვენ არ გჭირდებათ მაღალი დონის გამაგრილებელი უთო (რადგან ჩვენ ასევე არ ვაკეთებთ სარაკეტო მეცნიერებას აქ) - მე უკვე დიდი ხანია ვიყენებ Ersa FineTip 260 -ს და ის მართლაც კარგია
  • ნაკადი კალამი: კომპონენტებსა და ბალიშებზე ნაკადის დამატება გაცილებით აადვილებს მათ შედუღებას, რადგან შემდუღებელი შემდეგ "მიედინება" თავისით სწორ ადგილას*
  • სურვილისამებრ: ღრუბელი (მეტალის ბამბადან) თქვენი გასაყიდი რკინისთვის

KIM Uno– ს მოგვიანებით პროგრამირებისთვის ასევე დაგჭირდებათ:

  • კომპიუტერი AVR-GCC ინსტრუმენტებით და avrdude ატვირთოს firmware
  • ISP (პროგრამისტი) - როგორც ხედავთ სურათზე, მე ვიყენებ ჩემს Arduino Uno– ს როგორც ISP– ს სპეციალური ესკიზით - ასე რომ არ არის საჭირო რაიმე ძვირადღირებული ტექნიკის ყიდვა

* საჭიროა ადამიანების ხელმძღვანელობა;-)

Მზად ხარ? შემდეგ ეტაპზე ჩვენ ვიწყებთ KIM Uno– ს შეკრებას.

ნაბიჯი 4: შედუღება #1: რეზისტორების და კონდენსატორების დამატება

Soldering #1: რეზისტორების და კონდენსატორების დამატება
Soldering #1: რეზისტორების და კონდენსატორების დამატება
Soldering #1: რეზისტორების და კონდენსატორების დამატება
Soldering #1: რეზისტორების და კონდენსატორების დამატება
Soldering #1: რეზისტორების და კონდენსატორების დამატება
Soldering #1: რეზისტორების და კონდენსატორების დამატება
Soldering #1: რეზისტორების და კონდენსატორების დამატება
Soldering #1: რეზისტორების და კონდენსატორების დამატება

თქვენ ყოველთვის უნდა იმუშაოთ ყველაზე პატარა (კომპონენტის სიმაღლის თვალსაზრისით) კომპონენტებიდან, ყველაზე მაღალი კომპონენტებიდან ბოლომდე. ამრიგად, ჩვენ ვიწყებთ რეზისტორების დამატებით და ფეხების დახრით უკანა მხარეს ისე, რომ რეზისტორების ადვილად შედუღება და დარჩენა ადგილზე. შემდეგ გაჭრა გრძელი მავთულები.

ასევე, სურათებში არ არის ნაჩვენები, დაამატეთ პატარა 100 nF კონდენსატორი იმავე გზით.

ერთი რჩევა: შეინახეთ ეს მავთულის ფეხები პატარა კონტეინერში, ისინი ზოგჯერ გამოდგება.

ნაბიჯი 5: შედუღება #2: კლავიატურის აწყობა

შედუღება #2: კლავიატურის აწყობა
შედუღება #2: კლავიატურის აწყობა
შედუღება #2: კლავიატურის აწყობა
შედუღება #2: კლავიატურის აწყობა
შედუღება #2: კლავიატურის აწყობა
შედუღება #2: კლავიატურის აწყობა

შემდეგი ნაბიჯი არის 20 SMD ტაქტილური კონცენტრატორის შედუღება. ვინაიდან ეს სამუშაო ცოტა უხერხულია, ჩვენ ამას ვაკეთებთ ახლა, როდესაც PCB დგას სამუშაო მაგიდაზე.

ჩვენ ვიმუშავებთ ზემოდან ქვემოდან (ან მარცხნიდან მარჯვნივ, თუ PCB არის ორიენტირებული როგორც ფოტოებშია ნაჩვენები) და დავიწყებთ პირველი რიგიდან: თითოეული გადართვისთვის შეარჩიეთ ოთხი ბალიშიდან ერთი და დაასველეთ იგი ნაკადის კალმით.

შემდეგ გამოიყენეთ პინცეტი, რომ აიღოთ ჩამრთველი და ფრთხილად დადგით ოთხ ბალიშზე. შემდეგ შეაერთეთ მხოლოდ გადამრთველის ფეხი, რომელიც არის ბალიშზე, რომელიც თქვენ აიღეთ და მოამზადეთ ნაკადით. ამისათვის თქვენ უნდა "დაიჭიროთ" რკინა რკინით დაწყებამდე. ამ მეთოდის გამოყენებით, შეავსეთ გადამრთველების მთელი რიგი, შეაერთეთ მხოლოდ ერთი ფეხი.

ისრებით გამოსახული გამოსახულება აჩვენებს გადიდებას, თუ როგორ მოხდა ზუსტად შედუღება.

მას შემდეგ რაც შეავსეთ მთელი რიგი (მხოლოდ ერთი პინი) შეგიძლიათ გააკეთოთ მცირედი კორექტირება ქინძისთავის გათბობით და გადამრთველის ხელახალი პოზიციონირებით. დარწმუნდით, რომ კონცენტრატორები მაქსიმალურად კარგად არის გასწორებული.

თუ კმაყოფილი ხართ განლაგებით, თქვენ შეგიძლიათ დაასველოთ ყველა სხვა ქინძისთავი ნაკადიანი კალმით და შემდეგ შეაერთოთ ისინი შედუღების რკინით შეხებით და დაამატოთ ცოტაოდენი შესაკრავი ასევე შეხებით. თქვენ დაინახავთ, რომ შედუღება შეწოვილია პირდაპირ ბალიშზე.

ზედიზედ შედუღების შემდეგ შეამჩნევთ, რომ თქვენ იღებთ მას და ეს არ არის ისეთი რთული, მაგრამ განმეორებადი. ასე რომ დანარჩენი გააკეთე და უმოკლეს დროში დაასრულებ დასრულებულ კლავიატურას.

ნაბიჯი 6: Soldering #3: Seven Segment Display, Switch and Pin Header

Soldering #3: Seven Segment Display, Switch and Pin Header
Soldering #3: Seven Segment Display, Switch and Pin Header
Soldering #3: Seven Segment Display, Switch and Pin Header
Soldering #3: Seven Segment Display, Switch and Pin Header
Soldering #3: Seven Segment Display, Switch and Pin Header
Soldering #3: Seven Segment Display, Switch and Pin Header

ახლა თქვენ შეგიძლიათ დაამატოთ გადამრთველი და სათაურის სათაური (სურვილისამებრ) თითის დაჭერით და ერთი პინდის შედუღებით, რომ დაიჭიროთ იგი PCB- ზე, ასე რომ თქვენ შეგიძლიათ შეაერთოთ სხვა ქინძისთავები და ბოლოს შეეხოთ საწყის საყრდენს.

ფრთხილად იყავით, რომ არ დაწვათ თავი ცხელი გამაგრილებელი რკინით. თუ ეს არ მოგწონთ, შეგიძლიათ გამოიყენოთ მცირე ზომის ფირზე (მაგ. მხატვრის ფირზე) კომპონენტის შესანახად. ამ გზით თქვენ გაქვთ ორივე ხელი თავისუფალი მოძრაობისთვის.

შვიდი სეგმენტის ეკრანი ერთნაირად არის შედუღებული (იხ. სურათი): თქვენ ათავსებთ მას, გიჭირავთ ხელით ან ლენტით და აერთებთ ორ მოპირდაპირე ქინძისთავს, რომ დაიჭიროთ, ხოლო სხვა ქინძისთავების შეკვრა შეგიძლიათ.

მაგრამ იყავით ფრთხილად და განათავსეთ შვიდი სეგმენტის ჩვენება სწორი მიმართულებით (ათობითი წერტილები კლავიატურისკენ). თორემ გაგიჭირდება …

ნაბიჯი 7: შედუღება #4: მიკროკონტროლერის შედუღება

შედუღება #4: მიკროკონტროლერის შედუღება
შედუღება #4: მიკროკონტროლერის შედუღება

ახლა, როდესაც ბევრი პრაქტიკა გაქვთ, შეგიძლიათ წინ წახვიდეთ და ჩააყენოთ მიკროკონტროლერი, რომლის ზედა ნაწილიც (ან პირველი პინი) არის გადამრთველისკენ მიმართული. ბრტყელი ბლინების გამოყენებით თქვენ შეგიძლიათ ფრთხილად მოხრიოთ მიკროკონტროლის ფეხები ისე, რომ ისინი ემთხვეოდეს PCB– ის ხვრელებს.

ვინაიდან ის მჭიდროდ არის მორგებული, თქვენ გჭირდებათ კონტროლირებადი ძალა მიკროკონტროლის ჩასადებად. უპირატესობა ის არის, რომ ის არ ამოვარდება. ეს ნიშნავს, რომ თქვენ შეგიძლიათ დრო დაუთმოთ და უკნიდან შეაერთოთ.

ნაბიჯი 8: შედუღება #5: დაამატეთ ბატარეის დამჭერები (ბოლო ნაბიჯი)

შედუღება #5: დაამატეთ ბატარეის დამჭერები (ბოლო ნაბიჯი)
შედუღება #5: დაამატეთ ბატარეის დამჭერები (ბოლო ნაბიჯი)
შედუღება #5: დაამატეთ ბატარეის დამჭერები (ბოლო ნაბიჯი)
შედუღება #5: დაამატეთ ბატარეის დამჭერები (ბოლო ნაბიჯი)
შედუღება #5: დაამატეთ ბატარეის დამჭერები (ბოლო ნაბიჯი)
შედუღება #5: დაამატეთ ბატარეის დამჭერები (ბოლო ნაბიჯი)

დაბოლოს, თქვენ უნდა დაამატოთ ბატარეის დამჭერები უკანა მხარეს. ამისათვის თქვენ უბრალოდ გამოიყენეთ ნაკადიანი კალამი და დაასველეთ ოთხივე ბალიში და შემდეგ მიიღეთ რკინა. აკუმულატორის დამჭერი ფრთხილად გაასწორეთ ორივე ბალიშზე. კონტაქტების ორივე ბოლოში უნდა იყოს იგივე რაოდენობის PCB ბალიში. შეეხეთ PCB ბალიშს და ბატარეის დამჭერის ფეხს თქვენი უთოთი. შედუღება ჩაედინება ბალიშის ქვეშ და მის ზემოთ და დაიცავს მას ისე, როგორც ნაჩვენებია სურათზე. თუ თქვენ გაქვთ პრობლემები, შეგიძლიათ დაამატოთ მეტი ნაკადი კალმით.

ნაბიჯი 9: ემულატორის განათება

ციმციმებს ემულატორს
ციმციმებს ემულატორს
ციმციმებს ემულატორს
ციმციმებს ემულატორს
ციმციმებს ემულატორს
ციმციმებს ემულატორს

თანდართულ 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- ს შიგნით).

ამის შემდეგ თქვენ შეგიძლიათ განათავსოთ firmware მიკროკონტროლერზე ამ ბრძანებით:

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– ზე და KIM Uno– ის სქემატური სქემის გამოყენებით (იხილეთ მიმაგრებული) შეგიძლიათ მიიღოთ 1x6 ISP სათაურის pinout KIM Uno– ზე. კვადრატული პინი, შვიდი სეგმენტის ჩვენებასთან ახლოს არის პინი 1 (GND). შემდეგი ქინძისთავები არის (სწორი თანმიმდევრობით): RESET, MOSI, MISO, SCK, VCC. შეგიძლიათ VCC დაუკავშიროთ 3V3 ან 5V.

თუ თქვენ არ დაამატეთ 1x6 პინიანი სათაური, შეგიძლიათ გამოიყენოთ დაფის მავთულები და ჩადოთ ისინი დამაკავშირებელ ხვრელებში და თითის დახრით - ზუსტად ისე, როგორც სურათზეა ნაჩვენები. ეს ქმნის საკმარის კონტაქტს, რათა აანთოს firmware და დააყენოს დაუკრავენ. მაგრამ თუ მოგწონთ უფრო მუდმივი დაყენება, აუცილებლად უნდა დაამატოთ 1x6 პინის სათაურები.

მე მაქვს ორი მოწყობილობა: საწარმოო ვერსია პინის სათაურების გარეშე და განვითარების ვერსია პინიანი სათაურებით, რომელსაც ვტოვებ დაკავშირებულს და ვიყენებ მას გამუდმებით განვითარების პროცესში. ეს ბევრად უფრო კომფორტულია.

ნაბიჯი 10: დასრულდა

დასრულდა
დასრულდა
დასრულდა
დასრულდა

ახლა თქვენ დაასრულეთ და შეგიძლიათ დაიწყოთ თქვენი საკუთარი პროგრამების წერა ქაღალდზე, მისი აწყობა და შემდეგ მეხსიერებაში შეყვანა.

KIM Uno– ს გააჩნია წინასწარ დაპროგრამებული ფიბონაჩის გამოთვლა, რომელიც იწყება მეხსიერების მდებარეობიდან 0x0a. ის ნაგულისხმევად არის მითითებული n = 6, ასე რომ უნდა მივიღოთ მნიშვნელობა 8. გამოთვლის დასაწყებად დააჭირეთ ღილაკს "გადასვლა".

ნაბიჯი 11: PCB დიზაინის ანალიზი

PCB დიზაინის ანალიზი
PCB დიზაინის ანალიზი
PCB დიზაინის ანალიზი
PCB დიზაინის ანალიზი

ამ პროექტის დასრულების შემდეგ აღმოვაჩინე რამდენიმე პუნქტი, რომლებიც აღსანიშნავია და უნდა იქნას განხილული გამგეობის ახალ გადასინჯვაში:

  • ATMega328p– ის აბრეშუმის ეკრანს არ აქვს ჩვეულებრივი დონის პირველი პინი. DIP-28 ნაკვალევს კი არ აქვს კვადრატული ბალიში, სადაც პირველი პინი მდებარეობს. ეს აუცილებლად უნდა გაუმჯობესდეს უფრო დეტალური აბრეშუმის ეკრანით, რათა არ მოხდეს დაბნეულობა
  • ინტერნეტ პროვაიდერის სათაურს აბრეშუმის ეკრანზე არ აქვს კავშირი. ეს ართულებს იმის აღიარებას, თუ როგორ უნდა დაუკავშიროთ ის ინტერნეტ პროვაიდერს
  • ISP სათაური შეიძლება შეიცვალოს 2x6 პინის სათაურში სტანდარტული pin განლაგებით, რათა თავიდან აიცილოთ რაიმე დაბნეულობა

ამ პუნქტების გარდა, მე საკმაოდ ბედნიერი ვარ, როგორ გამოვიდა და მუშაობდა პირველ ცდაზე.

ნაბიჯი 12: როგორ დავპროგრამოთ SUBLEQ?

Image
Image
როგორ დავპროგრამოთ SUBLEQ?
როგორ დავპროგრამოთ SUBLEQ?
როგორ დავპროგრამოთ SUBLEQ?
როგორ დავპროგრამოთ SUBLEQ?

როგორც დასაწყისში აღვნიშნეთ, KIM Uno– ს ამჟამინდელი პროგრამული უზრუნველყოფა ემსგავსება ერთი ინსტრუქციის კომპის კომპიუტერს (OISC) და იძლევა გამოთვლების შესრულების subleq ინსტრუქციას.

Subleq ინსტრუქცია ნიშნავს გამოკლებასა და განშტოებას, თუ ნულზე ნაკლები ან ტოლია. ფსევდო კოდში ეს ასე გამოიყურება:

subleq A B C mem [B] = mem [B] - mem [A]; if (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+ = პროგრამა იწყება 0x0a– ზე. ამჟამად "გასვლა" კლავიში მუშაობს 0x0a ფიქსირებულიდან.

ამ ინფორმაციის საშუალებით თქვენ შეგიძლიათ დაწეროთ პროგრამა ასამბლერში და შეიყვანოთ ინსტრუქციები მეხსიერებაში და შემდეგ შეასრულოთ იგი. ვინაიდან არსებობს მხოლოდ ერთი ინსტრუქცია, მხოლოდ არგუმენტებია (A, B და C). მეხსიერების სამი მდებარეობის შემდეგ იწყება შემდეგი ინსტრუქციის არგუმენტები და ასე შემდეგ.

ამ საფეხურზე მიმაგრებული შეგიძლიათ იპოვოთ ფაილი "retracement.ს" და ასევე ხელნაწერი პროგრამის სურათი, რომელიც არის ფიბონაჩის განხორციელების მაგალითი. მაგრამ დაელოდეთ: გამოიყენება სამი ინსტრუქცია - კონკრეტულად ADD, MOV და HLT - რომლებიც არ არის მითითებული. "რა გარიგებაა? თქვენ არ თქვით, რომ არსებობს მხოლოდ ერთი ინსტრუქცია, subleq?" შენ გეკითხები? ეს ძალიან ადვილია: 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 - აჩერებს პროცესორს და ამთავრებს შესრულებას:

განმარტებით ემულატორმა იცის, რომ პროცესორს სურს შეწყვიტოს, თუ ის გადადის 0xff– ზე (ან -1 თუ მღერიან). ასე რომ უბრალო

subleq Z, Z, -1

ასრულებს საქმეს და მიუთითებს ემულატორზე, რომ მან უნდა შეწყვიტოს ემულაცია.

ამ სამი მარტივი ინსტრუქციის გამოყენებით, ფიბონაჩის ალგორითმი შეიძლება განხორციელდეს და კარგად მუშაობს. ეს არის იმის გამო, რომ OISC– ს შეუძლია გამოთვალოს ყველაფერი, რაც "ნამდვილ" კომპიუტერს შეუძლია გამოთვალოს მხოლოდ ინსტრუქციის ქველეკით. რა თქმა უნდა, ბევრი კომპრომისი არსებობს - კოდის სიგრძე და სიჩქარე. მაგრამ მიუხედავად ამისა, ეს არის შესანიშნავი გზა ვისწავლოთ და ექსპერიმენტი გავაკეთოთ დაბალი დონის პროგრამული უზრუნველყოფის და კომპიუტერების გამოყენებით.

ამ საფეხურზე მიმაგრებული ასევე შეგიძლიათ იპოვოთ zip არქივი "kim_uno_tools.zip". ის შეიცავს ძირითად ასამბლერს და სიმულატორს KIM Uno– სთვის. ისინი ჩაწერილია NodeJS– ში - დარწმუნდით, რომ თქვენ დააინსტალირეთ.

პროგრამების შეკრება

თუ გადახედავთ "fibonacci/retracement.ს" - ს, აღმოაჩენთ, რომ ეს არის წყარო კოდი განხილული fibonacci განხორციელებისთვის. მისი შეკრებისა და პროგრამის შესაქმნელად, რომლის გაშვებაც KIM Uno– ს შეუძლია, შეიყვანეთ შემდეგი ბრძანება (ამოღებული „kim_uno_tools.zip“არქივის ძირში):

node assemble.js fibonacci/retracement.s

და ის ან დაბეჭდს შეცდომას, თუ შეცდომა დაუშვით, ან დაიღვრება შედეგად მიღებული პროგრამა. მისი შესანახად შეგიძლიათ დააკოპიროთ გამომავალი და შეინახოთ იგი ფაილში ან უბრალოდ გაუშვათ ეს ბრძანება:

node assemble.js fibonacci/retracement.s> yourfile.h

გამომავალი ფორმატირებულია ისე, რომ ის პირდაპირ შეიძლება შევიდეს KIM Uno firmware– ში, როგორც C სათაურის ფაილი, მაგრამ სიმულატორს ასევე შეუძლია მისი სიმულაციისთვის. უბრალოდ შეიყვანეთ:

node sim.js yourfile.h

თქვენ წარმოგიდგენთ სიმულაციის შედეგს და გამომავალს KIM Uno– სგან ეკრანზე.

ეს იყო ძალიან მოკლე შესავალი ამ ინსტრუმენტებში; გირჩევთ ითამაშოთ მათთან ერთად და შეხედეთ როგორ მუშაობენ. ამ გზით თქვენ მიიღებთ ღრმა ცოდნას და ისწავლით CPU– ების, ინსტრუქციების, ასამბლერებისა და ემულატორების მიღმა ფუნქციონირების პრინციპებს;-)

ნაბიჯი 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 კონკურსში

გირჩევთ: