Სარჩევი:

AVR Assembler Tutorial 8: 4 ნაბიჯი
AVR Assembler Tutorial 8: 4 ნაბიჯი

ვიდეო: AVR Assembler Tutorial 8: 4 ნაბიჯი

ვიდეო: AVR Assembler Tutorial 8: 4 ნაბიჯი
ვიდეო: AVR Ассемблер. Урок 4. АЦП. AVR Assembler. Lesson 4. ADC. 2024, ივლისი
Anonim
AVR Assembler Tutorial 8
AVR Assembler Tutorial 8

კეთილი იყოს თქვენი მობრძანება მე –8 გაკვეთილზე!

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

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

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

ჩვენ ამ გაკვეთილის უმეტეს ნაწილს გავატარებთ ფიზიკური დავალებების შესრულებაში, როგორიცაა სქემის დიზაინი, პროტოტიპის დაფის შედგენა და ნივთების შედუღება ერთად, მაგრამ არის ცოტა პროგრამირება, რომელიც უნდა გავაკეთოთ ბოლოს ნივთების გადაადგილების შემდეგ. მიზეზი ის არის, რომ ჩვენ საბოლოოდ ვიყენებთ 2 მავთულის სერიულ ინტერფეისს ჩვენს მთავარ "სამაგისტრო" კონტროლერსა და ყველა "მონა" კონტროლერს შორის, რომლებიც ქმნიან ჩვენი საერთო პროექტის კომპონენტებს ამ გაკვეთილების სერიაში და, როგორც გახსოვთ, მე –6 სახელმძღვანელოში ჩვენ გამოვიგონეთ მორზეს კოდის ერთგვარი მეთოდი, რომელიც გვიჩვენებს კამათლების გორგოლაჭებიდან (გაკვეთილი 4) რეგისტრაციის ანალიზატორს (სამეცადინო 5), რომელმაც აჩვენა კამათლების გადაღების შედეგი ორობითი სახით 8 შუქდიოდზე რა ეს იყო მხოლოდ "გააფართოვო შენი" მეთოდი, რომლითაც მე გადავწყვიტე გამომეყენებინა, რადგან იმ დროს ჯერ კიდევ ნაადრევი იყო 2 მავთულის სერიული კომუნიკაცია. ჩვენ ახლა თითქმის მზად ვართ სერიული კომუნიკაციის ღრმა ბოლოში ჩავუღრმავდეთ და ამას ვაკეთებთ სამეურვეო მე –10 – ში, მაგრამ ჯერჯერობით ჩვენ უნდა ვიწინასწარმეტყველოთ მომავალი განვითარება და ხელახლა გავაერთიანოთ ჩვენი კამათელი როლიკებით, რათა გავათავისუფლოთ ეს ორი ქინძისთავები, რომლებიც ჩვენ გვჭირდება სერიული კომუნიკაციისთვის.

ეს არის SCL და SDA ქინძისთავები ATmega328P- ზე. თქვენ შეგიძლიათ ნახოთ pinout დიაგრამაზე, რომ მათ ასევე უწოდებენ ADC5 და ADC4 როდესაც გამოიყენება ანალოგურ-ციფრულ კონვერტაციებში, მათ უწოდებენ PCINT13 და PCINT12 როდესაც გამოიყენება როგორც "Pin Change Interrupt" ქინძისთავები, და ბოლოს ჩვენ მათ ზოგადად PC5 და PC4 ვუწოდებთ. როდესაც უბრალოდ განიხილება როგორც ქინძისთავები PortC– ზე. მას შემდეგ, რაც ჩვენ გამოვიყენეთ ეს ორი ქინძისთავი, როგორც ჩვენი კამათლის როლიკერის ნაწილი სხვადასხვა მიზეზის გამო (მთავარი ის არის, რომ ამან გაამარტივა კოდირება და გაამყარა LED- ები დაფაზე) ჩვენ ახლა უნდა შევცვალოთ ჩვენი კოდი და ოდნავ გავაბრუნოთ იგი გაათავისუფლეთ ეს ქინძისთავები მომავალი კომუნიკაციისთვის.

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

ამ გაკვეთილის დასასრულებლად დაგჭირდებათ შემდეგი ნივთები:

  1. სტანდარტული მასალა, რომელიც თქვენ ყოველთვის გჭირდებათ, მე ვაპირებ შეწყვიტო გამეორება მუდმივად: თქვენი პროტოტიპების დაფა, თქვენი მონაცემების ფურცლის ასლი და ინსტრუქციის ნაკრები და თქვენი ტვინი.
  2. უკაბელო მიკროსქემის პროტოტიპი PCB დაფის მსგავსი: https://www.ebay.com/itm/191416297627 მე ვაპირებ გამოვიყენო ამ დაფის Measure Explorer 103RAWD ვერსია: https://www.ebay.com/itm/103RAT -circuit-proto-proto… ვინაიდან მე მაქვს რამოდენიმე მათგანი ხელზე, მაგრამ 103RAW-0 ვერსია, რომელსაც ზემოთ დავუკავშირებ, ასევე კარგად იმუშავებს.
  3. მაკრატელი, მავთულები, შედუღება, გამაგრილებელი რკინა, "ხელების დამხმარე" ან სხვა რამ, რაც უნდა დაიჭიროს და ა.შ. და ა.შ. და ა.შ. ისევ. თუ თქვენ ნამდვილად მიაღწიეთ აქამდე ამ გაკვეთილებს, მაშინ ალბათ უკვე გაქვთ ეს ყველაფერი.

აქ არის ბმული ჩემი AVR ასამბლეის გაკვეთილების სრული კოლექციისთვის:

ნაბიჯი 1: შეიმუშავეთ გაყვანილობის დიაგრამა

შეიმუშავეთ გაყვანილობის დიაგრამა
შეიმუშავეთ გაყვანილობის დიაგრამა
შეიმუშავეთ გაყვანილობის დიაგრამა
შეიმუშავეთ გაყვანილობის დიაგრამა
შეიმუშავეთ გაყვანილობის დიაგრამა
შეიმუშავეთ გაყვანილობის დიაგრამა

Measure Explorer- ის დაფებზე ყველაზე მაგარია ის, რომ თუ ცოტა დრო დაუთმეთ და საგნები თავიდან დაადგინეთ, შეგიძლიათ დაზოგოთ ბევრი გაყვანილობა. ასე რომ, ჩვენ დავიწყებთ ჩვენი დიზაინის შემუშავებას გარკვეული დროით, სანამ რამის შედუღებას დავიწყებთ. ამგვარი დაფის საშუალებით თქვენ უნდა გაჭრათ რამოდენიმე დამაკავშირებელი მავთული, რაც არც ისე ადვილია, მაგრამ შედეგი არის ძალიან ლამაზი კომპაქტური დაფა მინიმალური ჩახლართული მავთულხლართებით. პირველი რაც ჩვენ უნდა გავაკეთოთ არის ჩვენი დიზაინის შექმნა ჩართვა ისე, რომ იგი მოთავსდეს დაფაზე. ამის კარგი გზაა დაფის რუქის გადმოტვირთვა და შემდეგ მისი გამოყენება სხვადასხვა დიზაინისთვის, სანამ არ იპოვით იმას, რაც მუშაობს. აქ არის განლაგება ME-PB-103RAWD https://www.bluemelon.com/photo/3483513-T800600-j.webp

ნაბიჯი 2: გათიშეთ წრე დაფაზე

გათიშეთ წრე დაფაზე
გათიშეთ წრე დაფაზე
გათიშეთ წრე დაფაზე
გათიშეთ წრე დაფაზე
გათიშეთ წრე დაფაზე
გათიშეთ წრე დაფაზე

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

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

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

საკმაოდ დიდი დრო და მოთმინება დასჭირდება მიკროსქემის დაფაზე გაჭრას, მაგრამ ეს ერთგვარი სახალისოა მას შემდეგ რაც კარგად გამოხვალ.

ნაბიჯი 3: შეაერთეთ კომპონენტები და შეამოწმეთ

შეაერთეთ კომპონენტები და შეამოწმეთ
შეაერთეთ კომპონენტები და შეამოწმეთ
შეაერთეთ კომპონენტები და შეამოწმეთ
შეაერთეთ კომპონენტები და შეამოწმეთ
შეაერთეთ კომპონენტები და შეამოწმეთ
შეაერთეთ კომპონენტები და შეამოწმეთ

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

მე პირველად შევაერთე LED- ები ერთ კამათელზე, შემდეგ მე მივიღე დადებითი და უარყოფითი ნიშნები ჩემი პურის დაფიდან და გამოვცადე თითოეული LED- ის კავშირი, რათა დავრწმუნებულიყავი, რომ ისინი ერთმანეთისგან იზოლირებულნი არიან და მუშაობენ.

ანალოგიურად სხვა იღუპება.

შემდეგ მიამაგრეთ რეზისტორი თითოეულ კოლოფზე, ხოლო 10K რეზისტორი დაფის უკანა მხარეს.

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

ყურადღება მიაქციეთ, დაფის უკანა მხარეს რომ შევხედოთ, სათაურები რომ მიმაგრებულია. მე გამოვიყენე გრძელი სათაურები და წარმართე ისინი ჰორიზონტალურად ისე, რომ ისინი არ გამხდარიყვნენ დაფის გარეთ. ეს არის ისე, რომ საბოლოოდ შემიძლია დაფა დაფაროს ღილაკებისა და LED- ების დონეზე კონტეინერით და არ მქონდეს თავსაბურავები. ჩვენ გვაქვს სათაური Tx, Rx, ასე რომ ჩვენ შეგვიძლია ჩიპის დაპროგრამება, ჩვენ გვაქვს SDA, SCL სათაური, რათა შემდგომში გამოვიყენოთ 2 მავთულის კომუნიკაცია. და ჩვენ გვაქვს 3 პინიანი სათაური AVCC, AREF, GND დაფის მეორე მხარეს. მე მაქვს ყველა დამჭერი და VCC ქინძისთავები, რომლებიც ერთმანეთთან არის დაკავშირებული ჩიპზე, ასე რომ ჩვენ გვჭირდება მხოლოდ ერთი დენის შეყვანა.

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

ახლა ჩვენ უნდა შევცვალოთ ჩვენი კოდი ისე, რომ ის გააკონტროლოს ეს ახალი კონფიგურაცია.

ნაბიჯი 4: ასამბლეის კოდი და ვიდეო

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

გირჩევთ: