avr ოჯახის მიკროკონტროლერები. რა არის მიკროკონტროლერი, AVR მიკროკონტროლერების ოჯახები და კორპუსები რა არის avr

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

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

მოთხოვნები ATS-ისთვის

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

კლასიფიკაცია

მოწყობილობები იყოფა მათი მუშაობის პრინციპის მიხედვით.

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

AVR-ის მუშაობის პრინციპი

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

  • რელე EL-11 აკონტროლებს სამფაზიან ძაბვას, აკონტროლებს ფაზის დისბალანსს, რღვევას და მონაცვლეობას.
  • დატვირთვის დასაკავშირებლად გამოიყენება ელექტრომაგნიტური რელეები მძლავრი კონტაქტებით. ნორმალურ რეჟიმში, მთავარი შეყვანის კოჭა იკვებება მისგან და თავისი კონტაქტებით KM 1 აკავშირებს ელექტრომომარაგებას დატვირთვას.
  • როდესაც მთავარ წრეში ძაბვა გაქრება, რელე KM 1 გამორთულია და ენერგია მიეწოდება რელე KM 2-ის კოჭს, რომელიც აკავშირებს სარეზერვო შეყვანას.

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

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

AVR ოპერაცია

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

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

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

გენერატორის ავტომატური გაშვების ერთეული (BAZG)

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

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

კერძო სახლის AVR-ის მახასიათებლები

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

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

ATS ფუნქციების გაფართოება

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

სტანდარტული გადაწყვეტა უკვე შეიცავს პროგრამულ უზრუნველყოფას. იგი დამონტაჟებულია PLC-ში.

დასკვნა

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

AVR მიკროკონტროლერები

AVR მიკროკონტროლერები არის Atmel-ის განვითარება და პროდუქტი. განსხვავება ამ მიკროკონტროლერებსა და მსგავსებს შორის არის პროცესორის ბირთვის საკმაოდ წარმატებული არქიტექტურა და პერიფერიული მოდულების ფართო სპექტრი, რაც ხელს უწყობს მოწყობილობის პროგრამირების პროცესს. ეს ჩიპები დამზადებულია 0,35 მიკრონი ტექნოლოგიის გამოყენებით და მუშაობს საათის სიჩქარით -16 MHz-დან, რაც უზრუნველყოფს შესრულებას 16 MIPS-მდე.

AVR ოჯახის მიკროკონტროლერები დაფუძნებულია 8-ბიტიან ცენტრალურ დამუშავების ერთეულზე, რომელიც აგებულია RISK არქიტექტურის პრინციპზე. ამ ბლოკის საფუძველია არითმეტიკურ-ლოგიკური ერთეული - ALU. პროგრამის მეხსიერებიდან საათის სიგნალის საფუძველზე პროგრამის მრიცხველის შიგთავსის შესაბამისად ირჩევა სასურველი ბრძანება და სრულდება გამოთვლა. პროგრამის მეხსიერებიდან ბრძანების შერჩევისას სრულდება წინა არჩეული ბრძანება, რომელიც იძლევა შესრულების საშუალებას 1 MIPS დონეზე 1 MHz-ზე. ALU დაკავშირებულია 32-ე ზოგადი დანიშნულების რეგისტრები. RON მდებარეობს RAM მისამართის სივრცის დასაწყისში, მაგრამ არ არის მისი ნაწილიფიზიკურად . ამიტომ, მათზე წვდომა ხდება როგორც რეგისტრებში, ასევე მეხსიერებაში.

ATMEL აწარმოებს 8-ბიტიან მიკროკონტროლერების შემდეგ ოჯახებს: პატარა და მეგა. აქვს პატარა მიკროკონტროლერებიფლეში -1 და 2 კბაიტიანი ROM პაკეტში 8-20 პინიანი და მეგა მიკროკონტროლერები, შესაბამისად: Flash ROM 8-128 კბაიტი პაკეტში 28-64 პინიანი.

სპეციფიკაციებიმიკროკონტროლერებიAVR:
- სიხშირე 16 MHz-მდე ბრძანების შესრულების დრო 62,5 ns;
- ჩაშენებული პროგრამირებადი RC ოსცილატორი, სიხშირე 1, 2, 4, 8 MHz;
-
ფლეში -პროგრამული ROM, სისტემაში პროგრამირებადი, 128 კბაიტამდე;
- ორსადენიანი TWI ინტერფეისი, თავსებადი I2C ინტერფეისით;
- მრავალარხიანი 8-, 9-, 10-, 16-ბიტიანი PWM მოდულატორი;
- 10-ბიტიანი ADC 70 μs კონვერტაციის დროით და დიფერენციალური შეყვანით;
- პროგრამირებადი მომატება - 1; 10 ან 200;
- ჩაშენებული საცნობარო ძაბვის წყარო;
- ანალოგური შედარებითი;
- რეგულირებადი გაშვების შეფერხების წრე ელექტრომომარაგების შემდეგ;
- მიწოდების ძაბვის მონიტორინგის წრე;
- JTAG ინტერფეისი ემულატორის დასაკავშირებლად;

- ელექტრული გადაპროგრამირებადი მონაცემთა ROM 4 კბაიტამდე;
- შიდა ოპერატიული მეხსიერება წვდომის დროით 1 ციკლი, 4 კბაიტამდე;
- ბრძანებების ძლიერი ნაკრები (120-ზე მეტი ინსტრუქცია);
- 6 ტექნიკის გამრავლების ბრძანება (მეგა ოჯახისთვის);
- განვითარებული მისამართების სისტემა, ოპტიმიზირებულია C შემდგენელებთან მუშაობისთვის;
- 32 საერთო დანიშნულების რეგისტრი (აკუმულატორი);
- სინქრონული (USART) ან ასინქრონული (UART) სერიული პორტები;
- სინქრონული სერიული პორტი (SPI);
- მიმდინარე მოხმარება 0.1 mA აქტიურ რეჟიმში.

მიკროკონტროლერების სახეები AVR:

TYPE პროგრამის მეხსიერება, KB EEPROM მონაცემები, ბაიტი RAM მონაცემები, ბაიტი საათის სიხშირე, MHz
ATTiny11 1 - - 6 6
ATTiny11L 1 - - 2 6
ATTiny12 1 64 - 8 6
ATTiny12L 1 64 - 4 6
ATTiny12V 1 64 - 1.2 6
ATTiny13 1 64 64 20 6
ATTiny15L 1 64 - 1.2 6
ATTiny28L 2 - - 4 19
ATTiny28V 2 - - 1.2 19
AT90S2313 4 256 512 10 15
ATMega16 16 512 1024 16 32
ATMega48 4 256 512 20 40

წაიკითხეთ მეტი AVR მიკროკონტროლერების შესახებ სპეციალურში

ასევე მიკროკონტროლერები AVR მეგა ოჯახებს აქვთ შესაძლებლობა დამოუკიდებლად შეცვალონ თავიანთი პროგრამის მეხსიერების შინაარსი. ეს საშუალებას გაძლევთ შექმნათ მათზე დაფუძნებული მოქნილი სისტემები, რომელთა მუშაობის ალგორითმი შეიცვლება თავად მიკროკონტროლერის მიერ შიდა პირობებისა და გარე მოვლენების მიხედვით. მიკროკონტროლერები AVR აქვს ჩაშენებული 8-არხიანი 10-ბიტიანი ანალოგური ციფრული გადამყვანი. ენერგიის დაზოგვის რეჟიმი საშუალებას გაძლევთ გამორთოთ გამოუყენებელი მოდულები და, შედეგად, შეამციროთ ენერგიის მოხმარება.

მიკროკონტროლერებიAVR-ებს შეუძლიათ იმუშაონ 2-6 ვოლტის მიწოდების ძაბვაზე. დენის მოხმარება აქტიურ რეჟიმში არის დაახლოებით 1 mA მუშაობისთვის 500 kHz-ზე, 6 mA 5 MHz-ზე და 10 mA-მდე 12 MHz-ზე. შესაძლებელია მათი გადართვა პროგრამულად შემდეგ დაბალი ენერგიის რეჟიმებზე:

1. ეკონომიური რეჟიმი. მხოლოდ ტაიმერის გენერატორი აგრძელებს მუშაობას, რაც უზრუნველყოფს დროის ბაზის უსაფრთხოებას; სხვა ფუნქციები გამორთულია.
2. უმოქმედობის რეჟიმი. მხოლოდ პროცესორი წყვეტს მუშაობას და იწერება მონაცემთა მეხსიერების შიგთავსი, შიდა საათის გენერატორი, ტაიმერები, შეფერხების სისტემა და დამკვირვებელი ტაიმერი აგრძელებს მუშაობას, ხოლო მიმდინარე მოხმარება არის დაახლოებით 2,5 mA სიხშირეზე 12 MHz.
3. გაჩერების რეჟიმი. რეგისტრის ფაილის შიგთავსი ინახება, შიდა საათი შეჩერებულია და ყველა ფუნქცია შეჩერებულია გარე შეფერხების სიგნალის ან აპარატურის გადატვირთვის მიღებამდე, მიმდინარე მოხმარება არის 80 μA.

პროგრამირებისთვისმიკროკონტროლერებიAVR-ს აქვს შემდეგი სისტემები: AVR Studio - Atmel-ის ოფიციალური პროგრამირების სისტემა, გაძლევთ საშუალებას დაწეროთ და გამართოთ პროგრამები ასამბლეის ენაზე, C და C++. IAR არის კომერციული პროგრამირების სისტემა C, C++ და ასამბლეის ენაზე. WinAVR არის ღია კოდის შემდგენელი, რომელიც მხარს უჭერს ბევრ სხვადასხვა ენას და AtmanAVR არის AVR-ის პროგრამირების სისტემა Visual C++ 6-ის მსგავსი ინტერფეისით. კიდევ ერთი მარტივი და პოპულარული პროგრამის ჩამოტვირთვა შესაძლებელია პროგრამული უზრუნველყოფის განყოფილებიდან.

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

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

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

ბირთვი ძირითადად შედგება პროგრამის მეხსიერებისგან (Flash Program Memory) და არითმეტიკული ლოგიკური ერთეული (ALU), საკონტროლო განყოფილება (დიაგრამაზე არ არის ნაჩვენები) და პროგრამის მრიცხველი (Program Counter). ასევე არის საათის გენერატორი, რომელიც ადგენს იმპულსებს, რომლებთანაც მოქმედებენ მიკროკონტროლერები. საათის გენერატორი შეიძლება შევადაროთ ქანქარას და ძაღლს მაღვიძარაში: ქანქარა მიდის წინ და უკან, ძაღლი კბილებს თითო კბილს - გადაცემათა კოლოფი ტრიალებს. ძაღლი რომ ადგა, მთელი მაღვიძარა ადგა.

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

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

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

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

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

32 უჯრედი გამოიყენება შუალედურ ოპერანდებად - ზოგადი დანიშნულების ოპერატიული რეგისტრები RON. ამ უჯრედებზე წვდომა ყველაზე სწრაფია და მათი შინაარსით ოპერაციების რაოდენობა ყველაზე მდიდარია. ასამბლერში ამ რეგისტრებს უბრალოდ უწოდებენ R0, R1, R2 ... R31. უფრო მეტიც, ისინი იყოფა სამ ჯგუფად:

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

უფროსი R16..R31
სრული რეგისტრები, რომლებიც მუშაობენ ყველა ბრძანებით გამონაკლისის გარეშე.

ინდექსი R26…R31
ძველი ჯგუფის ბოლო ექვსი რეგისტრი განსაკუთრებულია. პრინციპში, ისინი შეიძლება გამოყენებულ იქნას როგორც ჩვეულებრივი ზოგადი დანიშნულების რეესტრები. მაგრამ, გარდა ამისა, მათ შეუძლიათ შექმნან რეგისტრის წყვილები X(R26:R27), Y(R28,R29), Z(R30:R31), რომლებიც გამოიყენება როგორც მაჩვენებლები მეხსიერებასთან მუშაობისას.

ოპერატიული მეხსიერება
32 რეგისტრის გარდა, მიკროკონტროლერს აქვს ოპერატიული მეხსიერება. სიმართლე ყველგან არ არის - ახალგაზრდა AVR Tiny12 და Tiny11 ოჯახებში არ არის ოპერატიული მეხსიერება, ასე რომ თქვენ უნდა იმუშაოთ 32 უჯრედში.

ოპერატიული მეხსიერება რამდენიმე ასეული მეხსიერების უჯრედია. 64 ბაიტიდან 4 კილობაიტამდე, მოდელის მიხედვით. ამ უჯრედებს შეუძლიათ შეინახონ ნებისმიერი მონაცემი და მათზე წვდომა ხდება Load and Store ბრძანებების მეშვეობით.

ანუ, თქვენ არ შეგიძლიათ, მაგალითად, აიღოთ და დაამატოთ, ვთქვათ, ერთი უჯრედში მეხსიერებაში. ჩვენ ჯერ უნდა შევასრულოთ Load ოპერაცია RAM-დან RON-ზე, შემდეგ დავამატოთ ჩვენი ერთეული რეესტრში და გამოვიყენოთ Store ოპერაცია, რათა ის ისევ შევინახოთ მეხსიერებაში. Ერთადერთი გზა.

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

Პერიფერია
პერიფერიული მოწყობილობები მიკროკონტროლერის შიდა შიგთავსია. ეს არის ის, რაც მას ასე მრავალმხრივს ხდის. ALU, RAM, FLASH და Control Unit ჰგავს კომპიუტერს Mother, Percent, Memory, Screw - რომლის გარეშეც კომპიუტერი გამართულად არც კი ჩაირთვება. შემდეგ პერიფერია უკვე ჰგავს ქსელურ კავშირს, ვიდეო ბარათს, ხმის ბარათს და სხვა ზარებს და სასტვენებს. ისინი შეიძლება იყოს განსხვავებული, სიგრილისა და დახვეწილობის სხვადასხვა ხარისხით და ასევე შეიძლება გაერთიანდეს სხვადასხვა თანმიმდევრობით.

ეს ეფუძნება ჩიპზე ამა თუ იმ პერიფერიის არსებობას, რომ მიკროკონტროლერი შეირჩევა ამოცანისთვის.

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

  • შემავალი/გამომავალი პორტები არის ის, რის გარეშეც შეუძლებელია კონტროლერისთვის გარე სამყაროსთან ურთიერთობა. ეს არის პორტები, რომლებიც უზრუნველყოფენ ძალიან "დანის დარტყმას", რომელიც აკონტროლებს მიკროსქემის სხვა ელემენტებს. თუ გამომავალზე 1-ის მიღება გინდოდათ, შესაბამის პორტს გასცემდით ბრძანებას - მიიღეთ, მოაწერეთ ხელი. გსურთ იცოდეთ რა სიგნალია შეყვანის დროს? შესაბამისი პორტი ვთხოვეთ და მივიღეთ. მიკროკონტროლერის თითქმის ყველა პინს შეუძლია იმუშაოს როგორც I/O პორტი.
  • UART/USART გადამცემი - სერიული პორტი. ის მუშაობს იმავე ასინქრონული პროტოკოლის გამოყენებით, როგორც ძველი dial-up მოდემები. ძველი, როგორც დრო, სანდო და უბრალო, როგორც შლაპა. ვარგისია კომპიუტერთან და სხვა კონტროლერებთან კომუნიკაციისთვის.
  • ტაიმერები/მრიცხველები - ტაიმერების ამოცანაა ტკიპების დათვლა. მე ვუთხარი, რომ დათვალოს 100 პროცესორის ციკლი-დაიწყებდა და დათვლის სიგნალს იძლეოდა. მას ასევე შეუძლია შეყვანის სიგნალების ხანგრძლივობის დათვლა და შეყვანის იმპულსების რაოდენობის დათვლა. დიახ, ტაიმერს ბევრი რამის გაკეთება შეუძლია, განსაკუთრებით AVR-ში. ტაიმერის ფუნქციების დეტალური აღწერა იკავებს კარგ სამ ათეულ გვერდს მონაცემთა ფურცელში. იმისდა მიუხედავად, რომ არსებობს რამდენიმე ტიპის ტაიმერი და მათი ჩაყრა განსხვავებულია.
  • ADC - ანალოგური შეყვანა. ყველა მიკროკონტროლერს არ აქვს ის, მაგრამ ეს სასარგებლოა. საშუალებას გაძლევთ მიიღოთ და გაზომოთ ანალოგური სიგნალი. ADC არის ერთგვარი ვოლტმეტრი.
  • I2C(TWI) ინტერფეისი - IIC სერიული ავტობუსი. მისი მეშვეობით ხდება კომუნიკაცია სხვა მოწყობილობებთან. IIC-ზე შეგიძლიათ მოაწყოთ მიკროკონტროლერების ლოკალური ქსელი ერთ მოწყობილობაში.
  • SPI არის კიდევ ერთი სერიული პროტოკოლი, მსგავსი IIC, მაგრამ არ იძლევა ქსელის დაკავშირებას. მუშაობს მხოლოდ Master-Slave რეჟიმში. მაგრამ ძალიან სწრაფად.
  • Analog Comparator არის კიდევ ერთი ანალოგური ინტერფეისი. მაგრამ, ADC-სგან განსხვავებით, ის არ ზომავს, არამედ ადარებს ორ ანალოგურ სიგნალს, რაც იძლევა შედეგს A>B ან A.
  • JTAG/DebugWire არის გამართვის ინსტრუმენტი, რომელიც საშუალებას გაძლევთ შეხედოთ კონტროლერის ტვინს სპეციალური ადაპტერის გამოყენებით, მაგალითად, ჩემს დემო დაფაზე ჩაშენებული. ზოგჯერ მის გარეშე თითქოს ხელების გარეშე ყოფნა.
  • PWM - PWM გენერატორი. ზოგადად, ეს არ არის ცალკე ბლოკი, არამედ დამატებითი ტაიმერის ფუნქცია, მაგრამ ასევე სასარგებლო. PWM გენერატორის გამოყენებით მარტივია ანალოგური სიგნალის დაყენება. მაგალითად, შეცვალეთ LED-ის სიკაშკაშე ან ძრავის ბრუნვის სიჩქარე. მაგრამ თქვენ არასოდეს იცით სად შეიძლება მისი გამოყენება. PWM არხების რაოდენობა განსხვავდება კონტროლერიდან კონტროლერამდე.

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

ბირთვსა და პერიფერიას შორის ურთიერთქმედება
ბირთვი ყველასთვის ერთნაირია, პერიფერია განსხვავებული. მათ შორის კომუნიკაცია მეხსიერების მეშვეობით ხდება. იმათ. პერიფერიულ მოწყობილობებს აქვთ საკუთარი მეხსიერების უჯრედები - პერიფერიული რეგისტრები. თითოეულ პერიფერიულ მოწყობილობას აქვს ერთზე მეტი მათგანი. ეს რეგისტრები შეიცავს კონფიგურაციის ბიტებს. დამოკიდებულია იმაზე, თუ როგორ არის დაყენებული ეს ბიტები ამ რეჟიმში, პერიფერიული მოწყობილობა მუშაობს. იმავე რეგისტრებში ჩვენ უნდა ჩავწეროთ მონაცემები, რომლებიც გვინდა გამოვიტანოთ, მაგალითად, სერიული პორტის მეშვეობით, ან წავიკითხოთ მონაცემები, რომლებიც დამუშავდა ADC-ის მიერ. პერიფერიულ მოწყობილობებთან მუშაობისთვის არის სპეციალური IN და OUT ბრძანებები პერიფერიულიდან RON რეესტრში წაკითხვისთვის და RON რეესტრიდან პერიფერიაზე ჩაწერისთვის, შესაბამისად.

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

როგორ გავარკვიოთ, რა არის კონკრეტულ მიკროკონტროლერში?
ამ მიზნით, თითოეულ MK-ს აქვს მონაცემთა ცხრილი - ტექნიკური დოკუმენტაცია. და სწორედ იქ, პირველ გვერდზე წერია რა, რამდენი და როგორ. აი შენთვის მაგალითი Megu16-ის მონაცემთა ცხრილი ჩემი ხმოვანი თარგმანით :) ის ვარიანტები, რომლებსაც მე თავიდან ყველაზე საინტერესოდ ვუყურებ, თამამად არის მონიშნული, დანარჩენი, როგორც წესი, ნაგულისხმევად არის წარმოდგენილი.

მახასიათებლები(მახასიათებლები!)
მაღალი ხარისხის, დაბალი სიმძლავრის AVR® 8-ბიტიანი მიკროკონტროლერი
(საჩვენებელი ეკონომიური AVR არქიტექტურა)

მოწინავე RISC არქიტექტურა
(უბრალოდ გასაოცარია სარისკო ბიჭებისთვის!)

– 131 ძლიერი ინსტრუქცია – ყველაზე ერთსაათიანი ციკლის შესრულება
(131 მაგარი და სწრაფი გუნდი!)

– 32 x 8 ზოგადი დანიშნულების სამუშაო რეგისტრები
(32 რვაბიტიანი რეგისტრი - იგივე R0...R31)

- სრულად სტატიკური ოპერაცია
(სრულიად სტატიკური ოპერაციები, ანუ საათის სიხშირე შეიძლება იყოს მინიმუმ 1 პულსი წელიწადში)

- 16 MIPS გამტარუნარიანობა 16 MHz-ზე
(შესრულების სიჩქარე წამში 16 მილიონ ოპერაციამდე!)

- ჩიპზე 2-ციკლიანი მულტიპლიკატორი
(და ჩვენ შეგვიძლია გავამრავლოთ რიცხვები ორ ნაბიჯში! ეს მართლაც მაგარია, ხალხო!)

მაღალი გამძლეობის არასტაბილური მეხსიერების სეგმენტები
– 16K ბაიტი სისტემური თვითპროგრამირებადი Flash პროგრამის მეხსიერება
(საკმარისი მეხსიერება 16 კბ კოდისთვის)

– 512 ბაიტი EEPROM 8 ბიტიანი
(და დაგვრჩა 512 ბაიტი ნაგავი EEPROM-ში საუკუნეების განმავლობაში)

- 1K ბაიტი შიდა SRAM
(1Kb RAM, ვის არ აქვს საკმარისი 2 გიგაბაიტი? თქვენ არ იცით დაპროგრამება! =) აქ 64 ბაიტი საკმარისია. დაიმახსოვრე ბილ გეითსი და მისი „640 კბ ყველასთვის საკმარისია!“ იცოდა რაზეც ლაპარაკობდა :)

– ჩაწერის/წაშლის ციკლები: 10,000 Flash/100,000 EEPROM მიკროკონტროლერი
(შეგიძლიათ შეცვალოთ ფლეშ 10 ათასჯერ, eeprom 100 ათასჯერ. ასე რომ არ შეგეშინდეთ ექსპერიმენტების)

– მონაცემთა შენახვა: 20 წელი 85°C/100 წელი 25°C(1)
(თუ მაღვიძარას შეინარჩუნებთ AVR-ზე, მაშინ თქვენი შვილიშვილები 100 წლის შემდეგ მაინც იქნებიან კმაყოფილი ამით)

– სურვილისამებრ ჩატვირთვის კოდის განყოფილება დამოუკიდებელი დაბლოკვის ბიტებით
სისტემაში პროგრამირება ჩიპზე ჩატვირთვის პროგრამით
True Read-While-Write ოპერაცია
(ჩამტვირთველების მხარდაჭერა. მოსახერხებელი რამ, საშუალებას გაძლევთ ფლეში პროგრამისტების გარეშე)

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

JTAG (IEEE std. 1149.1 შესაბამისი) ინტერფეისი
– საზღვრების სკანირების შესაძლებლობები JTAG სტანდარტის პროგრამირებადი მიხედვით
– ჩიპზე გამართვის ვრცელი მხარდაჭერა
– Flash, EEPROM, Fuses და Lock Bits-ის დაპროგრამება JTAG ინტერფეისის ფლეშის საშუალებით
(JTAG გამართვის ინტერფეისი და მისი მახასიათებლები)

პერიფერიული მახასიათებლები
(და აქ, ფაქტობრივად, პერიფერია წავიდა)

- ორი 8-ბიტიანი ტაიმერი/მრიცხველი ცალკე პრესკალერებით და შედარების რეჟიმებით
(ორი 8-ბიტიანი ტაიმერი, სხვადასხვა რეჟიმის თაიგულით.

- ერთი 16-ბიტიანი ტაიმერი/მრიცხველი ცალკე წინასწარი სკალერით, შედარების რეჟიმით და გადაღების რეჟიმით ATmega16
(ერთი 16-ბიტიანი ტაიმერი, ყველა სახის გაჯეტითა და ფუნქციებით)

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

- ოთხი PWM არხი ATmega16L
(ოთხი PWM არხი - ერთსა და იმავე ტაიმერებზე)

- 8-არხიანი, 10-ბიტიანი ADC
(რვა არხიანი 10-ბიტიანი ADC. მისი მახასიათებლები მოცემულია ქვემოთ)

8 ერთჯერადი არხი
(შეგიძლიათ ერთდროულად გაზომოთ 8 სხვადასხვა ძაბვა)

7 დიფერენციალური არხი მხოლოდ TQFP პაკეტში
(7 დიფერენციალური არხი. მართალია, მხოლოდ TQFP პაკეტში, რადგან მას მეტი ფეხი აქვს)

2 დიფერენციალური არხი პროგრამირებადი გაზრდით 1x, 10x ან 200x
(ორი დიფერენციალური არხი პროგრამირებადი მომატებით)

– ბაიტზე ორიენტირებული ორი მავთულის სერიული ინტერფეისი
(IIC მხარდაჭერა ტექნიკის ბაიტის კოდირებით)

– პროგრამირებადი სერიული USART
(სერიული ინტერფეისი. მოსახერხებელია კომპიუტერთან კომუნიკაციისთვის)

– Master/Slave SPI სერიული ინტერფეისი
(SPI ინტერფეისი, სასარგებლო)

- პროგრამირებადი Watchdog ტაიმერი ცალკე ჩიპზე ოსცილატორით
(გაყინვისგან დაცვის სპეციალური ტაიმერი)

– ჩიპზე ანალოგური შედარება
(იგივე შედარება)

მიკროკონტროლერის სპეციალური მახასიათებლები
(სასტვენის სასარგებლო ხრიკები)

– ჩართვის გადატვირთვა და პროგრამირებადი ყავისფერი ამოღების ამოცნობა
(დაბალი ძაბვის დროს მუშაობის დროს დამცავი ბატარეებისაგან დაცვა)

– შიდა კალიბრირებული RC ოსცილატორი
(და თქვენ ასევე შეგიძლიათ დაზოგოთ 20 მანეთი გარე კვარცის ყიდვისას. თქვენ ეს არ გჭირდებათ! :) და ეს მაგარია!)

– გარე და შიდა შეფერხების წყაროები
(არსებობს გარე შეფერხებები. ძალიან მოსახერხებელი რამ)

- ძილის ექვსი რეჟიმი: უმოქმედო, ADC ხმაურის შემცირება, ენერგიის დაზოგვა, გამორთვა, ლოდინი
და გაფართოებული ლოდინი
(ბევრი ენერგიის დაზოგვის რეჟიმი)

I/O და პაკეტები
– 32 პროგრამირებადი I/O ხაზი
- 40-პინიანი PDIP, 44-პირიანი TQFP და 44-პინიანი QFN/MLF

(სასარგებლო ფეხების რაოდენობა, შესაბამისად შეყვანები და გამომავალი)

ოპერაციული ძაბვის დიზაინი.
– 2,7 – 5,5 ვ ATmega16L-სთვის
– 4.5 – 5.5V ATmega16-ისთვის

(მომარაგების ძაბვები. დაიმახსოვრეთ მე ვისაუბრე დაბალი ძაბვის სერიებზე - აი, ისინი მთელი თავისი დიდებით)

სიჩქარის კლასები
– 0 – 8 MHz ATmega16L-სთვის
– 0 – 16 MHz ATmega16-ისთვის

(და ეს არის მაქსიმალური სიხშირეები სხვადასხვა სერიებისთვის. დაბალი ძაბვის ძაბავს. თუმცა ექვემდებარება გადატვირთვას)

ენერგიის მოხმარება @ 1 MHz, 3V და 25°C ATmega16L-სთვის
- აქტიური: 1.1 mA
- უმოქმედობის რეჟიმი: 0.35 mA

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


ერთი ძირითადი არქიტექტურის შესაბამისად, ეს MCU იყოფა სამ დიდ ოჯახად:


Tiny AVR - იაფი და საკმაოდ მარტივი დიზაინის მიკროკონტროლერები 8 პინიან პაკეტში
კლასიკური - მიკროკონტროლერის ძირითადი ძირითადი ხაზი;
Mega AVR არის მიკროკონტროლერი რთული ამოცანებისთვის, რომლებიც საჭიროებენ პროგრამისა და მონაცემთა მეხსიერების მნიშვნელოვან რაოდენობას.

AVR Classic– ყველაზე პოპულარული ხაზი Atmel Corporation-ის სხვა Flash-MK-ებს შორის. ამ უკანასკნელმა წარმოადგინა პირველი 8-ბიტიანი Flash MK ჯერ კიდევ 1993 წელს და მას შემდეგ მხოლოდ აუმჯობესებს ტექნოლოგიას. კომპანია მუდმივად მუშაობს საწარმოო ხაზის გასაუმჯობესებლად შემდეგ ძირითად მიმართულებებში: ენერგიის სპეციფიკური მოხმარების შემცირება; მიწოდების ძაბვისა და სიჩქარის დიაპაზონის გაზრდა; რეალურ დროში გამართვის პროდუქტებში ადვილად ინტეგრირების შესაძლებლობა; თვითპროგრამირების ფუნქციის განხორციელება; პერიფერიული მოდულების რაოდენობის გაფართოება და მოდერნიზაცია; სხვადასხვა სპეციალიზებული მოწყობილობების ინტეგრაცია (გადამცემები, USB კონტროლერები, LCD დრაივერები და ა.შ.

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

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

შევეცადოთ დავწეროთ მარტივი პროგრამა "Blinking LED". გასაგებად, ჩვენ დავწერთ პროგრამას C ენაზე, ამისთვის დაგვჭირდება სპეციალური პროგრამა CodeVisionAVR.

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

თქვენ შეისწავლით თუ როგორ მართოთ LCD დისპლეი CodeVisionAVR შემდგენელში არსებული ბრძანებების გამოყენებით, ATmega8 ოჯახის MK-ისა და ალფანუმერული LCD ეკრანის მაგალითზე ჩაშენებული HD44780 ჩიპით.

ნებისმიერ მიკროკონტროლერს შეუძლია მხოლოდ ციფრული სიგნალების "აღქმა" - ლოგიკური ნული ან ერთი. მაგალითად, ATmega8 MK-სთვის, მიწოდების ძაბვით 5 ვ, ლოგიკური ნული არის ძაბვა, რომელიც დევს 0-დან 1,3 ვ-მდე დიაპაზონში, ხოლო ერთეული არის 1,8-დან 5 ვ-მდე. საკმაოდ ხშირად სამოყვარულო რადიო პრაქტიკაში არსებობს. ძაბვის გაზომვის საჭიროება, რომლის მიღებაც შესაძლებელია ნებისმიერი მნიშვნელობის დიაპაზონში ნულიდან მიწოდების ძაბვის დონემდე. ამ ამოცანებისთვის, ყველა AVR მიკროკონტროლერი შეიცავს ანალოგურ ციფრულ გადამყვანს.


პროგრამული უზრუნველყოფა გამოიყენება ამ ტიპის მიკროკონტროლერებისთვის ინტეგრირებული პროგრამული უზრუნველყოფის განვითარების გარემოსთვის. CodeVisionAVR-ის ძირითადი მახასიათებლები არის ის, რომ ის ძალიან ნათელია თვითშესწავლისთვის და ასევე მხარს უჭერს ამ ოჯახის ყველა არსებულ MK-ს.

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

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

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

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

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

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

დავუშვათ, რომ თქვენ მოგეცემათ დავალება - მოახდინოთ LED ნათურა.
მოდით განვიხილოთ, თუ როგორ უნდა მოგვარდეს ეს პრობლემა:

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

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

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

იმისათვის, რომ მიკროკონტროლერმა გაიგოს რა გვინდა მისგან, ჩვენ უნდა ჩავტვირთოთ მასში firmware - მოქმედებების თანმიმდევრობა, რომელიც მას უნდა შეასრულოს. Firmware არის ერთებისა და ნულების თანმიმდევრობა. უფრო მოსახერხებელი რომ ყოფილიყო, გამოიგონეს პროგრამირების ენები. მაგალითად, ჩვენ ვწერთ turn on და თავად შემდგენელი გარდაქმნის მას მიკროკონტროლერისთვის გასაგები ერთებისა და ნულების თანმიმდევრობაში. სურათი გვიჩვენებს HEX firmware-ს, თუ მას ხსნით ნოუთბუდის გამოყენებით.

მიკროკონტროლერები ჩვეულებრივ დაპროგრამებულია C ან ასამბლეის ენაზე. ზოგადად, არ არის განსხვავება, რაზე უნდა დავწერო. მზა მაგალითების სიმრავლის გამო, არჩევანი გავაკეთე C-ის სასარგებლოდ. გარდა ამისა, არსებობს რამდენიმე პროგრამა, რომელიც საშუალებას გაძლევთ დაწეროთ C. მაგალითად, უფასო, ბრენდირებული AVR Studio, CodeVision, WinAVR და ა.შ. მიუხედავად იმისა, რომ CodeVision-ში ვწერ, ძალიან აქტიურად ვიყენებ AVR Studio-ს, როგორც გამართვას.

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