შინაარსი დამალვა

ატმელი

Atmel 8-bit AVR მიკროკონტროლერი 2/4/8K ბაიტი სისტემური პროგრამირებადი ფლეშითჩიპი

 

მახასიათებლები

  • მაღალი ხარისხის, დაბალი სიმძლავრის AVR® 8-ბიტიანი მიკროკონტროლერი
  • მოწინავე RISC არქიტექტურა
  • 120 ძლიერი ინსტრუქცია - ერთჯერადი საათის ციკლის შესრულება
  • 32 x 8 ზოგადი დანიშნულების სამუშაო რეესტრები
  • სრულად სტატიკური ოპერაცია
  • არასტაბილური პროგრამა და მონაცემთა მეხსიერება
  • 2/4 / 8K ბაიტი სისტემაში პროგრამირებადი პროგრამის მეხსიერების ფლეშ
  • გამძლეობა: 10,000 ჩაწერის/წაშლის ციკლი
  • 128/256/512 ბაიტი სისტემაში პროგრამირებადი EEPROM
  • გამძლეობა: 100,000 ჩაწერის/წაშლის ციკლი
  • 128/256/512 ბაიტი შიდა SRAM
  • პროგრამირების დაბლოკვა თვითპროგრამირების Flash პროგრამისა და EEPROM მონაცემთა უსაფრთხოებისთვის

პერიფერიული მახასიათებლები

  • 8 ბიტიანი ტაიმერი / მრიცხველი Prescaler– ით და ორი PWM არხით
  • 8-ბიტიანი მაღალსიჩქარიანი ტაიმერი / მრიცხველი ცალკეული პრეპარატით
  • 2 მაღალი სიხშირის PWM შედეგები ცალკეულ გამომავალთან შედარებით შეადარეთ რეგისტრები
  • პროგრამირებადი მკვდარი დროის გენერატორი
  • USI - უნივერსალური სერიული ინტერფეისი დაწყებათა მდგომარეობის დეტექტორით
  • 10-ბიტიანი ADC

4 ერთად დასრულებული არხი

2 დიფერენციალური ADC არხის წყვილი პროგრამირებადი მოგებით (1x, 20x)

ტემპერატურის გაზომვა

პროგრამირებადი მაკონტროლებელი ტაიმერი ცალკეულ ჩიპური ოსილატორით

ჩიპური ანალოგური შედარება

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

გამართვა WIRE ჩიპზე გამართვის სისტემა

სისტემაში პროგრამირებადი SPI პორტის საშუალებით

გარე და შიდა წყვეტის წყაროები

დაბალი ენერგიის მოჩვენებითი, ADC ხმაურის შემცირება და ენერგიის შემცირების რეჟიმები

გაძლიერებული ჩართვის გადატვირთვის სქემა

პროგრამირებადი ყავისფერი გამოვლენის სქემა

შიდა დაკალიბრებული ოსილატორი

I / O და პაკეტები

ექვსი პროგრამირებადი I / O ხაზი

8-pin PDIP, 8-pin SOIC, 20-pad QFN / MLF და 8-pin TSSOP (მხოლოდ ATtiny45 / V)

საოპერაციო ტომიtage
- 1.8 - 5.5V ATtiny25V / 45V / 85V- სთვის
- 2.7 - 5.5V ATtiny25 / 45 / 85– ისთვის

სიჩქარის შეფასება
- ATtiny25V / 45V / 85V: 0 - 4 მეგაჰერცი @ 1.8 - 5.5V, 0 - 10 მეგაჰერცი @ 2.7 - 5.5V
- ATtiny25 / 45/85: 0 - 10 მეგაჰერცი @ 2.7 - 5.5V, 0 - 20 მეგაჰერცი @ 4.5 - 5.5V

სამრეწველო ტემპერატურის დიაპაზონი

დაბალი ენერგიის მოხმარება

აქტიური რეჟიმი:

1 მეგაჰერციანი, 1.8 ვ: 300 μA

გამორთვის რეჟიმი:

პინ კონფიგურაციები

Pinout ATtiny25 / 45/85 კონფიგურაცია

Pin აღწერილობები

VCC: Supply ტtage.
GND: მიწა.
პორტი B (PB5:PB0): პორტი B არის 6-ბიტიანი ორმხრივი I/O პორტი შიდა ასაწევი რეზისტორებით (არჩეულია თითოეული ბიტისთვის). პორტ B გამომავალი ბუფერებს აქვთ დისკის სიმეტრიული მახასიათებლები ორივე მაღალი ჩაძირვისა და წყაროს შესაძლებლობით. შეყვანის სახით, პორტის B ქინძისთავები, რომლებიც გარედან დაბალია, გამოიმუშავებს დენს, თუ აწევის რეზისტორები გააქტიურებულია. პორტის B პინები სამჯერ არის მითითებული, როდესაც გადატვირთვის მდგომარეობა გააქტიურდება, მაშინაც კი, თუ საათი არ მუშაობს.

პორტი B ასევე ემსახურება ATtiny25 / 45/85 სხვადასხვა მახასიათებლის ფუნქციებს, რომლებიც ჩამოთვლილია
ATtiny25– ზე, პროგრამირებადი I / O პორტები PB3 და PB4 (ქინძისთავები 2 და 3) იცვლება ATtiny15 თავსებადობის რეჟიმში, ATtiny15– ით უკანა თავსებადობის მხარდაჭერისთვის.

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

გადატვირთვის pin ასევე შეიძლება გამოყენებულ იქნას როგორც (სუსტი) I / O pin.

დასრულდაview

ATtiny25 / 45/85 არის დაბალი ენერგიის CMOS 8-ბიტიანი მიკროკონტროლერი, რომელიც ემყარება AVR- ის გაძლიერებულ RISC არქიტექტურას. ერთი საათის ციკლში მძლავრი ინსტრუქციების შესრულებით, ATtiny25 / 45/85 აღწევს გამტარუნარიანობას, რომელიც 1 მეგაჰერცზე მეტია, რაც საშუალებას აძლევს სისტემის დიზაინერს ენერგიის მოხმარების ოპტიმიზაცია დამუშავების სიჩქარეზე.

ბლოკის დიაგრამა ბლოკის დიაგრამა

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

ATtiny25 / 45/85 გთავაზობთ შემდეგ მახასიათებლებს: 2/4 / 8K ბაიტი სისტემაში პროგრამირებადი Flash, 128/256/512 ბაიტი EEPROM, 128/256/256 ბაიტი SRAM, 6 ზოგადი დანიშნულების I / O ხაზები, 32 ზოგადი დანიშნულების სამუშაო რეგისტრები, ერთი 8-ბიტიანი ტაიმერი / მრიცხველი შედარების რეჟიმებთან, ერთი 8-ბიტიანი მაღალსიჩქარიანი ტაიმერი / მრიცხველი, უნივერსალური სერიული ინტერფეისი, შიდა და გარე შეფერხებები, 4-არხიანი, 10-ბიტიანი ADC, პროგრამირებადი მაკონტროლებელი ტაიმერი შიდათი Oscillator და პროგრამული უზრუნველყოფის არჩევის სამი ენერგიის დაზოგვის რეჟიმი. უმოქმედო რეჟიმი აჩერებს CPU- ს, ხოლო SRAM- ს, ტაიმერის / მრიცხველის, ADC- ს, ანალოგური შედარების და სისტემის შეწყვეტის საშუალებას აძლევს მუშაობას. გამორთვის რეჟიმი ზოგავს რეგისტრის შინაარსს, გამორთავს ჩიპის ყველა ფუნქციას მომდევნო შეწყვეტის ან აპარატურის გადაყენებამდე. ADC ხმაურის შემცირების რეჟიმი აჩერებს CPU– ს და ყველა I / O მოდულს ADC– ს გარდა, ADC კონვერტაციის დროს ხმაურის გადართვის შესამცირებლად.

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

ATtiny25 / 45/85 AVR უზრუნველყოფილია პროგრამებისა და სისტემის განვითარების ინსტრუმენტების სრული პაკით, მათ შორის: C შემდგენლები, მაკროასამბლეები, პროგრამების გამართვის / ტრენაჟორების და შეფასების კომპლექტები.

რესურსების შესახებ

განვითარების ინსტრუმენტების, განაცხადის შენიშვნებისა და მონაცემთა ცხრილების სრული კომპლექტი შეგიძლიათ ჩამოტვირთოთ აქ http://www.atmel.com/avr.

კოდი ყოფილიamples

ეს დოკუმენტაცია შეიცავს მარტივ კოდს მაგampეს მოკლედ აჩვენებს, თუ როგორ გამოიყენოთ მოწყობილობის სხვადასხვა ნაწილები. ეს კოდი ყოფილიamples ვივარაუდოთ, რომ ნაწილის კონკრეტული სათაური file შედის შედგენამდე. გაითვალისწინეთ, რომ C შემდგენლის ყველა გამყიდველი არ შეიცავს მცირე განმარტებებს სათაურში files და შეწყვეტის დამუშავება C არის შემდგენელზე დამოკიდებული. გთხოვთ, დაადასტუროთ C შემდგენლის დოკუმენტაციით დამატებითი დეტალებისთვის.

I / O რეგისტრებისთვის, რომლებიც მდებარეობს გაფართოებული I / O რუკაზე, "IN", "OUT", "SBIS", "SBIC", "CBI" და "SBI" ინსტრუქციები უნდა შეიცვალოს ინსტრუქციებით, რომლებიც საშუალებას მისცემს წვდომას გაფართოებულ I- ზე / ო. როგორც წესი, ეს ნიშნავს "LDS" და "STS" შერწყმულ "SBRS", "SBRC", "SBR" და "CBR". გაითვალისწინეთ, რომ ყველა AVR მოწყობილობა არ შეიცავს გაფართოებულ I / O რუკას.

Capacitive Touch Sensing

Atmel QTouch Library გთავაზობთ მარტივ გამოსაყენებელ გადაწყვეტას შეხებით მგრძნობიარე ინტერფეისებისთვის Atmel AVR მიკროკონტროლერებზე. QTouch ბიბლიოთეკა მოიცავს QTouch® და QMatrix® შეძენის მეთოდების მხარდაჭერას.

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

QTouch ბიბლიოთეკა უფასოა და მისი ჩამოტვირთვა შესაძლებელია Atmel– დან webსაიტი. დამატებითი ინფორმაციისთვის და განხორციელების დეტალებისთვის იხილეთ QTouch ბიბლიოთეკის მომხმარებლის სახელმძღვანელო - ასევე შესაძლებელია Atmel– დან webსაიტი.

მონაცემთა შენახვა

საიმედოობის კვალიფიკაციის შედეგები აჩვენებს, რომ მონაცემთა შენახვის დაგვიანებული სიჩქარე გაცილებით ნაკლებია, ვიდრე 1 PPM 20 წლის განმავლობაში 85 ° C ან 100 წლის 25 ° C ტემპერატურაზე.

AVR CPU ბირთვი

შესავალი

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

არქიტექტურული დასრულდაview არქიტექტურა

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

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

32 რეგისტრიდან ექვსი შეიძლება გამოყენებულ იქნას როგორც სამი 16-ბიტიანი არაპირდაპირი მისამართის რეგისტრის მითითება მონაცემთა სივრცის მისამართისთვის - მისამართის ეფექტური გაანგარიშების საშუალებით. ამ მისამართების ერთ-ერთი მითითება ასევე შეიძლება გამოყენებულ იქნას როგორც მისამართის მაჩვენებელი Flash პროგრამის მეხსიერებაში მაგიდების მოსაძებნად. ამ დამატებული ფუნქციების რეგისტრებია 16 ბიტიანი X-, Y- და Z- რეგისტრი, რომლებიც აღწერილია შემდეგ ამ ნაწილში.

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

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

შეწყვეტისა და ქვერეგულარული ზარების დროს, Stack- ზე ინახება საპასუხო მისამართი Program Counter (PC). დასტა ეფექტურად არის განაწილებული ზოგადი მონაცემების SRAM– ში და, შესაბამისად, სტეკის ზომა შემოიფარგლება მხოლოდ SRAM– ის საერთო ზომით და SRAM– ის გამოყენებით. ყველა მომხმარებლის პროგრამამ უნდა მოახდინოს SP- ის ინიცირება გადატვირთვის რუტინაში (ქვე-რეჟიმების ან შეწყვეტის შესრულებამდე). Stack Pointer (SP) წაკითხვის / ჩაწერისთვის ხელმისაწვდომია I / O სივრცეში. SRAM მონაცემებზე წვდომა შესაძლებელია AVR არქიტექტურაში მხარდაჭერილი ხუთი სხვადასხვა მისამართის რეჟიმში.

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

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

I/O მეხსიერების სივრცე შეიცავს 64 მისამართს პროცესორის პერიფერიული ფუნქციებისთვის, როგორც Control Registers, SPI და სხვა I/O ფუნქციები. I/O მეხსიერებაზე წვდომა შესაძლებელია პირდაპირ, ან როგორც მონაცემთა სივრცის ადგილები რეგისტრატორის შემდეგ File, 0x20 - 0x5F.

ALU - არითმეტიკული ლოგიკური განყოფილება

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

სტატუსის რეგისტრაცია

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

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

SREG - AVR სტატუსის რეგისტრაცია

AVR სტატუსის რეგისტრატორი - SREG - განისაზღვრება, როგორც:

ცოტა 7 6 5 4 3 2 1 0
0x3F I T H S V N Z C SREG
წაიკითხეთ/დაწერეთ R/W R/W R/W R/W R/W R/W R/W R/W
საწყისი ღირებულება 0 0 0 0 0 0 0 0

ბიტი 7 - I: გლობალური შეწყვეტის ჩართვა

წყვეტების ჩართვისთვის უნდა იყოს მითითებული გლობალური შეწყვეტის ჩართვის ბიტი. ინდივიდუალური შეწყვეტის ჩართვის კონტროლი შემდეგ ხორციელდება ცალკეული კონტროლის რეგისტრებში. თუ გლობალური შეწყვეტის ჩართვის რეგისტრაცია გაიწმინდა, არცერთი შეწყვეტილი არ არის ჩართული ინდივიდუალური შეწყვეტის ჩართვის პარამეტრებისგან დამოუკიდებლად. I-bit გაწმენდილია აპარატურით შეწყვეტის შემდეგ და დაყენებულია RETI ინსტრუქციით, რათა მომდევნო წყვეტები გახდეს შესაძლებელი. I-bit- ის დაყენება და გასუფთავება ასევე შესაძლებელია პროგრამის მიერ SEI და CLI ინსტრუქციებით, როგორც ეს აღწერილია ინსტრუქციების ნაკრებში.

ბიტი 6 - T: ბიტის ასლის შენახვა

Bit Copy ინსტრუქციები BLD (Bit LoaD) და BST (Bit STore) იყენებენ T- ბიტს, როგორც წყაროს ან დანიშნულების ადგილს ოპერაციული ბიტისთვის. ცოტაოდენი რეესტრში რეგისტრიდან File შეიძლება გადაწერილი იყოს T– ში BST ინსტრუქციით, ხოლო ცოტა T– ში შეიძლება გადაწერილი იყოს ცოტა რეესტრში რეგისტრში File BLD ინსტრუქციით.

ბიტი 5 - H: ნახევარი დროშის დროშა

Half Carry Flag H მიუთითებს Half Carry ზოგიერთ არითმეტიკულ ოპერაციაში. Half Carry სასარგებლოა BCD არითმეტიკაში. დეტალური ინფორმაციისთვის იხილეთ "ინსტრუქციის ნაკრების აღწერა".

ბიტი 4 – S: ნიშნის ბიტი, S = N ⊕ V

S-bit ყოველთვის ექსკლუზიურია ან უარყოფითი დროშის N და Two's Complement Overflow Flag V- ს შორის. დეტალური ინფორმაციისთვის იხილეთ ”ინსტრუქციების ნაკრების აღწერა”.

ბიტი 3 - V: ორი კომპლემენტის გადავსების დროშა

Two's Complement Overflow Flag V მხარს უჭერს ორი კომპლემენტის არითმეტიკას. დეტალური ინფორმაციისთვის იხილეთ "ინსტრუქციის ნაკრების აღწერა".

ბიტი 2 - N: უარყოფითი დროშა

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

ბიტი 1 - Z: ნულოვანი დროშა

Zero Flag Z მიუთითებს ნულოვანი შედეგით არითმეტიკული ან ლოგიკური მოქმედება. დეტალური ინფორმაციისთვის იხილეთ "ინსტრუქციის ნაკრების აღწერა".

ბიტი 0 - C: დროშის ატანა

Carry Flag C მიუთითებს არითმეტიკულ ან ლოგიკურ მოქმედებაში გადატანაზე. დეტალური ინფორმაციისთვის იხილეთ "ინსტრუქციის ნაკრების აღწერა".

ზოგადი დანიშნულების რეესტრი File

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

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

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

ორი 8 ბიტიანი გამომავალი ოპერანდი და ერთი 16 ბიტიანი შედეგის შეყვანა

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

სურათი 4-2 აჩვენებს პროცესორში 32 ზოგადი დანიშნულების სამუშაო რეგისტრის სტრუქტურას. ზოგადი დანიშნულება

როგორც ნაჩვენებია სურათი 4-2, თითოეულ რეგისტრს ასევე ენიჭება მონაცემთა მეხსიერების მისამართი და ასახავს მათ უშუალოდ მომხმარებლის მონაცემთა სივრცის პირველ 32 ადგილას. მიუხედავად იმისა, რომ ფიზიკურად არ განხორციელებულა როგორც SRAM ადგილები, მეხსიერების ეს ორგანიზაცია უზრუნველყოფს დიდ მოქნილობას რეესტრების წვდომისათვის, რადგან X-, Y- და Z- მაჩვენებელი რეგისტრები შეიძლება იყოს მითითებული ნებისმიერი რეგისტრის ინდექსირებისთვის file.რეესტრზე მოქმედი ინსტრუქციების უმეტესობა File აქვს პირდაპირი წვდომა ყველა რეგისტრზე და მათი უმეტესობა ერთჯერადი ციკლის ინსტრუქციაა.

X- რეგისტრი, Y- რეგისტრი და Z- რეგისტრი

R26..R31 რეგისტრატორებს აქვთ დამატებული ფუნქციები მათი ზოგადი დანიშნულების გამოყენებას. ეს რეგისტრები წარმოადგენს 16 ბიტიან მისამართის მითითებას მონაცემთა სივრცის არაპირდაპირი მისამართით. სამი არაპირდაპირი მისამართის რეგისტრი X, Y და Z განისაზღვრება, როგორც ეს აღწერილია სურათი 4-3.

რეგისტრაცია

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

დასტის მაჩვენებელი

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

Stack Pointer მიუთითებს მონაცემების SRAM დასტის არეზე, სადაც მდებარეობს ქვეპროდუქტი და წყვეტილი სტეკები. ეს SRAM მონაცემთა სტეკის სივრცე უნდა განისაზღვროს პროგრამით, სანამ განხორციელდება ნებისმიერი ქვერეგინალური ზარი ან ჩართული იქნება ინტერუპები. Stack Pointer მითითებული უნდა იყოს 0x60 ზევით. დასტის მაჩვენებლის შემცირება ხდება ერთით, როდესაც მონაცემები Stack- ზე გადააქვთ PUSH ინსტრუქციით, და ის მცირდება ორით, როდესაც საპასუხო მისამართი გადაადგილდება Stack- ზე ქვეპროგრამული ზარის ან წყვეტით. Stack Pointer გაიზარდა ერთით, როდესაც Stack– დან მონაცემები გამოდის POP ინსტრუქციით, და ის იზრდება ორით, როდესაც Stack– დან მონაცემები გამოდის სტრიქონიდან RET ქვე – რუტინიდან დაბრუნებით ან RETI– ს შეწყვეტიდან დაბრუნებით.

AVR Stack Pointer ხორციელდება როგორც ორი 8-ბიტიანი რეგისტრი I / O სივრცეში. რეალურად გამოყენებული ბიტების რაოდენობა დამოკიდებულია შესრულებაზე. გაითვალისწინეთ, რომ მონაცემთა სივრცე AVR არქიტექტურის ზოგიერთ დანერგვაში იმდენად მცირეა, რომ საჭიროა მხოლოდ SPL. ამ შემთხვევაში, SPH რეგისტრი არ იმყოფება.

SPH და SPL - Stack Pointer Register

ცოტა 15 14 13 12 11 10 9 8
0x3E SP15 SP14 SP13 SP12 SP11 SP10 SP9 SP8 SPH
0x3D SP7 SP6 SP5 SP4 SP3 SP2 SP1 SP0 SPL
7 6 5 4 3 2 1 0
წაიკითხეთ/დაწერეთ R/W R/W R/W R/W R/W R/W R/W R/W
წაიკითხეთ/დაწერეთ R/W R/W R/W R/W R/W R/W R/W R/W
საწყისი ღირებულება ოპერატიული მეხსიერება ოპერატიული მეხსიერება ოპერატიული მეხსიერება ოპერატიული მეხსიერება ოპერატიული მეხსიერება ოპერატიული მეხსიერება ოპერატიული მეხსიერება ოპერატიული მეხსიერება
საწყისი ღირებულება ოპერატიული მეხსიერება ოპერატიული მეხსიერება ოპერატიული მეხსიერება ოპერატიული მეხსიერება ოპერატიული მეხსიერება ოპერატიული მეხსიერება ოპერატიული მეხსიერება ოპერატიული მეხსიერება

ინსტრუქციის შესრულების დრო

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

ნახ4.4

სურათი 4-4 აჩვენებს ჰარვარდის არქიტექტურისა და სწრაფი წვდომის რეესტრის მიერ ჩართული ინსტრუქციის პარალელურად მიღებას და ინსტრუქციის შესრულებას File შინაარსი. ეს არის მილსადენის ძირითადი კონცეფცია, რომ მიიღოთ 1 MIPS– მდე MHz– ზე, შესაბამისი უნიკალური შედეგებით, ღირებულებების, საათების და ფუნქციების სიმძლავრის ერთეულებზე.

სურათი 4-5. ერთციკლიანი ALU ოპერაცია

ნახ4.5

გადატვირთვისა და მართვის შეწყვეტა

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

პროგრამის მეხსიერების სივრცეში ყველაზე დაბალი მისამართები ნაგულისხმევად განისაზღვრება როგორც გადატვირთვისა და შეწყვეტის ვექტორები. ვექტორების სრული სია ნაჩვენებია აქ "წყვეტს" 48 გვერდზე. სია ასევე განსაზღვრავს სხვადასხვა წყვეტის პრიორიტეტულ დონეს. რაც უფრო დაბალია მისამართი მით უფრო მაღალია პრიორიტეტული დონე. RESET- ს აქვს ყველაზე მაღალი პრიორიტეტი და შემდეგია INT0 - გარე შეწყვეტის მოთხოვნა 0.

შეფერხებისას, Global Interrupt Enable I-bit იწმინდება და ყველა წყვეტა გამორთულია. მომხმარებლის პროგრამულ უზრუნველყოფას შეუძლია ჩაწეროს ლოგიკა I-bit- ში, რათა ჩართული იყოს წყვეტები. ყველა ჩართულ წყვეტს შეუძლია შეაჩეროს მიმდინარე რუტინული რეჟიმი. I-bit ავტომატურად იქმნება, როდესაც შესრულებულია Return from Interrupt ინსტრუქცია - RETI.

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

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

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

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

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

ასამბლეის კოდი ყოფილიample
r16-ში, SREG; შეინახეთ SREG მნიშვნელობა

cli ; გამორთეთ შეფერხებები დროული თანმიმდევრობის დროს

sbi EECR, EEMPE; დაიწყეთ EEPROM წერა

sbi EECR, EEPE

გარეთ SREG, r16; SREG მნიშვნელობის აღდგენა (I-bit)

C კოდი ყოფილიample
char cSREG;

cSREG = SREG; /* შეინახეთ SREG მნიშვნელობა */

/* გამორთეთ შეფერხებები დროული თანმიმდევრობის დროს */

_CLI ();

EECR |= (1<

EECR | = (1 <

SREG = cSREG; /* SREG მნიშვნელობის აღდგენა (I-bit) */

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

ასამბლეის კოდი ყოფილიample
სეი ; დააყენეთ გლობალური შეფერხების ჩართვა

ძილი; შედი ძილის, შეწყვეტის მოლოდინში

; შენიშვნა: შევა ძილის დრო, სანამ არ დადგება

; შეწყვეტა

C კოდი ყოფილიample
_SEI(); /* დააყენეთ გლობალური შეფერხების ჩართვა */

_ძილი(); /* შედი ძილის რეჟიმში, ელოდება შეფერხებას */

/ * შენიშვნა: შევა ძილი, სანამ არ გაჩერდება რაიმე შეფერხება * /

შეაჩერე რეაგირების დრო

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

შეწყვეტის მართვის რუტინიდან დაბრუნებას საათის ოთხი ციკლი სჭირდება. საათის ამ ოთხი ციკლის დროს პროგრამის მრიცხველი (ორი ბაიტი) გამოდის სტეკიდან, სტეკის მაჩვენებელი იზრდება ორით და დაყენებულია I-bit SREG– ში.

AVR მოგონებები

ამ ნაწილში აღწერილია ATtiny25 / 45/85 სხვადასხვა მოგონებები. AVR არქიტექტურას აქვს ორი ძირითადი მეხსიერების სივრცე, Data მეხსიერება და Program მეხსიერების სივრცე. გარდა ამისა, ATtiny25 / 45/85 გამოირჩევა EEPROM მეხსიერების მონაცემთა შენახვისთვის. მეხსიერების სამივე სივრცე ხაზოვანი და რეგულარულია.

სისტემაში ხელახალი პროგრამირებადი Flash პროგრამის მეხსიერება

ATtiny25 / 45/85 შეიცავს 2/4 / 8K ბაიტს ჩიპში სისტემის რეპროგრამირებადი Flash მეხსიერება პროგრამის შენახვისთვის. ვინაიდან ყველა AVR ინსტრუქციის სიგანე 16 ან 32 ბიტია, Flash ორგანიზებულია 1024/2048/4096 x 16 სახით.

Flash მეხსიერებას აქვს მინიმუმ 10,000 ჩაწერის / წაშლის ციკლის გამძლეობა. პროგრამის მრიცხველის (PC) ATtiny25 / 45/85 სიგანეა 10/11/12 ბიტი და ამით მიმართავს პროგრამის მეხსიერების 1024/2048/4096 ადგილებს. ”მეხსიერების პროგრამა- მენინგი ”147 გვერდზე შეიცავს დეტალურ აღწერას Flash მონაცემთა სერიული ჩამოტვირთვის შესახებ SPI ქინძისთავების გამოყენებით.

მუდმივი ცხრილების განაწილება შესაძლებელია პროგრამის მეხსიერების მისამართების მთელ სივრცეში (იხილეთ LPM - Load Program მეხსიერების ინსტრუქციის აღწერა).

სურათი 5-1. პროგრამის მეხსიერების რუკა მეხსიერების რუკა

SRAM მონაცემთა მეხსიერება

სურათი 5-2 გვიჩვენებს, თუ როგორ არის ორგანიზებული ATtiny25 / 45/85 SRAM მეხსიერება.

ქვედა 224/352/607 მონაცემთა მეხსიერების ადგილები მიმართავს ორივე რეგისტრს File, I/O მეხსიერება და შიდა მონაცემთა SRAM. პირველი 32 ადგილმდებარეობა მიმართავს რეგისტრს File, შემდეგი 64 ადგილი სტანდარტული I/O მეხსიერებაა და ბოლო 128/256/512 ადგილმდებარეობა მიმართავს შიდა მონაცემებს SRAM.

მონაცემთა მეხსიერების საფარის მიმართვის ხუთი განსხვავებული რეჟიმი: პირდაპირი, არაპირდაპირი გადაადგილებით, არაპირდაპირი, პირდაპირი წინასწარ შემცირებით და არაპირდაპირი შემდგომი გაზრდით. რეესტრში File, რეგისტრები R26- დან R31- მდე გამოსახულია არაპირდაპირი მისამართების მაჩვენებელი რეგისტრები.

პირდაპირი დამისამართება აღწევს მონაცემთა მთელ სივრცეს.

ირიბი გადაადგილების რეჟიმით აღწევს 63 მისამართის მდებარეობას Y- ან Z- რეესტრის მიერ მოცემული საბაზო მისამართიდან.

რეგისტრაციის ირიბი მისამართის რეჟიმების გამოყენებისას, ავტომატური წინასწარი შემცირებით და პოსტ-ნამატით, მისამართების რეგისტრატორები X, Y და Z მცირდება ან იზრდება.

32 ზოგადი დანიშნულების სამუშაო რეგისტრი, 64 I/O რეგისტრი და 128/256/512 ბაიტი შიდა მონაცემების SRAM ATtiny25/45/85 -ში ყველა ხელმისაწვდომია მისამართების ყველა ამ რეჟიმით. რეგისტრაცია File აღწერილია ”გენ- eral დანიშნულების რეგისტრაცია File”მე –10 გვერდზე.

სურათი 5-2. მონაცემთა მეხსიერების რუკა მეხსიერების რუკა 2

მონაცემთა მეხსიერებაზე წვდომა ჯერ

ეს განყოფილება აღწერს წვდომის დროის ზოგად კონცეფციებს შიდა მეხსიერებაზე წვდომისთვის. შიდა მონაცემების SRAM წვდომა ხორციელდება ორ clkCPU ციკლში, როგორც ეს აღწერილია სურათი 5-3.

სურათი 5-3. ჩიპზე მონაცემთა SRAM წვდომის ციკლები ჩიპის მონაცემებზე EEPROM მონაცემთა მეხსიერება

ATtiny25 / 45/85 შეიცავს 128/256/512 ბაიტ მონაცემს EEPROM მეხსიერებას. იგი ორგანიზებულია, როგორც ცალკეული მონაცემთა სივრცე, რომელშიც ერთი ბაიტის წაკითხვა და ჩაწერაა შესაძლებელი. EEPROM– ს აქვს გამძლეობა მინიმუმ 100,000 წერის / წაშლის ციკლისა. EEPROM- სა და CPU- ს შორის წვდომა აღწერილია შემდეგში, რომელშიც მითითებულია EEPROM მისამართების რეესტრები, EEPROM მონაცემთა რეესტრი და EEPROM კონტროლის რეესტრი. დეტალებისთვის იხილეთ "სერიული ჩამოტვირთვა" 151 გვერდზე.

EEPROM წაკითხვის / ჩაწერის წვდომა

EEPROM წვდომის რეგისტრატორები ხელმისაწვდომია I / O სივრცეში.

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

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

იმისათვის, რომ თავიდან იქნას აცილებული EEPROM უნებლიე წერა, უნდა დაიცვას დაწერის კონკრეტული პროცედურა. Ეხება ”ატომური Byte Programming ”მე –17 გვერდზე და ”Split Byte Programming” მე –17 გვერდზე ამის შესახებ დეტალებისთვის.

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

ატომური ბაიტის პროგრამირება

ატომური ბაიტის პროგრამირების გამოყენება არის ყველაზე მარტივი რეჟიმი. EEPROM– სთვის ბაიტის დაწერისას მომხმარებელმა უნდა ჩაწეროს EEAR– ის რეესტრში მისამართი, ხოლო მონაცემები EEDR– ის რეესტრში. თუ EEPMn ბიტი ნულოვანია, EEPE- ს ჩაწერა (EEMPE- ს დაწერიდან ოთხი ციკლის განმავლობაში) გამოიწვევს წაშლის / ჩაწერის ოპერაციას. წაშლის და ჩაწერის ციკლი კეთდება ერთ ოპერაციაში და მოცემულია პროგრამირების საერთო დრო ცხრილი 5-1 21-ე გვერდზე. EEPE ბიტი რჩება მითითებული, სანამ წაშლის და ჩაწერის ოპერაციები დასრულდება. მიუხედავად იმისა, რომ მოწყობილობა დაკავებულია პროგრამირებით, შეუძლებელია სხვა EEPROM ოპერაციების შესრულება.

სპლიტ – ბაიტიანი პროგრამირება

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

წაშლა

იმისათვის, რომ წაშალოთ ბაიტი, მისამართი უნდა დაიწეროს EEAR- ზე. თუ EEPMn ბიტი არის 0b01, EEPE- ს ჩაწერა (EEMPE- ს დაწერიდან ოთხი ციკლის განმავლობაში) გამოიწვევს მხოლოდ წაშლის ოპერაციას (პროგრამირების დრო მოცემულია ცხრილი 5-1 გვერდი 21) EEPE ბიტი მითითებული რჩება, სანამ წაშლის ოპერაცია დასრულდება. მიუხედავად იმისა, რომ მოწყობილობა დაკავებულია პროგრამირებით, შეუძლებელია სხვა EEPROM ოპერაციების შესრულება.

დაწერე

მდებარეობის დასაწერად, მომხმარებელმა უნდა ჩაწეროს მისამართი EEAR და მონაცემები EEDR. თუ EEPMn ბიტი არის 0b10, EEPE- ს დაწერა (EEMPE- ს დაწერიდან ოთხი ციკლის განმავლობაში) გამოიწვევს მხოლოდ ჩაწერის ოპერაციას (პროგრამირების დრო მოცემულია ცხრილი 5-1 21-ე გვერდზე) EEPE ბიტი მითითებული რჩება, სანამ ჩაწერის ოპერაცია დასრულდება. თუ დაწერილი ადგილი არ არის წაშლილი დაწერამდე, შენახული მონაცემები უნდა ჩაითვალოს დაკარგულად. მიუხედავად იმისა, რომ მოწყობილობა დაკავებულია პროგრამირებით, შეუძლებელია სხვა EEPROM ოპერაციების შესრულება.

დაკალიბრებული ოსილატორი გამოიყენება EEPROM წვდომის დროის დასადგენად. დარწმუნდით, რომ ოსილატორის სიხშირე მოცემულია მოთხოვნებში ”OSCCAL - Oscillator Calibration Register” 31 გვერდზე.

შემდეგი კოდი ყოფილიamples აჩვენებს ერთ ასამბლეას და ერთ C ფუნქციას EEPROM- ის წაშლის, წერის ან ატომური ჩაწერისთვის. ყოფილიamples ვარაუდობენ, რომ შეფერხებები კონტროლდება (მაგ., გლობალურად გამორთვით), რომ ამ ფუნქციების შესრულებისას არანაირი შეფერხება არ მოხდეს.

ასამბლეის კოდი ყოფილიample
EEPROM_ დაწერეთ:

; დაველოდოთ წინა ჩანაწერის დასრულებას

sbic EECR,EEPE

rjmp EEPROM_write

; დააყენეთ პროგრამირების რეჟიმი

ldi        r16, (0<<EEPM1)|(0<<EEPM0)

გარეთ EECR, r16

; დააყენეთ მისამართი (r18: r17) მისამართების რეესტრში

გარეთ EEARH, r18

გამოვიდა EEARL, r17

; ჩაწერეთ მონაცემები (r19) მონაცემთა რეესტრში

გარეთ EEDR, r19

; დაწერეთ ლოგიკური ერთი EEMPE- ს

sbi EECR,EEMPE

; დაიწყეთ eeprom– ის დაწერა EEPE– ს დაყენებით

sbi EECR,EEPE

რეტ

C კოდი ყოფილიample
void EEPROM_write (ხელმოუწერელი char ucAddress, ხელმოუწერელი char ucData)

{

/* დაელოდეთ წინა ჩაწერის დასრულებას */ სანამ(EECR & (1<

;

/* პროგრამირების რეჟიმის დაყენება */

EECR = (0 <

/ * მისამართების და მონაცემთა რეგისტრების დაყენება * / EEAR = ucAddress;

EEDR = ucData;

/* დაწერეთ ლოგიკური ერთი EEMPE-ზე */

EECR | = (1 <

/ * დაიწყეთ eeprom– ის დაწერა EEPE– ს პარამეტრის მითითებით * /

EECR | = (1 <

}

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

ასამბლეის კოდი ყოფილიample
EEPROM_ წაიკითხეთ:

; დაველოდოთ წინა ჩანაწერის დასრულებას

sbic EECR,EEPE

rjmp EEPROM_read

; დააყენეთ მისამართი (r18: r17) მისამართების რეესტრში

გარეთ EEARH, r18

გამოვიდა EEARL, r17

; დაიწყეთ eeprom– ის წაკითხვა EERE– ს დაწერით

sbi EECR,EERE

; წაიკითხეთ მონაცემები მონაცემთა რეესტრიდან

r16-ში, EEDR

რეტ

C კოდი ყოფილიample
ხელმოუწერელი სიმბოლო EEPROM_read(ხელმოუწერელი სიმბოლო ucAddress)

{

/ * დაელოდეთ წინა ჩაწერის დასრულებას * /

ხოლო (EECR & (1 <

;

/ * მისამართების რეესტრის დაყენება * / EEAR = ucAddress;

/* დაიწყეთ eeprom წაკითხვა EERE-ს დაწერით */

EECR | = (1 <

/ * მონაცემთა რეესტრის მონაცემების დაბრუნება * /

EEDR- ის დაბრუნება;

}

EEPROM- ის კორუფციის პრევენცია

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

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

EEPROM მონაცემთა კორუფციის თავიდან აცილება შესაძლებელია ამ რეკომენდაციის გათვალისწინებით:

შეინახეთ AVR RESET აქტიური (დაბალი) არასაკმარისი დენის წყაროს პერიოდშიtagე ეს შეიძლება გაკეთდეს შიდა Brown-out Detector (BOD) ჩართვით. თუ შიდა BOD– ის გამოვლენის დონე არ ემთხვევა

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

I / O მეხსიერება

ATtiny25 / 45 / 85– ის I / O სივრცის განმარტება ნაჩვენებია აქ ”რეგისტრაციის რეზიუმე” 200 გვერდზე.

ყველა ATtiny25 / 45/85 I / Os და პერიფერია განთავსებულია I / O სივრცეში. ყველა I / O მდებარეობაზე წვდომა შესაძლებელია LD / LDS / LDD და ST / STS / STD ინსტრუქციებით, მონაცემების გადაცემით 32 ზოგადი დანიშნულების სამუშაო რეესტრსა და I / O სივრცეს შორის. I / O რეგისტრები მისამართების დიაპაზონში 0x00 - 0x1F პირდაპირ ცოტათი ხელმისაწვდომია SBI და CBI ინსტრუქციების გამოყენებით. ამ რეგისტრებში, ერთი ბიტის მნიშვნელობა შეიძლება შემოწმდეს SBIS და SBIC ინსტრუქციების გამოყენებით. დამატებითი ინფორმაციისთვის იხილეთ ინსტრუქციების ნაკრების განყოფილება. I / O სპეციფიკური ბრძანებების IN და OUT გამოყენებისას, გამოყენებული უნდა იყოს I / O მისამართები 0x00 - 0x3F. L / S და ST ინსტრუქციების გამოყენებით I / O რეგისტრების მონაცემთა სივრცეში მისამართისას ამ მისამართებს უნდა დაემატოს 0x20.

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

სტატუსის ზოგიერთი დროშა იწმინდება მათთვის ლოგიკური ნიშნის დაწერით. გაითვალისწინეთ, რომ CBI და SBI ინსტრუქციები იმუშავებენ მხოლოდ მითითებულ ბიტზე და ამიტომ მათი გამოყენება შესაძლებელია სტატუსის დროშების შემცველ რეგისტრებზე. CBI და SBI ინსტრუქციები მუშაობს მხოლოდ 0x00– დან 0x1F რეგისტრებთან.

I / O და პერიფერიის კონტროლის რეგისტრები განმარტებულია შემდეგ ნაწილებში.

რეგისტრაციის აღწერა

EEARH - EEPROM მისამართების რეგისტრაცია

ცოტა 7 6 5 4 3 2 1 0
0x1F EEAR8 ყური
წაიკითხეთ/დაწერეთ R R R R R R R R/W
საწყისი ღირებულება 0 0 0 0 0 0 0 X/0

ბიტი 7: 1 - რეს: დაცულია ბიტი

ეს ბიტი დაცულია სამომავლო გამოყენებისათვის და ყოველთვის იკითხება როგორც ნულოვანი.

ბიტი 0 - EEAR8: EEPROM მისამართი

ეს არის ყველაზე მნიშვნელოვანი EEPROM მისამართის ბიტი ATtiny85. მოწყობილობებში, რომელთაც EEPROM ნაკლები აქვთ, ანუ ATtiny25 / ATtiny45, ეს ბიტი დაცულია და ყოველთვის ნულს წაიკითხავს. EEPROM მისამართის რეესტრის (EEAR) საწყისი მნიშვნელობა განუსაზღვრელია და შესაბამისად, EEPROM- ზე შესვლამდე უნდა დაიწეროს სათანადო მნიშვნელობა.

EEARL - EEPROM მისამართების რეგისტრაცია

ცოტა

0x1E EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0 ყურმილი
უკანა / დაწერე R/W R/W R/W R/W R/W R/W R/W R/W
საწყისი ღირებულება X X X X X X X X

ბიტი 7 - EEAR7: EEPROM მისამართი

ეს არის ყველაზე მნიშვნელოვანი EEPROM მისამართის ბიტი ATtiny45. მოწყობილობებში, რომელთაც EEPROM ნაკლები აქვთ, ანუ ATtiny25, ეს ბიტი დაცულია და ყოველთვის ნულს წაიკითხავს. EEPROM მისამართების რეესტრის საწყისი მნიშვნელობა განუსაზღვრელია და EEPROM– ზე წვდომის დაწყებამდე უნდა დაიწეროს სათანადო მნიშვნელობა.

ბიტი 6: 0 - EEAR [6: 0]: EEPROM მისამართი

ეს არის EEPROM მისამართების რეესტრის (დაბალი) ბიტი. EEPROM მონაცემთა ბაიტებს მივმართავთ წრფივად 0… (128/256 / 512-1) დიაპაზონში. EEAR– ის საწყისი მნიშვნელობა განუსაზღვრელია და შესაბამისად, EEPROM– ზე წვდომამდე უნდა დაიწეროს სათანადო მნიშვნელობა.

EEDR - EEPROM მონაცემთა რეესტრი

ცოტა 7 6 5 4 3 2 1 0
0x1D EEDR7 EEDR6 EEDR5 EEDR4 EEDR3 EEDR2 EEDR1 EEDR0 EEDR
წაიკითხეთ/დაწერეთ R/W R/W R/W R/W R/W R/W R/W R/W
საწყისი ღირებულება 0 0 0 0 0 0 0 0

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

EEPROM EEAR- ის მიერ მითითებულ მისამართზე.

 

5.5.4 EECR - EEPROM კონტროლის რეესტრი

ბიტი 7 6 5 4 3 2 1 0
0x1C        – EEPM1 EEPM0 EERIE EEMPE EEPE აქ EECR
წაიკითხეთ / დაწერეთ R R R / W R/W R/W R/W R/W R/W
საწყისი ღირებულება 0 0 X X 0 0 X 0

ბიტი 7 - რეს: დაცულია ბიტი

ეს ბიტი დაცულია სამომავლო გამოყენებისათვის და ყოველთვის წაიკითხავს 0 – ს ATtiny25 / 45/85 – ში. მომავალი AVR მოწყობილობებთან თავსებადობისთვის, ყოველთვის დაწერე ეს ბიტი ნულზე. წაკითხვის შემდეგ, წაისვით ნიღაბი.

ბიტი 6 - რეს: დაცულია ბიტი

ეს ბიტი დაცულია ATtiny25 / 45/85 და ყოველთვის იკითხება, როგორც ნული.

ბიტი 5: 4 - EEPM [1: 0]: EEPROM პროგრამირების რეჟიმის ბიტი

EEPROM პროგრამირების რეჟიმის ბიტების პარამეტრი განსაზღვრავს პროგრამირების რომელ მოქმედებას გამოიწვევს EEPE- ს ჩაწერის დროს. შესაძლებელია მონაცემების დაპროგრამება ერთ ატომურ ოპერაციაში (ძველი მნიშვნელობის წაშლა და ახალი მნიშვნელობის დაპროგრამება) ან წაშლა და ჩაწერა ოპერაციების გაყოფა ორ განსხვავებულ ოპერაციად. პროგრამირების დრო სხვადასხვა რეჟიმისთვის ნაჩვენებია ცხრილი 5-1. სანამ EEPE დაყენებულია, EEPMn– ს ნებისმიერი ჩაწერა უგულებელყოფილი იქნება. გადატვირთვისას, EEPMn ბიტი გადაადგილდება 0b00– ზე, თუ EEPROM არ არის დაკავებული პროგრამირებით.

ცხრილი 5-1. EEPROM რეჟიმის ბიტები

EEPM1 EEPM0 პროგრამირების დრო ოპერაცია
0 0 3.4 ms წაშლა და ჩაწერა ერთ ოპერაციაში (ატომური ოპერაცია)
0 1 1.8 ms მხოლოდ წაშლა
1 0 1.8 ms მხოლოდ წერა
1 1 დაცულია მომავალი გამოყენებისთვის

ბიტი 3 - EERIE: EEPROM მზა შეწყვეტის ჩართვა

EERIE– ს ერთზე დაწერა საშუალებას იძლევა EEPROM Ready– ს შეწყვეტა, თუ I-bit არის SREG– ში. EERIE– ს ნულოვანზე ჩაწერა ხელს უშლის შეწყვეტას. EEPROM Ready Interrupt წარმოქმნის მუდმივ წყვეტს, როდესაც არასტაბილური მეხსიერება მზად არის პროგრამირებისთვის.

ბიტი 2 - EEMPE: EEPROM სამაგისტრო პროგრამის ჩართვა

EEMPE ბიტი განსაზღვრავს ექნება თუ არა EEPE- ს წერა ეფექტს ერთზე.

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

ბიტი 1 - EEPE: EEPROM პროგრამის ჩართვა

EEPROM Program Enable Signal EEPE არის პროგრამირების ჩართვის სიგნალი EEPROM- სთვის. როდესაც EEPE დაიწერება, EEPROM დაპროგრამდება EEPMn ბიტების პარამეტრის შესაბამისად. EEMPE ბიტი უნდა დაიწეროს მასზე, სანამ ლოგიკური არ დაიწერება EEPE, წინააღმდეგ შემთხვევაში EEPROM დაწერა არ ხდება. როდესაც ჩაწერაზე წვდომის დრო ამოიწურება, EEPE ბიტი იწმინდება აპარატურით. EEPE დაყენების შემდეგ, პროცესორი შეჩერებულია ორი ციკლის განმავლობაში, შემდეგი ინსტრუქციის შესრულებამდე.

ბიტი 0 - EERE: EEPROM წაკითხვის ჩართვა

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

სისტემის საათი და საათის პარამეტრები

საათის სისტემები და მათი განაწილება

საათის განაწილება

პროცესორის საათი

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

I / O საათი - clkI / O

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

ფლეშ საათი - clkFLASH

Flash საათი აკონტროლებს Flash ინტერფეისის მუშაობას. Flash საათი ჩვეულებრივ აქტიურია CPU საათთან ერთად.

ADC საათი - clkADC

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

პერიფერიული საათის სწრაფი გენერაციის შიდა PLL - clkPCK

შიდა PLL ATtiny25 / 45 / 85– ში წარმოქმნის საათის სიხშირეს, რომელიც 8x გამრავლებულია წყაროდან. სტანდარტულად, PLL იყენებს წყაროს, შიდა, 8.0 მეგაჰერციანი RC ოცილატორის გამომავალს. გარდა ამისა, თუ დაყენებულია PLLCSR– ის ბიტი LSM, PLL გამოიყენებს RC– ის ოცილატორის გამოყოფას, რომელიც გაყოფილია ორზე. ამრიგად, PLL– ის გამომავალი სწრაფი პერიფერიული საათი 64 მეგაჰერციანია. პერიფერიული სწრაფი საათი, ან ამისგან გამოყოფილი დრო, შეიძლება აირჩეს ტაიმერის / მრიცხველის 1 საათის წყაროდ ან სისტემის საათად. იხილეთ სურათი 6-2. სწრაფი პერიფერიული საათის სიხშირე იყოფა ორზე, როდესაც დაყენებულია LSM PLLCSR, რის შედეგადაც საათის სიხშირე 32 MHz-ია. გაითვალისწინეთ, რომ LSM-ის დაყენება შეუძლებელია, თუ PLLCLK გამოიყენება როგორც სისტემის საათი.

სურათი 6-2. PCK საათის სისტემა. PCK დრო

PLL ჩაკეტილია RC ოცილატორზე და RC ოცილატორის რეგულირება OSCCAL რეესტრის საშუალებით ერთდროულად შეცვლის სწრაფ პერიფერულ საათს. ამასთან, მაშინაც კი, თუ RC ოცილატორი 8 მეგაჰერცზე უფრო მაღალ სიხშირეზეა გადაყვანილი, სწრაფი პერიფერიული საათის სიხშირე გაჯერებულია 85 მეგაჰერცზე (უარეს შემთხვევაში) და რჩება მაქსიმალური სიხშირის დროს. უნდა აღინიშნოს, რომ ამ შემთხვევაში PLL აღარ არის ჩაკეტილი RC- ის ოცილატორის საათთან. ამიტომ, რეკომენდებულია არ მიიღოთ OSCCAL კორექტირება 8 მეგაჰერციანზე მაღალ სიხშირეზე, რათა PLL შეინარჩუნოთ სწორი ოპერაციული დიაპაზონი.

შიდა PLL ჩართულია, როდესაც:

დაყენებულია PLLE ბიტი PLLCSR რეგისტრში.

CKSEL დაუკრავენ დაპროგრამებულია '0001' - ზე.

CKSEL დაუკრავენ დაპროგრამებულია '0011' - ზე.

PLLCSR ბიტი PLOCK დაყენებულია, როდესაც PLL ჩაკეტილია. ორივე შიდა RC ოსცილატორი და PLL გამორთულია გამორთვის და ლოდინის ძილის რეჟიმში.

შიდა PLL ATtiny15 თავსებადობის რეჟიმში

მას შემდეგ, რაც ATtiny25 / 45/85 არის მიგრირების მოწყობილობა ATtiny15 მომხმარებლებისთვის, არსებობს ATtiny15 თავსებადობის რეჟიმი უკანა პლანეტის თავსებადობისთვის. ATtiny15 თავსებადობის რეჟიმი აირჩევა CKSEL დაზღვევების '0011' პროგრამირებით.

ATtiny15 თავსებადობის რეჟიმში ხდება შიდა RC ოცილატორის სიხშირის დაკალიბრება 6.4 მეგაჰერცამდე და PLL- ის გამრავლების კოეფიციენტი 4x. იხილეთ სურათი 6-3. ამ რეგულირებით საათების სისტემა თავსებადია ATtiny15– ს და შედეგად მიღებულ სწრაფ პერიფერიულ საათს აქვს 25.6 MHz სიხშირე (იგივე რაც ATtiny15– ში).

სურათი 6-3. PCK Clocking სისტემა ATtiny15 თავსებადობის რეჟიმში. საათების სისტემა

საათის წყაროები

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

ცხრილი 6-1. აირჩიეთ მოწყობილობის საათის ოფციები

მოწყობილობის საათის ვარიანტი CKSEL[3:0](1)
გარე საათი (იხ გვერდი 26) 0000
მაღალი სიხშირის PLL საათი (იხ გვერდი 26) 0001
დაკალიბრებული შიდა ოსილატორი (იხ გვერდი 27) 0010(2)
დაკალიბრებული შიდა ოსილატორი (იხ გვერდი 27) 0011(3)
შიდა 128 kHz Oscillator (იხ გვერდი 28) 0100
დაბალი სიხშირის კრისტალური ოსილატორი (იხ გვერდი 29) 0110
კრისტალური ოსილატორი / კერამიკული რეზონერი (იხ გვერდი 29) 1000 – 1111
დაცულია 0101, 0111

ყველა დაზღვევისთვის ”1” ნიშნავს დაუპროგრამირებულს, ხოლო ”0” ნიშნავს დაპროგრამებულს.

მოწყობილობა გაიგზავნება ამ ვარიანტის არჩევით.

ეს შეარჩევს ATtiny15 თავსებადობის რეჟიმს, სადაც სისტემის საათი იყოფა ოთხზე, რის შედეგადაც მიიღება 1.6 მეგაჰერციანი საათის სიხშირე. დამატებითი ინფორმაციისთვის იხ ”დაკალიბრებული შიდა ოსილატორი” 27 გვერდზე.

საათის თითოეული ვარიანტის სხვადასხვა არჩევანი მოცემულია შემდეგ განყოფილებებში. როდესაც CPU იღვიძებს Power-down– დან, საათის არჩეული წყარო გამოიყენება დამწყების დასაწყებად, რაც უზრუნველყოფს ოსცილატორის სტაბილურ მუშაობას ინსტრუქციის შესრულების დაწყებამდე. როდესაც პროცესორი იწყება გადატვირთვისგან, ხდება დამატებითი შეფერხება, რომელიც საშუალებას აძლევს ენერგიას მიაღწიოს სტაბილურ დონეს ნორმალური მუშაობის დაწყებამდე. Watchdog Oscillator გამოიყენება ამ დროის რეალურ დროში დროის დასაწყებად. WDT Oscillator ციკლის რაოდენობა, რომელიც გამოიყენება თითოეული დროის გასვლისთვის, ნაჩვენებია აქ ცხრილი 6-2.

ცხრილი 6-2. დამკვირვებელი ოსცილატორის ციკლების რაოდენობა

ტიპი ტაიმ-აუტი ციკლების რაოდენობა
4 ms 512
64 ms 8K (8,192)

გარე საათი

მოწყობილობის საათის გარე წყაროდან გადასაადგილებლად, CLKI უნდა მართოს, როგორც ეს ნაჩვენებია სურათი 6-4. მოწყობილობის გარე საათზე გასაშვებად, CKSEL დაუკრავები უნდა იყოს დაპროგრამებული „00“ –ზე.

სურათი 6-4. გარე საათის დისკის კონფიგურაცია

ნახ6.4

საათის ამ წყაროს არჩევისას, დაწყების დრო განისაზღვრება SUT Fuses– ით, როგორც ეს ნაჩვენებია ცხრილი 6-3.

ცხრილი 6-3. გაშვების დრო გარე საათის შერჩევისთვის

SUT[1:0] დაწყების დრო Power-down- დან გადატვირთვის დამატებითი შეფერხება რეკომენდებული გამოყენება
00 6 CK 14CK ჩართულია BOD
01 6 CK 14 კკ + 4 წმ სწრაფად მზარდი ძალა
10 6 CK 14 კკ + 64 წმ ნელა იზრდება ძალა
11 დაცულია

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

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

მაღალი სიხშირის PLL საათი

არსებობს შიდა PLL, რომელიც უზრუნველყოფს ნომინალურად 64 მეგაჰერციანი საათის სიჩქარეს, რომელიც ჩაკეტილია RC Oscillator- ზე, პერიფერიული ტაიმერის / მრიცხველის 1 და სისტემის საათის წყაროს გამოყენებისათვის. როდესაც აირჩევა სისტემის საათის წყაროდ, CKSEL დაზღვევების '0001' პროგრამირებით, იგი იყოფა ოთხზე, როგორც ნაჩვენებია ცხრილი 6-4.

ცხრილი 6-4. მაღალი სიხშირის PLL საათის ოპერაციული რეჟიმები

CKSEL[3:0] ნომინალური სიხშირე
0001 16 MHz

საათის ამ წყაროს არჩევისას, დაწყების დრო განისაზღვრება SUT დაზღვევით, როგორც ნაჩვენებია ცხრილი 6-5.

ცხრილი 6-5. დაწყების დრო მაღალი სიხშირის PLL საათისთვის

SUT[1:0] დაწყების დრო Power Down– დან დამატებითი შეფერხება ჩართვის გადატვირთვისას (VCC = 5.0V) რეკომენდებული გამოყენება
00 14CK + 1K (1024) CK + 4 ms 4 ms ჩართულია BOD

ცხრილი 6-5. დაწყების დრო მაღალი სიხშირის PLL საათისთვის

SUT[1:0] დაწყების დრო Power Down– დან დამატებითი შეფერხება ჩართვის გადატვირთვისას (VCC = 5.0V) რეკომენდებული გამოყენება
01 14CK + 16K (16384) CK + 4 ms 4 ms სწრაფად მზარდი ძალა
10 14CK + 1K (1024) CK + 64 ms 4 ms ნელა იზრდება ძალა
11 14CK + 16K (16384) CK + 64 ms 4 ms ნელა იზრდება ძალა

დაკალიბრებული შიდა ოსილატორი

სტანდარტულად, შიდა RC Oscillator უზრუნველყოფს სავარაუდო 8.0 MHz საათს. თუმცა მოცtage და ტემპერატურაზე დამოკიდებული, ეს საათი შეიძლება ძალიან ზუსტად დაკალიბრებული იყოს მომხმარებლის მიერ. ნახე ”დაკალიბრებული შიდა RC ოცილატორი racy ”164 გვერდზე და ”შიდა ოსილატორის სიჩქარე” 192 გვერდზე დაწვრილებითი ინფორმაციისთვის. მოწყობილობა იგზავნება დაპროგრამებული CKDIV8 Fuse– ით. იხილეთ „სისტემის საათის პრეცედური“ 31 გვერდზე დამატებითი დეტალებისთვის.

ეს საათი შეიძლება შეირჩეს როგორც სისტემის საათი, CKSEL დაზღვევების პროგრამირებით, როგორც ეს ნაჩვენებია ცხრილი 6-6 გვერდზე

27. არჩევის შემთხვევაში ის იმუშავებს გარეშე კომპონენტებით. გადატვირთვის დროს, აპარატურა ატვირთვის წინასწარ დაპროგრამებული კალიბრაციის მნიშვნელობას OSCCAL რეგისტრში და ამით ავტომატურად ახდენს RC ოსილატორის დაკალიბრებას. ამ დაკალიბრების სიზუსტე ნაჩვენებია როგორც ქარხნული კალიბრაცია ცხრილი 21-2 164-ე გვერდზე.

OSCCAL რეგისტრის SW– დან შეცვლით, იხ ”OSCCAL - Oscillator Calibration Register” 31 გვერდზე, შესაძლებელია უფრო მაღალი დაკალიბრების სიზუსტის მიღება, ვიდრე ქარხნული კალიბრაციის გამოყენებით. ამ დაკალიბრების სიზუსტე ნაჩვენებია, როგორც მომხმარებლის დაკალიბრება ცხრილი 21-2 164-ე გვერდზე.

როდესაც ეს ოსილატორი გამოიყენება ჩიპების საათად, Watchdog Oscillator კვლავ გამოყენებული იქნება Watchdog Timer და Reset Time-out. წინასწარ დაპროგრამებული დაკალიბრების მნიშვნელობის შესახებ დამატებითი ინფორმაციისთვის იხილეთ განყოფილება ”კალი- bration Bytes ”150 გვერდზე.

ასევე შესაძლებელია შიდა ოსილატორის დაყენება, რომ უზრუნველყოს 6.4 მეგაჰერციანი საათი, CKSEL დაუკრავების „0011“ - ზე ჩაწერით, როგორც ნაჩვენებია აქ ცხრილი 6-6 ქვევით. ამ პარამეტრს უწოდებენ ATtiny15 თავსებადობის რეჟიმს და მიზნად ისახავს დაკალიბრებული საათის წყაროს 6.4 მეგაჰერციანზე, როგორც ATtiny15– ში. ATtiny15 თავსებადობის რეჟიმში PLL იყენებს შიდა ოცილატორს, რომელიც მუშაობს 6.4 მეგაჰერციანზე 25.6 მეგაჰერციანი პერიფერიული საათის სიგნალის შესაქმნელად ტაიმერი / მრიცხველი 1 (იხ. ”8 ბიტიანი ტაიმერი / მრიცხველი 1 ინ ATtiny15 Mode ”95 გვერდზე) გაითვალისწინეთ, რომ მუშაობის ამ რეჟიმში 6.4 მეგაჰერციანი საათის სიგნალი ყოველთვის იყოფა ოთხზე, რაც უზრუნველყოფს 1.6 მეგაჰერციანი სისტემის საათს.

ცხრილი 6-6. შიდა კალიბრირებული RC Oscillator ოპერაციული რეჟიმები

CKSEL[3:0] ნომინალური სიხშირე
0010(1) 8.0 MHz
0011(2) 6.4 MHz

მოწყობილობა გაიგზავნება ამ ვარიანტის არჩევით.

ეს პარამეტრი შეარჩევს ATtiny15 თავსებადობის რეჟიმს, სადაც სისტემის საათი იყოფა ოთხზე, რის შედეგადაც მიიღება 1.6 მეგაჰერციანი საათის სიხშირე.

როდესაც დაკალიბრებული 8 მეგაჰერციანი შიდა ოსილატორი აირჩევა საათის წყაროდ, დაწყების დრო განისაზღვრება SUT Fuses– ით, როგორც ნაჩვენებია ცხრილი 6-7 ქვემოთ.

ცხრილი 6-7. გაშვების დრო შიდა კალიბრირებული RC ოსცილატორის საათისთვის

SUT[1:0] დაწყების დრო Power-down- დან გადატვირთვის დამატებითი შეფერხება (VCC = 5.0V) რეკომენდებული გამოყენება
00 6 CK 14CK(1) ჩართულია BOD
01 6 CK 14 კკ + 4 წმ სწრაფად მზარდი ძალა
10(2) 6 CK 14 კკ + 64 წმ ნელა იზრდება ძალა
11 დაცულია

1. თუ RSTDISBL დაუკრავს დაპროგრამებული, ამ დაწყების დრო გაიზრდება 14CK + 4 ms– მდე, პროგრამირების რეჟიმის შემოღების უზრუნველსაყოფად.
2. მოწყობილობა გაიგზავნება ამ ვარიანტის არჩევით.

ATtiny15 თავსებადობის რეჟიმში, დაწყების დრო განისაზღვრება SUT დაზღვევით, როგორც ნაჩვენებია ცხრილი 6-8 ქვემოთ.

ცხრილი 6-8. გაშვების დრო შიდა კალიბრირებული RC ოსცილატორის საათისთვის (ATtiny15 რეჟიმში)

SUT[1:0] დაწყების დრო Power-down- დან გადატვირთვის დამატებითი შეფერხება (VCC = 5.0V) რეკომენდებული გამოყენება
00 6 CK 14 კკ + 64 წმ
01 6 CK 14 კკ + 64 წმ
10 6 CK 14 კკ + 4 წმ
11 1 CK 14CK(1)

შენიშვნა: თუ RSTDISBL ფუჭი დაპროგრამებულია, დაწყების ეს დრო გაიზრდება 14CK + 4 ms-მდე, რათა უზრუნველყოს პროგრამირების რეჟიმის შესვლა.

შეჯამება, დამატებითი ინფორმაცია ATtiny15 თავსებადობის რეჟიმის შესახებ შეგიძლიათ იხილოთ განყოფილებებში "პორტი B (PB5: PB0)" ჩართულია გვერდი 2”შიდა PLL ATtiny15 თავსებადობის რეჟიმში”, გვერდი 24ჩართულია ”8-ბიტიანი ტაიმერი / მრიცხველი ATtiny1 რეჟიმში” გვერდი 95"გამართვის შეზღუდვები WIRE" 140 გვერდზე”კალიბრაციის ბაიტები” 150 გვერდზე და ცხრილში ”საათის პრეცელერი აირჩიეთ ”33-ე გვერდზე.

შიდა 128 kHz Oscillator

128 kHz შიდა ოსცილატორი არის დაბალი სიმძლავრის ოსცილატორი, რომელიც უზრუნველყოფს 128 kHz საათს. სიხშირე ნომინალურია 3V და 25°C. ეს საათი შეიძლება აირჩეს სისტემურ საათად CKSEL Fuses-ის „0100“-ზე დაპროგრამებით.

საათის ამ წყაროს არჩევისას, დაწყების დრო განისაზღვრება SUT Fuses– ით, როგორც ეს ნაჩვენებია ცხრილი 6-9.

ცხრილი 6-9. გაშვების დრო 128 kHz შიდა ოსცილატორისთვის

SUT[1:0] დაწყების დრო Power-down- დან გადატვირთვის დამატებითი შეფერხება რეკომენდებული გამოყენება
00 6 CK 14CK(1) ჩართულია BOD
01 6 CK 14 კკ + 4 წმ სწრაფად მზარდი ძალა
10 6 CK 14 კკ + 64 წმ ნელა იზრდება ძალა
11 დაცულია

შენიშვნა: თუ RSTDISBL ფუჭი დაპროგრამებულია, დაწყების ეს დრო გაიზრდება 14CK + 4 ms-მდე, რათა უზრუნველყოს პროგრამირების რეჟიმის შესვლა.

დაბალი სიხშირის კრისტალური ოსილატორი

32.768 კჰც-იანი საათის ბროლის გამოსაყენებლად, როგორც საათის წყარო მოწყობილობაზე, დაბალი სიხშირის კრისტალური ოსილატორი უნდა შეირჩეს CKSEL დაუკრავების "0110" დაყენებით. კრისტალი უნდა იყოს დაკავშირებული, როგორც ეს ნაჩვენებია სურათი 6-5. 32.768 კჰც-იანი კრისტალის შესაფერისი დატვირთვის პოვნა, გთხოვთ, გაეცნოთ მწარმოებლის მონაცემთა ცხრილს.

ამ ოსილატორის არჩევისას, დაწყების დრო განისაზღვრება SUT– ის დაზღვევით, როგორც ნაჩვენებია ცხრილი 6-10.

ცხრილი 6-10. დაწყების დრო დაბალი სიხშირის კრისტალური ოსცილატორის საათის შერჩევისთვის

SUT[1:0] დაწყების დრო Power Down– დან გადატვირთვის დამატებითი შეფერხება (VCC = 5.0V) რეკომენდებული გამოყენება
00 1K (1024) CK(1) 4 ms ჩართულია სწრაფად მზარდი ენერგია ან BOD
01 1K (1024) CK(1) 64 ms ნელა იზრდება ძალა
10 32K (32768) CK 64 ms სტაბილური სიხშირე დაწყებისას
11 დაცულია

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

დაბალი სიხშირის კრისტალური ოსილატორი უზრუნველყოფს შიდა დატვირთვის ტევადობას, იხ ცხრილი 6-11 თითოეულ TOSC პინზე.

ცხრილი 6-11. დაბალი სიხშირის კრისტალური ოსცილატორის ტევადობა

მოწყობილობა 32 კჰც-იანი ოსკარი. ტიპი ქუდი (Xtal1 / Tosc1) ქუდი (Xtal2 / Tosc2)
ATtiny25 / 45/85 სისტემის ოსკ. 16 pF 6 pF

კრისტალური ოსილატორი / კერამიკული რეზონერი

XTAL1 და XTAL2 არის შემავალი, შესაბამისად, ინვერსიული ampუფრო ცოცხალი, რომელიც შეიძლება კონფიგურირებული იყოს როგორც ჩიპური ოსცილატორი, როგორც ეს ნაჩვენებია სურათი 6-5. ან კვარცის ბროლის ან კერამიკული რეზონატორის გამოყენება შეიძლება.

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

ცხრილი 6-12. კრისტალური ოსცილატორის მუშაობის რეჟიმები

CKSEL[3:1] სიხშირის დიაპაზონი (MHz) რეკომენდებული დიაპაზონი C1 და C2 კონდენსატორებისთვის კრისტალებისთვის გამოსაყენებლად (pF)
100(1) 0.4 – 0.9
101 0.9 – 3.0 12 – 22
110 3.0 – 8.0 12 – 22
111 8.0 - 12 – 22

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

Oscillator- ს შეუძლია იმუშაოს სამ განსხვავებულ რეჟიმში, თითოეული ოპტიმიზირებულია კონკრეტული სიხშირის დიაპაზონისთვის. საოპერაციო რეჟიმს ირჩევენ CKSEL [3: 1] დაზღვევები, როგორც ეს ნაჩვენებია ცხრილი 6-12.

CKSEL0 დაუკრავენ ერთად SUT [1: 0] დაუკრავს აირჩიეთ საწყისი დრო, როგორც ნაჩვენებია ცხრილი 6-13.

ცხრილი 6-13. დაწყების დრო კრისტალური ოსცილატორის საათის შერჩევისთვის

CKSEL0 SUT[1:0] დაწყების დრო Power-down- დან გადატვირთვის დამატებითი შეფერხება რეკომენდებული გამოყენება
0 00 258 CK(1) 14 კკ + 4 წმ კერამიკული რეზონატორი, სწრაფად მზარდი ენერგია
0 01 258 CK(1) 14 კკ + 64 წმ კერამიკული რეზონატორი, ნელა იზრდება ენერგია
0 10 1K (1024) CK(2) 14CK კერამიკული რეზონატორი, BOD ჩართულია
0 11 1K (1024) CK(2) 14 კკ + 4 წმ კერამიკული რეზონატორი, სწრაფად მზარდი ენერგია
1 00 1K (1024) CK(2) 14 კკ + 64 წმ კერამიკული რეზონატორი, ნელა იზრდება ენერგია
1 01 16K (16384) CK 14CK კრისტალური ოსილატორი, BOD ჩართულია
1 10 16K (16384) CK 14 კკ + 4 წმ კრისტალური ოსილატორი, სწრაფად მზარდი ძალა
1 11 16K (16384) CK 14 კკ + 64 წმ კრისტალური ოსილატორი, ნელა იზრდება ძალა

შენიშვნები

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

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

საათის ნაგულისხმევი წყარო

მოწყობილობა იგზავნება CKSEL = "0010", SUT = "10" და დაპროგრამებული CKDIV8. საათის წყაროს ნაგულისხმევი პარამეტრი არის შიდა RC ოსცილატორი, რომელიც მუშაობს 8 მჰც სიხშირით, ყველაზე გრძელი დაწყების დროით და სისტემის საწყისი საათის წინასწარი გამოთვლა 8, რის შედეგადაც 1.0 მჰც სისტემის სისტემა. ეს ნაგულისხმევი პარამეტრი უზრუნველყოფს, რომ ყველა მომხმარებელს შეეძლოს სასურველი საათის წყაროს პარამეტრის გამოყენება სისტემის ან მაღალი მოცულობის გამოყენებითtage პროგრამისტი.

სისტემის საათის პრეცელერი

ATtiny25 / 45/85 სისტემის საათის დაყოფა შესაძლებელია პარამეტრის დაყენებით ”CLKPR - საათების პრესა.რეგისტრი” 32 გვერდზე. ეს ფუნქცია შეიძლება გამოყენებულ იქნას ენერგიის მოხმარების შესამცირებლად, როდესაც დამუშავების სიმძლავრეზე მოთხოვნა დაბალია. ეს შეიძლება გამოყენებულ იქნას საათის წყაროს ყველა ვარიანტთან და ეს გავლენას მოახდენს CPU-ის და ყველა სინქრონული პერიფერიული მოწყობილობის საათის სიხშირეზე. clkI/O, clkADC, clkCPU და clkFLASH იყოფა ფაქტორზე, როგორც ნაჩვენებია ცხრილი 6-15 33-ე გვერდზე.

გადართვის დრო

Prescaler– ის პარამეტრებს შორის გადართვისას, System Clock Prescaler უზრუნველყოფს, რომ საათის სისტემაში არანაირი შეცდომები არ მოხდეს და არც ერთი შუალედური სიხშირე არ იყოს უფრო მაღალი ვიდრე არც წინა პარამეტრის შესაბამისი საათის სიხშირე, არც ახალი პარამეტრის შესაბამისი საათის სიხშირე.

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

CLKPS მნიშვნელობების დაწერის დროიდან, ის სჭირდება T1 + T2 და T1 + 2 * T2, სანამ საათის ახალი სიხშირე გააქტიურდება. ამ ინტერვალში იწარმოება საათის 2 აქტიური კიდე. აქ T1 არის საათის წინა პერიოდი და T2 არის პერიოდი, რომელიც შეესაბამება ახალი prescaler პარამეტრს.

საათის გამომუშავების ბუფერი

მოწყობილობას შეუძლია სისტემის საათის გამოტანა CLKO პინზე (როდესაც არ გამოიყენება XTAL2 პინზე). გამოყვანის ჩასართავად, CKOUT დაუკრავი უნდა იყოს დაპროგრამებული. ეს რეჟიმი შესაფერისია მაშინ, როდესაც ჩიპის საათი გამოიყენება სისტემაში სხვა სქემების გასაქანად. გაითვალისწინეთ, რომ გადატვირთვის დროს საათი არ გამოვა და დაზღვევის დაპროგრამებისას გადატვირთულია I / O პინის ნორმალური მოქმედება. შიდა RC Oscillator, WDT Oscillator, PLL და გარე საათი (CLKI) შეიძლება შეირჩეს, როდესაც საათი გამოვა CLKO- ზე. ბროლის ოსცილატორები (XTAL1, XTAL2) არ შეიძლება გამოყენებულ იქნას CLKO– ზე საათის გამოსასვლელად. თუ System Clock Prescaler გამოიყენება, გამოდის გაყოფილი სისტემის საათი.

რეგისტრაციის აღწერა

OSCCAL - Oscillator Calibration Registry

ცოტა 7 6 5 4 3 2 1 0
0x31 CAL7 CAL6 CAL5 CAL4 CAL3 CAL2 CAL1 CAL0 OSCCAL
წაიკითხეთ/დაწერეთ R/W R/W R/W R/W R/W R/W R/W R/W

ბიტი 7: 0 - CAL [7: 0]: ოსილატორის კალიბრაციის მნიშვნელობა

Oscillator Calibration Register გამოიყენება Calibrated Internal RC Oscillator trim for oscillator სიხშირედან პროცესის ვარიაციების მოსაშორებლად. წინასწარ დაპროგრამებული დაკალიბრების მნიშვნელობა ავტომატურად იწერება ამ რეესტრში ჩიპების გადატვირთვის დროს, რაც აძლევს ქარხნის დაკალიბრებულ სიხშირეს, როგორც ეს მითითებულია ცხრილი 21-2 164-ე გვერდზე. პროგრამულ უზრუნველყოფას შეუძლია ამ რეესტრის დაწერა ოსილატორის სიხშირის შესაცვლელად. ოსილატორის დაკალიბრება შესაძლებელია სიხშირეებზე, როგორც ეს მითითებულია აქ ცხრილი 21-2 164-ე გვერდზე. დაკალიბრება ამ დიაპაზონში არ არის გარანტირებული.

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

CAL7 ბიტი განსაზღვრავს ოცილატორის ოპერაციის დიაპაზონს. ამ ბიტის 0-ზე დაყენება იძლევა ყველაზე დაბალი სიხშირის დიაპაზონს, ამ ბიტის 1-ზე დაყენება ყველაზე მაღალ სიხშირის დიაპაზონს. ორი სიხშირის დიაპაზონი ემთხვევა ერთმანეთს, სხვა სიტყვებით რომ ვთქვათ, OSCCAL = 0x7F პარამეტრი უფრო მაღალ სიხშირეს იძლევა ვიდრე OSCCAL = 0x80.

CAL [6: 0] ბიტი გამოიყენება შერჩეული დიაპაზონის სიხშირის შესასრულებლად. 0x00 პარამეტრი იძლევა ყველაზე დაბალ სიხშირეს ამ დიაპაზონში, ხოლო 0x7F პარამეტრი იძლევა ყველაზე მაღალ სიხშირეს დიაპაზონში.

MCU– ს სტაბილური მუშაობის უზრუნველსაყოფად, დაკალიბრების მნიშვნელობა მცირედით უნდა შეიცვალოს. ერთი ციკლიდან მეორეში სიხშირის 2% -ზე მეტი ცვლილებამ შეიძლება გამოიწვიოს არაპროგნოზირებადი ქცევა. OSCCAL– ის ცვლილებები არ უნდა აღემატებოდეს 0x20 – ს თითოეული კალიბრაციისთვის. საჭიროა იმის უზრუნველყოფა, რომ MCU ინახება გადატვირთვისას საათის სიხშირის ამგვარი ცვლილებების დროს

ცხრილი 6-14. შიდა RC ოსცილატორის სიხშირის დიაპაზონი

OSCCAL მნიშვნელობა ტიპიური ყველაზე დაბალი სიხშირე ნომინალურ სიხშირესთან მიმართებაში ტიპიური უმაღლესი სიხშირე ნომინალურ სიხშირესთან მიმართებაში
0x00 50% 100%
0x3F 75% 150%
0x7F 100% 200%

CLKPR - საათების პრესა.რეგისტრი

ცოტა 7 6 5 4 3 2 1 0
0x26 CLKPCE CLKPS3 CLKPS2 CLKPS1 CLKPS0 CLKPR
წაიკითხეთ/დაწერეთ R/W R R R R/W R/W R/W R/W

საწყისი მნიშვნელობა 0 0 0 0 იხილეთ ბიტის აღწერა

ბიტი 7 - CLKPCE: საათის პრეკალერის შეცვლა ჩართულია

CLKPCE ბიტი უნდა დაიწეროს ლოგიკაში, რათა შესაძლებელი გახდეს CLKPS ბიტების შეცვლა. CLKPCE ბიტი განახლდება მხოლოდ მაშინ, როდესაც CLKPR- ის სხვა ბიტები სიმულაციურად იწერება ნულზე. CLKPCE იწმინდება აპარატურიდან ოთხი ციკლის დაწერიდან ან CLKPS ბიტების დაწერიდან. CLKPCE ბიტის გადაწერა ამ დროის ამოწურვის პერიოდში არც აგრძელებს დროის გასვლის პერიოდს და არც CLKPCE ბიტის გასუფთავებას.

ბიტი 6: 4 - რეს: დაცულია ბიტი

ეს ბიტი დაცულია ბიტიში ATtiny25 / 45/85 და ყოველთვის წაიკითხება როგორც ნული.

ბიტი 3: 0 - CLKPS [3: 0]: Clock Prescaler აირჩიეთ ბიტი 3 - 0

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

საათის სიხშირის უნებლიე ცვლილებების თავიდან ასაცილებლად, საჭიროა დაინიშნოს ჩაწერის სპეციალური პროცედურა CLKPS ბიტების შესაცვლელად:

დაწერეთ Clock Prescaler Change Enable (CLKPCE) ბიტი ერთზე და ყველა სხვა ბიტი CLKPR– ზე ნულზე.

ოთხი ციკლის განმავლობაში დაწერეთ სასურველი მნიშვნელობა CLKPS– ს, ხოლო ნული CLKPCE– ზე.

წყვეტები უნდა გამორთოთ prescaler- ის პარამეტრის შეცვლისას, რომ დარწმუნდეთ, რომ ჩაწერის პროცედურა არ შეწყვეტილა.

CKDIV8 Fuse განსაზღვრავს CLKPS ბიტების საწყის მნიშვნელობას. თუ CKDIV8 არ არის დაპროგრამებული, CLKPS ბიტი აღდგება „0000“-ზე. თუ CKDIV8 დაპროგრამებულია, CLKPS ბიტები გადატვირთულია „0011“-ზე, რაც გაყოფის კოეფიციენტს იძლევა რვაზე გაშვებისას. ეს ფუნქცია უნდა იყოს გამოყენებული, თუ არჩეულ საათის წყაროს აქვს უფრო მაღალი სიხშირე, ვიდრე მოწყობილობის მაქსიმალური სიხშირე ამჟამინდელ სამუშაო პირობებში. გაითვალისწინეთ, რომ ნებისმიერი მნიშვნელობა შეიძლება ჩაიწეროს CLKPS ბიტებზე CKDIV8 Fuse პარამეტრის მიუხედავად. აპლიკაციის პროგრამამ უნდა უზრუნველყოს საკმარისი გაყოფის ფაქტორი

არჩეულია, თუ საათის არჩეულ წყაროს აქვს უფრო მაღალი სიხშირე, ვიდრე მოწყობილობის მაქსიმალური სიხშირე ამჟამინდელ სამუშაო პირობებში. მოწყობილობა იგზავნება დაპროგრამებული CKDIV8 Fuse– ით.

ცხრილი 6-15. საათის წინამორბედი არჩევა

CLKPS3 CLKPS2 CLKPS1 CLKPS0 საათის განყოფილების ფაქტორი
0 0 0 0 1
0 0 0 1 2
0 0 1 0 4
0 0 1 1 8
0 1 0 0 16
0 1 0 1 32
0 1 1 0 64
0 1 1 1 128
1 0 0 0 256
1 0 0 1 დაცულია
1 0 1 0 დაცულია
1 0 1 1 დაცულია
1 1 0 0 დაცულია
1 1 0 1 დაცულია
1 1 1 0 დაცულია
1 1 1 1 დაცულია

შენიშვნა: პრესკალერი გამორთულია ATtiny15 თავსებადობის რეჟიმში და არც CLKPR-ზე ჩაწერა და არც CKDIV8 ფუჟერის დაპროგრამება არ მოქმედებს სისტემის საათზე (რომელიც ყოველთვის იქნება 1.6 MHz).

ენერგიის მართვა და ძილის რეჟიმები

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

ძილის რეჟიმები

სურათი 6-1 23 გვერდზე წარმოგიდგენთ საათის სხვადასხვა სისტემას და მათ განაწილებას ATtiny25 / 45/85-ში. მაჩვენებელი გამოსადეგია ძილის შესაბამისი რეჟიმის არჩევისას. ცხრილი 7-1 გვიჩვენებს ძილის სხვადასხვა რეჟიმებს და მათი გაღვიძების წყაროებს.

ცხრილი 7-1. აქტიური საათის დომენები და გაღვიძების წყაროები ძილის სხვადასხვა რეჟიმებში

აქტიური საათის დომენები ოსცილატორები გაღვიძების წყაროები
ძილის რეჟიმი clkCPU clkFLASH clkIO clkADC clkPCK ძირითადი საათის წყარო ჩართულია INT0 და Pin Change SPM / EEPROM

მზადაა

 

USI დაწყება მდგომარეობა

ADC სხვა I/O მცველი შეწყვეტა
უსაქმური X X X X X X X X X X
ADC ხმაურის შემცირება X X X(1) X X X X
ენერგიის დაწევა X(1) X X

შენიშვნა: INT0-სთვის, მხოლოდ დონის შეფერხება.

ძილის სამი რეჟიმიდან რომელიმეში შესასვლელად, MCUCR– ში SE bit უნდა დაიწეროს ლოგიკურად ერთზე და უნდა შესრულდეს SLEEP ინსტრუქცია. MCUCR– ის რეგისტრაციაში SM [1: 0] ბიტი შეარჩია SLEEP ინსტრუქციით რომელი ძილის რეჟიმი (უმოქმედო, ADC ხმაურის შემცირება ან გამორთვა) გააქტიურდება. იხილეთ ცხრილი 7-2 შეჯამებისთვის.

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

შენიშვნა: თუ დონის გამომწვევი შეფერხება გამოიყენება გამოფხიზლებისთვის, შეცვლილი დონე უნდა შენარჩუნდეს გარკვეული დროით MCU-ის გამოსაფხიზლებლად (და MCU-მ რომ შევიდეს შეფერხების სერვისის რუტინაში). იხ ”გარე წყვეტები” 49-ე გვერდზე დეტალებისთვის.

უმოქმედო რეჟიმი

როდესაც SM[1:0] ბიტი იწერება 00-ზე, SLEEP ინსტრუქცია აიძულებს MCU-ს გადავიდეს უმოქმედო რეჟიმში, აჩერებს პროცესორს, მაგრამ აძლევს საშუალებას ანალოგური შედარებითი, ADC, USI, ტაიმერი/მრიცხველი, Watchdog და შეფერხების სისტემა გააგრძელოს მუშაობა. ჭამა. ძილის ეს რეჟიმი ძირითადად აჩერებს clkCPU-ს და clkFLASH-ს, ხოლო სხვა საათებს საშუალებას აძლევს იმუშაონ.

უმოქმედო რეჟიმი საშუალებას აძლევს MCU- ს გაიღვიძოს როგორც გარედან გამოწვეული შეფერხებებისგან, ასევე შიდაგან, როგორიცაა ტაიმერის გადავსება. თუ ანალოგური შედარების შეწყვეტა არ არის საჭირო, ანალოგური შედარების ჩართვა შესაძლებელია ACD ბიტის დაყენებით ”ACSR - ანალოგური შედარების კონტროლი და სტატუსის რეგისტრაცია” 120 გვერდზე. ეს შეამცირებს ენერგიის მოხმარებას უმოქმედო რეჟიმში. თუ ADC ჩართულია, ამ რეჟიმში შესვლისას გარდაქმნა ავტომატურად იწყება.

ADC ხმაურის შემცირების რეჟიმი

როდესაც SM[1:0] ბიტები იწერება 01-ზე, SLEEP ინსტრუქცია აიძულებს MCU-ს გადავიდეს ADC ხმაურის შემცირების რეჟიმში, აჩერებს პროცესორს, მაგრამ აძლევს ADC-ს, გარე შეფერხებებს და Watchdog-ს ფუნქციონირების გაგრძელების საშუალებას (თუ ჩართულია). ძილის ეს რეჟიმი აჩერებს clkI/O-ს, clkCPU-ს და clkFLASH-ს, ხოლო სხვა საათებს საშუალებას აძლევს იმუშაონ.

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

გამორთვის რეჟიმი

როდესაც SM [1: 0] ბიტი იწერება 10-ზე, SLEEP ინსტრუქცია MCU შედის Power-down რეჟიმში. ამ რეჟიმში, Oscillator შეჩერებულია, ხოლო გარე წყვეტები, USI იწყებს მდგომარეობის გამოვლენას და Watchdog განაგრძობს მუშაობას (თუ ჩართულია). MCU– ს გაღვიძება შეუძლია მხოლოდ გარე გადაყენებას, მაკონტროლებლის გადაყენებას, ყავისფერი გადატვირთვისას, USI– ის მდგომარეობის შეწყვეტას, გარე დონის შეწყვეტას INT0– ზე ან ქინძისთავის შეცვლის შეფერხებით. ძილის ეს რეჟიმი აჩერებს ყველა გამომუშავებულ საათს, რაც საშუალებას იძლევა მხოლოდ ასინქრონული მოდულების მუშაობას.

პროგრამული უზრუნველყოფა BOD გამორთე

როდესაც Brown-out Detector (BOD) ჩართულია BODLEVEL– ის დაზღვევების საშუალებით (იხ ცხრილი 20-4 148-ე გვერდზე), BOD აქტიურად აკვირდება მიწოდების მოცულობასtage ძილის პერიოდში. ზოგიერთ მოწყობილობაში შესაძლებელია ენერგიის დაზოგვა პროგრამული უზრუნველყოფის BOD- ის გამორთვით Power-Down ძილის რეჟიმში. ძილის რეჟიმში ენერგიის მოხმარება იქნება იმავე დონეზე, როგორც მაშინ, როდესაც BOD გლობალურად გამორთულია დაუკრავენ.

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

როდესაც BOD გამორთულია, ძილის რეჟიმიდან გამოღვიძების დრო იგივე იქნება, რაც RESET- დან გაღვიძების დროს. მომხმარებელმა ხელით უნდა დააკონფიგურიროს გაღვიძების დრო ისე, რომ bandgap მითითებას ჰქონდეს დრო, რომ დაიწყოს და BOD სწორად მუშაობს, სანამ MCU გააგრძელებს კოდის შესრულებას. იხილეთ SUT [1: 0] და CKSEL [3: 0] დაზღვევის ბიტი ცხრილში ”Fuse Low Byte” 149 გვერდზე

BOD გამორთვას აკონტროლებს MCU კონტროლის რეესტრის BODS (BOD Sleep) ბიტი, იხილეთ ”MCUCR - MCU კონტროლი რეგისტრაცია ”37 გვერდზე. ამ ბიტის ერთზე დაწერა გამორთულია BOD Power-Down– ში, ხოლო ნულის დაწერა ინარჩუნებს BOD– ს აქტიურს. ნაგულისხმევი პარამეტრი არის ნული, ანუ BOD აქტიური.

BODS ბიტზე ჩაწერა კონტროლდება დროული თანმიმდევრობით და ჩართვის ბიტით, იხილეთ ”MCUCR - MCU კონტროლის რეგისტრაცია ter ”37 გვერდზე.

შეზღუდვები

BOD– ის გამორთვის ფუნქციონირება განხორციელდა მხოლოდ შემდეგ მოწყობილობებში:

ATtiny25, გადასინჯვა E და უფრო ახალი

ATtiny45, გადასინჯვა D და უფრო ახალი

ATtiny85, გადასინჯვა C და უფრო ახალი

შესწორებები მითითებულია მოწყობილობის პაკეტზე და შეიძლება განთავსდეს შემდეგნაირად:

8P3 და 8S2 პაკეტების ქვედა მხარე

პაკეტის ზედა მხარე 20M1

ელექტროენერგიის შემცირების რეესტრი

ელექტროენერგიის შემცირების რეესტრი (PRR), იხ “PRR - ელექტროენერგიის შემცირების რეესტრი” 38-ე გვერდზე, უზრუნველყოფს ელექტროენერგიის მოხმარების შემცირების მეთოდს საათის შეჩერებით ცალკეულ პერიფერულ მოწყობილობებზე. პერიფერიის ამჟამინდელი მდგომარეობა გაყინულია და I / O რეგისტრების წაკითხვა ან ჩაწერა შეუძლებელია. პერიფერიული მოწყობილობის მიერ საათის გაჩერებისას გამოყენებული რესურსები დარჩება დაკავებული, ამიტომ პერიფერიული უნდა იყოს უმეტეს შემთხვევაში გამორთული საათის გაჩერებამდე. მოდულის გაღვიძება, რაც ხდება PRR– ში ბიტის გასუფთავებით, მოდულს აყენებს იმავე მდგომარეობაში, როგორც გამორთვამდე.

მოდულის გამორთვა შეიძლება გამოყენებულ იქნას უმოქმედო რეჟიმში და აქტიურ რეჟიმში, ენერგიის საერთო მოხმარების მნიშვნელოვნად შესამცირებლად. ძილის ყველა სხვა რეჟიმში საათი უკვე შეჩერებულია. იხილეთ ”I / O მოდულების მომარაგების მიმდინარეობა” გვერდზე 177 მაგისთვისamples.

ენერგიის მოხმარების მინიმიზაცია

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

ანალოგური ციფრული გადამყვანი

ჩართვის შემთხვევაში, ADC ჩართული იქნება ძილის ყველა რეჟიმში. ენერგიის დაზოგვის მიზნით, ADC უნდა გამორთოთ ძილის ნებისმიერ რეჟიმში შესვლამდე. როდესაც ADC გამორთული და ისევ ჩართული იქნება, შემდეგი გარდაქმნა გახდება გაფართოებული გარდაქმნა. Ეხება “ანალოგური ციფრული გადამყვანი” 122 გვერდზე ADC ოპერაციის შესახებ დეტალებისთვის.

ანალოგური შედარება

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

ყავისფერი ამომცნობი

თუ Brown-out დეტექტორი არ არის საჭირო პროგრამაში, ეს მოდული უნდა გამორთოთ. თუ Brown-out დეტექტორი ჩართულია BODLEVEL Fuses- ის საშუალებით, ის ჩართული იქნება ძილის ყველა რეჟიმში და, შესაბამისად, ყოველთვის ენერგიას მოიხმარს. ღრმა ძილის რეჟიმში, ეს მნიშვნელოვნად შეუწყობს ხელს მთლიანი მიმდინარე მოხმარებას. იხილეთ ”Brown-out Detec- tion ”41-ე გვერდზე და "პროგრამული უზრუნველყოფის BOD გამორთვა" 35-ე გვერდზე დეტალებისთვის, თუ როგორ უნდა დააკონფიგურიროთ Brown-out Detector.

შიდა ტომიtage მითითება

შიდა ტომიtage მითითება ჩართული იქნება საჭიროების შემთხვევაში Brown-out Detection, Analog Comparator ან ADC. თუ ეს მოდულები გამორთულია, როგორც ეს აღწერილია ზემოთ მოცემულ ნაწილებში, შიდა მოცულობაtagელექტრონული მითითება გამორთული იქნება და არ მოიხმარს ენერგიას. ხელახლა ჩართვისას, მომხმარებელმა უნდა დაუშვას მითითება დაიწყოს გამომავალი გამოყენებამდე. თუ მითითება შენარჩუნებულია ძილის რეჟიმში, გამომავალი შეიძლება გამოყენებულ იქნას დაუყოვნებლივ. Ეხება „შიდა ტომიtage მითითება ”42 გვერდზე დაწყების დროის შესახებ დეტალებისთვის.

მცველი ტაიმერი

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

პორტის ქინძისთავები

ძილის რეჟიმში შესვლისას, ყველა პორტის პინი უნდა იყოს კონფიგურირებული ისე, რომ გამოიყენოს მინიმალური სიმძლავრე. ყველაზე მნიშვნელოვანი ის არის, რომ დარწმუნდეთ, რომ ქინძისთავები არ ატარებენ რეზისტენტულ დატვირთვას. ძილის რეჟიმებში, სადაც I/O საათი (clkI/O) და ADC საათი (clkADC) შეჩერებულია, მოწყობილობის შეყვანის ბუფერები გამორთული იქნება. ეს უზრუნველყოფს ენერგიის მოხმარებას

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

შემდეგ ის ჩართული იქნება. იხილეთ განყოფილება ”ციფრული შეყვანის ჩართვა და ძილის რეჟიმები” გვერდზე 57 დეტალებისთვის, თუ რა ქინძისთავები არის ჩართული. თუ შეყვანის ბუფერი ჩართულია და შეყვანის სიგნალი რჩება მცურავი ან აქვს ანალოგური სიგნალის დონე VCC/2-თან ახლოს, შეყვანის ბუფერი გამოიყენებს ზედმეტ ენერგიას.

ანალოგური შეყვანის ქინძისთავებისთვის ციფრული შეყვანის ბუფერი ყოველთვის უნდა იყოს გამორთული. ანალოგური სიგნალის დონე VCC/2-თან ახლოს შეყვანის პინზე შეიძლება გამოიწვიოს მნიშვნელოვანი დენი აქტიურ რეჟიმშიც კი. ციფრული შეყვანის ბუფერების გამორთვა შესაძლებელია ციფრული შეყვანის გამორთვის რეესტრში (DIDR0) ჩაწერით. Ეხება ”DIDR0 - ციფრული შეყვანის გამორთვა რეგისტრაციის 0” 121 გვერდზე დეტალებისთვის.

რეგისტრაციის აღწერა

MCUCR - MCU კონტროლის რეესტრი

MCU კონტროლის რეესტრი შეიცავს მართვის ბიტებს ენერგიის მართვისთვის.

ცოტა 7 6 5 4 3 2 1 0
0x35 BODS PUD SE SM1 SM0 ბოდსე ISC01 ISC00 MCUCR
წაიკითხეთ/დაწერეთ R R/W R/W R/W R/W R R/W R/W
საწყისი ღირებულება 0 0 0 0 0 0 0 0

ბიტი 7 - დაფები: BOD ძილი

BOD– ის გამორთვის ფუნქციონალი მხოლოდ ზოგიერთ მოწყობილობაში არის ხელმისაწვდომი. იხილეთ „შეზღუდვები“ 36 გვერდზე.

ძილის დროს BOD გამორთვის მიზნით (იხ ცხრილი 7-1 34-ე გვერდზე) დაფების ბიტი უნდა იყოს დაწერილი ლოგიკურად. ამას აკონტროლებს დროული თანმიმდევრობა და ჩართვის ბიტი, BODSE MCUCR– ში. პირველ რიგში, ორივე დაფა და დაფები უნდა იყოს მითითებული ერთზე. მეორე, საათის ოთხი ციკლის განმავლობაში, BODS უნდა დაყენდეს ერთზე და BODSE უნდა იყოს დაყენებული ნულზე. დაყენების შემდეგ, BODS ბიტი აქტიურია საათის სამი ციკლი. ძილის ინსტრუქცია უნდა შესრულდეს, სანამ BODS აქტიურია, BOD– ს გამორთვისთვის ძილის რეალური რეჟიმისთვის. BODS ბიტი ავტომატურად იწმინდება საათის სამი ციკლის შემდეგ.

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

ბიტი 5 - SE: ძილის ჩართვა

SE ბიტი უნდა ჩაიწეროს ლოგიკურ ერთზე, რათა MCU შევიდეს ძილის რეჟიმში, როდესაც SLEEP ინსტრუქცია შესრულდება. MCU-ის ძილის რეჟიმში შესვლის თავიდან ასაცილებლად, თუ ეს არ არის პროგრამისტის დანიშნულება, რეკომენდებულია Sleep Enable (SE) ბიტი ჩაწეროთ SLEEP ინსტრუქციის შესრულებამდე და გაასუფთავოთ იგი გაღვიძებისთანავე.

ბიტი 4: 3 - SM [1: 0]: ძილის რეჟიმი აირჩიეთ ბიტი 1 და 0

ეს ბიტები ირჩევენ ძილის სამ რეჟიმს შორის, როგორც ეს ნაჩვენებია ცხრილი 7-2.

ცხრილი 7-2. ძილის რეჟიმის არჩევა

SM1 SM0 ძილის რეჟიმი
0 0 უსაქმური
0 1 ADC ხმაურის შემცირება
1 0 ენერგიის დაწევა
1 1 დაცულია

ბიტი 2 - BODSE: BOD ძილის ჩართვა

BOD– ის გამორთვის ფუნქციონალი მხოლოდ ზოგიერთ მოწყობილობაში არის ხელმისაწვდომი. იხილეთ „შეზღუდვები“ 36 გვერდზე.

BODSE ბიტი საშუალებას იძლევა დააყენოთ BODS საკონტროლო ბიტი, როგორც ეს აიხსნება BODS ბიტის აღწერით. BOD გამორთვა კონტროლდება დროული თანმიმდევრობით.

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

PRR - ელექტროენერგიის შემცირების რეესტრი

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

ცოტა 7 6 5 4 3 2 1 0
0x20 PRTIM1 PRTIM0 პრუსი PRADC PRR
წაიკითხეთ/დაწერეთ R R R R R/W R/W R/W R/W
საწყისი ღირებულება 0 0 0 0 0 0 0 0

ბიტი 7: 4 - რეს: დაცულია ბიტი

ეს ბიტი დაცულია ბიტიში ATtiny25 / 45/85 და ყოველთვის წაიკითხება როგორც ნული.

ბიტი 3 - PRTIM1: ენერგიის შემცირების ტაიმერი / მრიცხველი 1

ლოგიკის დაწერა ამ ბიტზე თიშავს Timer / Counter1 მოდულს. როდესაც Timer / Counter1 ჩართულია, ოპერაცია გაგრძელდება როგორც გამორთვა.

ბიტი 2 - PRTIM0: ენერგიის შემცირების ტაიმერი / მრიცხველი 0

ლოგიკის დაწერა ამ ბიტზე თიშავს Timer / Counter0 მოდულს. როდესაც Timer / Counter0 ჩართულია, ოპერაცია გაგრძელდება როგორც გამორთვა.

ბიტი 1 - PRUSI: ენერგიის შემცირება USI

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

ბიტი 0 - PRADC: ენერგიის შემცირება ADC

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

სისტემის კონტროლი და გადაყენება

AVR- ის გადატვირთვა

გადატვირთვისას ყველა I / O რეგისტრატორი დაყენებულია თავდაპირველ მნიშვნელობებზე და პროგრამა იწყება შესრულების გადატვირთვის ვექტორიდან. გადატვირთვის ვექტორზე განთავსებული ინსტრუქცია უნდა იყოს RJMP - Relative Jump - გადატვირთვის მართვის რუტინული ინსტრუქცია. თუ პროგრამა არასდროს იძლევა წყვეტის წყაროს, interrupt vectors არ გამოიყენება და ამ ადგილებში შეიძლება განთავსდეს პროგრამის რეგულარული კოდი. წრიული დიაგრამა სურათი 8-1 აჩვენებს გადატვირთვის ლოგიკას. მოცემულია გადატვირთვის სქემის ელექტრული პარამეტრი “სისტემის და პარამეტრების გადატვირთვის მახასიათებლები” 165 გვერდზე.

სურათი 8-1 გადატვირთვის ლოგიკა გადატვირთვის-ლოგიკა

გადატვირთვის წყაროს გააქტიურებისას AVR– ის I / O პორტები დაუყოვნებლივ აღდგება თავდაპირველ მდგომარეობაში. ეს არ საჭიროებს საათის წყაროს გაშვებას.

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

წყაროების გადაყენება

ATtiny25 / 45 / 85- ს აქვს გადატვირთვის ოთხი წყარო:

ჩართვის გადატვირთვა. MCU გადატვირთულია, როდესაც მიწოდება voltage არის ჩართვის გადატვირთვის ზღურბლის (VPOT) ქვემოთ.

გარე გადაყენება. MCU გადაიტვირთება, როდესაც RESET პინზე დაბალი დონე იმყოფება პულსის მინიმალურ სიგრძეზე მეტხანს.

მაკონტროლებელი სისტემის გადაყენება. MCU გადატვირთვისას ხდება Watchdog Timer– ის ვადის ამოწურვის და Watchdog– ის ჩართვის შემთხვევაში.

Brown-out გადატვირთვა. MCU გადატვირთულია, როდესაც მიწოდება voltage VCC არის Brown-out Reset ბარიერის (VBOT) ქვემოთ და Brown-out Detector ჩართულია.

ჩართვის ჩართვა

Power-on Reset (POR) პულსი წარმოიქმნება On-chip- ის გამოვლენის სქემით. გამოვლენის დონე განისაზღვრება: "Sys- tem და Reset მახასიათებლები ”165 გვერდზე. POR გააქტიურებულია, როდესაც VCC არის გამოვლენის დონის ქვემოთ. POR მიკროსქემის გამოყენება შესაძლებელია გაშვების გადატვირთვის გასააქტიურებლად, ასევე მიწოდების მოცულობის გაუმართაობის დასადგენადtage.

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

სურათი 8-2. MCU გაშვება, RESET მიბმული VCC-ზე

შიდა გადატვირთვა

სურათი 8-3. MCU გაშვება, RESET გაფართოებული გარედან

გარე გადაყენება

გარე გადაყენება წარმოიქმნება დაბალი დონის საშუალებით, თუ ჩართულია. პულსის გადაყენება პულსის მინიმალურ სიგანეზე გრძელია (იხ “სისტემის და პარამეტრების გადატვირთვის მახასიათებლები” 165 გვერდზე) შექმნის გადატვირთვას, მაშინაც კი, თუ საათი არ მუშაობს. მოკლე პულსი არ არის გარანტირებული გადატვირთვის გენერირებისთვის. როდესაც გამოყენებული სიგნალი აღწევს Reset Threshold Voltage – VRST – მის დადებით ზღვარზე დაგვიანების მრიცხველი იწყებს MCU-ს დროის ამოწურვის შემდეგ.

სურათი 8-4. გარე გადატვირთვა ოპერაციის დროს ნახ8.4

ყავისფერი გამოვლენა

ATtiny25/45/85-ს აქვს ჩიპზე ყავისფერი ამოღების გამოვლენის (BOD) ჩართვა VCC დონის მონიტორინგისთვის ოპერაციის დროს მისი ფიქსირებული ტრიგერის დონესთან შედარებით. ტრიგერის დონე BOD-ისთვის შეიძლება შეირჩეს BODLEVEL Fuses-ით. ტრიგერის დონეს აქვს ჰისტერეზი, რათა უზრუნველყოს მწვერვალების გარეშე ყავისფერი ამოღების გამოვლენა. გამოვლენის დონეზე ჰისტერეზი უნდა იქნას განმარტებული, როგორც VBOT+ = VBOT + VHYST/2 და VBOT- = VBOT – VHYST/2.

როდესაც BOD ჩართულია და VCC მცირდება ტრიგერის დონის ქვემოთ მნიშვნელობამდე (VBOT-ში სურათი 8-5), Brown-out Reset დაუყოვნებლივ გააქტიურებულია. როდესაც VCC იზრდება ტრიგერის დონის ზემოთ (VBOT+ in სურათი 8-5), დაგვიანების მრიცხველი იწყებს MCU-ს მას შემდეგ, რაც დროის ამოწურვის პერიოდი tTOUT ამოიწურება.

BOD წრე აღმოაჩენს VCC-ის ვარდნას მხოლოდ იმ შემთხვევაში, თუ მოცtage რჩება ტრიგერის დონის ქვემოთ მითითებულ tBOD-ზე მეტ ხანს “სისტემის და პარამეტრების გადატვირთვის მახასიათებლები” 165 გვერდზე. ნახ8.5

მაკონტროლებელი სისტემის გადაყენება

როდესაც Watchdog-ის დრო ამოიწურება, ის წარმოქმნის ერთი CK ციკლის ხანგრძლივობის ხანმოკლე გადატვირთვის პულსს. ამ პულსის დაცემის კიდეზე, დაყოვნების ტაიმერი იწყებს დროის ამოწურვის პერიოდის tTOUT თვლას. Ეხება "მაკონტროლებელი ტაიმერი" 42-ე გვერდზე მაკონტროლებელი ტაიმერის მუშაობის შესახებ დეტალებისთვის.

ტtage Reference ჩართეთ სიგნალები და დაწყების დრო

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

როდესაც BOD ჩართულია (BODLEVEL [2: 0] დაუკრავი ბიტების დაპროგრამებით).

როდესაც bandgap მითითება უკავშირდება ანალოგურ შედარებას (ACSG– ში ACBG ბიტის დაყენებით).

როდესაც ADC ჩართულია.

ამრიგად, როდესაც BOD არ არის ჩართული, ACBG ბიტის დაყენების ან ADC ჩართვის შემდეგ, მომხმარებელმა ყოველთვის უნდა დაუშვას მითითება, ვიდრე გამოყენებული იქნება ანალოგური შედარებიდან ან ADC– დან. ენერგიის დახარჯვის შემცირების მიზნით, მომხმარებელს შეუძლია თავიდან აიცილოს ზემოთ მოცემული სამი პირობა, რომ დარწმუნდეს, რომ მითითება გამორთულია Power-down რეჟიმში შესვლამდე.

მცველი ტაიმერი

მაკონტროლებელი ტაიმერი საათობრივად მუშაობს On-chip Oscillator– დან, რომელიც მუშაობს 128 kHz. Watchdog Timer prescaler- ის კონტროლით, Watchdog- ის გადატვირთვის ინტერვალის შეცვლა შესაძლებელია, როგორც ეს ნაჩვენებია ცხრილი 8-3 46-ე გვერდზე. WDR - Watchdog Reset - ინსტრუქცია აღადგენს Watchdog ტაიმერს. მაკონტროლებელი ტაიმერი ასევე გადატვირთულია, როდესაც ის გამორთულია და ჩიპის გადატვირთვისას ხდება. გადატვირთვის პერიოდის დასადგენად შეიძლება ათი სხვადასხვა საათის ციკლის პერიოდის არჩევა. თუ გადატვირთვის პერიოდი იწურება სხვა დამკვირვებლის გადატვირთვის გარეშე, ATtiny25 / 45/85 აღადგენს და ასრულებს გადატვირთვის ვექტორიდან. დროის დეტალების შესახებ Watchdog- ის გადაყენებაზე იხილეთ: ცხრილი 8-3 46-ე გვერდზე.

მაკონტროლებელი ტაიმერი ასევე შეიძლება კონფიგურირებული იყოს გადატვირთვის ნაცვლად, შეჩერდეს. ეს შეიძლება ძალიან სასარგებლო იყოს Watchdog– ის გამოყენებისას Power-down– დან გაღვიძებისთვის.

მაკონტროლებელი ორგანოს უნებლიე გამორთვის ან დროის გასვლის პერიოდის უნებლიე შეცვლის თავიდან ასაცილებლად, უსაფრთხოების ორი განსხვავებული დონე აირჩევა დაზღვევის WDTON მიერ, როგორც ნაჩვენებია ცხრილი 8-1 მიმართეთ ”დროული მიმდევრობები Watchdog Timer- ის ფიგურაცია ”43-ე გვერდზე დეტალებისთვის.

ცხრილი 8-1. WDT კონფიგურაცია, როგორც WDTON-ის საფუარის პარამეტრების ფუნქცია

WDTON უსაფრთხოების დონე WDT საწყისი მდგომარეობა როგორ გამორთოთ WDT როგორ შევცვალოთ ტაიმ-აუტი
არ არის დაპროგრამებული 1 გამორთულია დროული თანმიმდევრობა არანაირი შეზღუდვა
დაპროგრამებული 2 ჩართულია ყოველთვის ჩართულია დროული თანმიმდევრობა

სურათი 8-7. მცველი ტაიმერი მცველი

დროული თანმიმდევრობა მაკონტროლებელი ტაიმერის კონფიგურაციის შესაცვლელად

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

უსაფრთხოების დონე 1: ამ რეჟიმში, Watchdog Timer თავდაპირველად გამორთულია, მაგრამ მისი ჩართვა შესაძლებელია WDE ბიტის ერთზე ჩაწერით ყოველგვარი შეზღუდვის გარეშე. ჩართული Watchdog Timer-ის გამორთვისას საჭიროა დროული თანმიმდევრობა. ჩართული Watchdog Timer-ის გამორთვისთვის შემდეგი პროცედურა უნდა შესრულდეს:

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

მომდევნო ოთხი საათის ციკლში, იმავე ოპერაციაში, დაწერეთ WDE და WDP ბიტი, როგორც სასურველია, მაგრამ WDCE bit გაწმენდილია.

უსაფრთხოების დონე 2: ამ რეჟიმში, Watchdog Timer ყოველთვის ჩართულია და WDE ბიტი ყოველთვის იკითხება როგორც ერთი. დროული თანმიმდევრობა საჭიროა Watchdog Time-out პერიოდის შეცვლისას. Watchdog Time-out-ის შესაცვლელად შემდეგი პროცედურა უნდა შესრულდეს:

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

მომდევნო ოთხი საათის ციკლში, იმავე ოპერაციაში, დაწერეთ WDP ბიტი, როგორც სასურველია, მაგრამ WDCE bit გაწმენდილია. WDE ბიტზე დაწერილი მნიშვნელობა შეუსაბამოა.

კოდი ყოფილიample

შემდეგი კოდი ყოფილიample აჩვენებს ერთ ასამბლეას და ერთ C ფუნქციას WDT- ის გამორთვისთვის. ყოფილიample ვარაუდობს, რომ შეფერხებები კონტროლდება (მაგ., გლობალურად გამორთვით), რომ ამ ფუნქციების შესრულებისას არანაირი შეფერხება არ მოხდეს.

ასამბლეის კოდი ყოფილიample(1)
WDT_off:

wdr

; გაასუფთავეთ WDRF MCUSR– ში

ldi r16, (0<

გარეთ MCUSR, r16

; დაწერეთ ლოგიკური ერთი WDCE და WDE

; შეინახეთ prescaler– ის ძველი პარამეტრი, რომ თავიდან აიცილოთ უნებლიე მაკონტროლებელი სისტემის გადაყენება

r16-ში, WDTCR

ან r16, (1<

გარეთ WDTCR, r16

; გამორთეთ WDT

ldi r16, (0<

გარეთ WDTCR, r16

რეტ

C კოდი ყოფილიample(1)
void WDT_off (ბათილი)

{

_WDR ();

/* WDRF-ის გასუფთავება MCUSR-ში */ MCUSR = 0x00

/* ჩაწერეთ ლოგიკური ერთი WDCE და WDE */ WDTCR |= (1<

/ * გამორთეთ WDT * / WDTCR = 0x00;

}

შენიშვნა: 1. იხ ”კოდი ყოფილიamples ”მე –6 გვერდზე.

რეგისტრაციის აღწერა

MCUSR - MCU სტატუსის რეგისტრაცია

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

ცოტა 7 6 5 4 3 2 1 0
0x34 WDRF BORF EXTRF PORF MCUSR
წაიკითხეთ/დაწერეთ R R R R R/W R/W R/W R/W

საწყისი მნიშვნელობა 0 0 0 0 იხილეთ ბიტის აღწერა

ბიტი 7: 4 - რეს: დაცულია ბიტი

ეს ბიტი დაცულია ბიტიში ATtiny25 / 45/85 და ყოველთვის წაიკითხება როგორც ნული.

ბიტი 3 - WDRF: მაკონტროლებელი დროშის გადაყენება

ეს ბიტი მითითებულია, თუ ხდება მაკონტროლებელი სისტემის გადაყენება. ბიტი გადატვირთვისას ხდება Power-on Reset– ით, ან დროშაზე ლოგიკური ნულის დაწერით.

ბიტი 2 - BORF: ყავისფერი გადატვირთვის დროშა

ეს ბიტი მითითებულია, თუ ხდება Brown-out Reset. ბიტი გადატვირთვისას ხდება Power-on Reset– ით, ან დროშაზე ლოგიკური ნულის დაწერით.

ბიტი 1 - EXTRF: გარე გადატვირთვის დროშა

ეს ბიტი მითითებულია, თუ ხდება გარე გადაყენება. ბიტი გადატვირთვისას ხდება Power-on Reset– ით, ან დროშაზე ლოგიკური ნულის დაწერით.

ბიტი 0 - PORF: ჩართვის გადატვირთვის დროშა

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

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

WDTCR - მაკონტროლებელი ტაიმერის კონტროლის რეგისტრაცია

ცოტა 7 6 5 4 3 2 1 0
0x21 WDIF WDIE WDP3 WDCE WDE WDP2 WDP1 WDP0 WDTCR
წაიკითხეთ/დაწერეთ R/W R/W R/W R/W R/W R/W R/W R/W
საწყისი ღირებულება 0 0 0 0 X 0 0 0

ბიტი 7 - WDIF: მაკონტროლებელი დროების შეფერხების დროშა

ეს ბიტი დგინდება, როდესაც მაკონტროლებელი ტაიმერში ტაიმ-აუტი ხდება, ხოლო მაკონტროლებელი ტაიმერი კონფიგურირებულია შეწყვეტისთვის. WDIF გასუფთავებულია აპარატურით, როდესაც ხდება შესაბამისი შეწყვეტის მართვის ვექტორის შესრულება. გარდა ამისა, WDIF გასუფთავებულია დროშის ლოგიკის დაწერით. როდესაც SREG- სა და WDIE- ში I- ბიტი დგინდება, ხდება მაკონტროლებელი დროის ამოწურვის შეფერხება.

ბიტი 6 - WDIE: მაკონტროლებელი დროის შეწყვეტის ჩართვა ჩართულია

როდესაც ეს ბიტი ეწერება ერთს, WDE იწმინდება და სტატუსის რეესტრში მითითებულია I-bit, ჩართულია Watchdog Time-out Interrupt. ამ რეჟიმში შესაბამისი შეწყვეტა ხორციელდება გადატვირთვის ნაცვლად, თუ მაკონტროლებელი ტაიმერში შეჩერებულია.

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

ცხრილი 8-2. Watchdog ტაიმერის კონფიგურაცია

WDE WDIE მაკონტროლებელი ტაიმერის მდგომარეობა აქცია ტაიმ-აუტის შესახებ
0 0 გაჩერდა არცერთი
0 1 სირბილი შეწყვეტა
1 0 სირბილი გადატვირთვა
1 1 სირბილი შეწყვეტა

ბიტი 4 - WDCE: მეთვალყურეობის შეცვლის ჩართვა

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

ბიტი 3 - WDE: მაკონტროლებელი ჩართულია

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

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

მომდევნო ოთხი საათის ციკლში დაწერეთ ლოგიკა 0 WDE- ს. ეს გამორთავს მაკონტროლებელს.

უსაფრთხოების დონის 2 – ში შეუძლებელია Watchdog Timer– ის გამორთვა, თუნდაც ზემოთ აღწერილი ალგორითმით. იხილეთ „მაკონტროლებელი ტაიმერის კონფიგურაციის შეცვლის დროული თანმიმდევრობა“ გვერდზე 43.

უსაფრთხოების დონის 1-ში WDE გადაფარავს WDRF- ს MCUSR- ში. იხილეთ ”MCUSR - MCU სტატუსის რეგისტრაცია” 44 გვერდზე WDRF აღწერილობისთვის. ეს ნიშნავს, რომ WDE ყოველთვის დგინდება WDRF დაყენებისას. WDE- ს გასასუფთავებლად, WDRF უნდა გაიწმინდოს, სანამ ზედამხედველის გამორთვა მოხდება ზემოთ აღწერილი პროცედურით. ეს ფუნქცია უზრუნველყოფს მრავალჯერადი გადატვირთვის პროცესს უკმარისობის გამომწვევი პირობების და უკმარისობის უსაფრთხო გაშვების დროს.

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

ბიტი 5, 2: 0 - WDP [3: 0]: მაკონტროლებელი ტაიმერი Prescaler 3, 2, 1 და 0

WDP [3: 0] ბიტი განსაზღვრავს Watchdog Timer- ის გამოყოფას, როდესაც Watchdog Timer ჩართულია. ნაჩვენებია სხვადასხვა გამოანგარიშების მნიშვნელობები და მათი შესაბამისი ვადები ცხრილი 8-3.

ცხრილი 8-3. Watchdog Timer Prescale Select

WDP3 WDP2 WDP1 WDP0 WDT Oscillator ციკლის რაოდენობა ტიპიური დროის ამოწურვა VCC-ზე = 5.0V
0 0 0 0 2K (2048) ციკლი 16 ms
0 0 0 1 4K (4096) ციკლი 32 ms
0 0 1 0 8K (8192) ციკლი 64 ms
0 0 1 1 16K (16384) ციკლი 0.125 წ
0 1 0 0 32K (32764) ციკლი 0.25 წ
0 1 0 1 64K (65536) ციკლი 0.5 წ
0 1 1 0 128K (131072) ციკლი 1.0 წ
0 1 1 1 256K (262144) ციკლი 2.0 წ
1 0 0 0 512K (524288) ციკლი 4.0 წ
1 0 0 1 1024K (1048576) ციკლი 8.0 წ

ცხრილი 8-3. Watchdog Timer Prescale Select (გაგრძელება)

WDP3 WDP2 WDP1 WDP0 WDT Oscillator ციკლის რაოდენობა ტიპიური დროის ამოწურვა VCC-ზე = 5.0V
1 0 1 0 დაცულია(1)
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1

შენიშვნა: 1. თუ არჩეულია, გამოყენებული იქნება 0b1010 ქვემოთ მოცემული ერთ-ერთი სწორი პარამეტრი.

წყვეტს

ამ ნაწილში აღწერილია შეფერხების მართვის სპეციფიკა, როგორც ეს შესრულებულია ATtiny25 / 45/85-ში. AVR წყვეტის მართვის ზოგადი ახსნა-განმარტებისთვის იხილეთ „გადატვირთვისა და გათიშეთ მართვა“ მე –12 გვერდზე.

შეაჩერეთ ვექტორები ATtiny25 / 45/85 – ში

აღწერილია ATtiny25 / 45/85 ვექტორების ვექტორები ცხრილი 9-1ქვემოთ.

ცხრილი 9-1. გადატვირთვა და შეწყვეტის ვექტორები

ვექტორი No. პროგრამის მისამართი წყარო შეწყვეტის განმარტება
1 0x0000 გადატვირთვა გარე ქინძისთავი, ჩართვის ჩართვა, ყავისფერი გამოსვლის გადაყენება, მეთვალყურეების გადაყენება
2 0x0001 INT0 გარე შეწყვეტის მოთხოვნა 0
3 0x0002 PCINT0 Pin შეცვლის შეწყვეტის მოთხოვნა 0
4 0x0003 TIMER1_COMPA ტაიმერი / მრიცხველი 1 შედარება მატჩი A
5 0x0004 TIMER1_OVF ტაიმერი / მრიცხველი 1 გადავსება
6 0x0005 TIMER0_OVF ტაიმერი / მრიცხველი 0 გადავსება
7 0x0006 EE_RDY EEPROM მზად არის
8 0x0007 ANA_COMP ანალოგური შედარება
9 0x0008 ADC ADC კონვერტაცია დასრულებულია
10 0x0009 TIMER1_COMPB ტაიმერი / მრიცხველი 1 შედარება მატჩი B
11 0x000A TIMER0_COMPA ტაიმერი / მრიცხველი 0 შედარება მატჩი A
12 0XXX TIMER0_COMPB ტაიმერი / მრიცხველი 0 შედარება მატჩი B
13 0x000C WDT მაკონტროლებელი ტაიმ-აუტი
14 0x000D USI_START USI დაწყება
15 0x000E USI_OVF USI გადავსება

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

ტიპიური და ზოგადი დაყენება ATtiny25/45/85 -ში ვექტორული მისამართების შეწყვეტისთვის ნაჩვენებია პროგრამაში exampქვემოთ.

ასამბლეის კოდი ყოფილიample
.org 0x0000 ; შემდეგი მისამართის დაყენება განცხადება
rjmp რესეტი ; მისამართი 0x0000
rjmp INT0_ISR ; მისამართი 0x0001
rjmp PCINT0_ISR ; მისამართი 0x0002
rjmp TIM1_COMPA_ISR ; მისამართი 0x0003
rjmp TIM1_OVF_ISR ; მისამართი 0x0004
rjmp TIM0_OVF_ISR ; მისამართი 0x0005
rjmp EE_RDY_ISR ; მისამართი 0x0006
rjmp ANA_COMP_ISR ; მისამართი 0x0007
rjmp ADC_ISR ; მისამართი 0x0008
rjmp TIM1_COMPB_ISR ; მისამართი 0x0009
rjmp TIM0_COMPA_ISR ; მისამართი 0x000A
rjmp TIM0_COMPB_ISR ; მისამართი 0x000B
rjmp WDT_ISR ; მისამართი 0x000C
rjmp USI_START_ISR ; მისამართი 0x000D
rjmp USI_OVF_ISR ; მისამართი 0x000E
განთავსება: ; მთავარი პროგრამის დაწყება
; მისამართი 0x000F

შენიშვნა: იხ ”კოდი ყოფილიamples ”მე –6 გვერდზე.

გარე წყვეტები

გარე შეწყვეტას იწვევს INT0 პინი ან PCINT [5: 0] ნებისმიერი პინი. დააკვირდით, რომ ჩართვის შემთხვევაში, შეფერხებები გამოიწვევს მაშინაც კი, თუ INT0 ან PCINT [5: 0] პინები კონფიგურირებულია როგორც შედეგები. ეს ფუნქცია უზრუნველყოფს პროგრამული უზრუნველყოფის შეწყვეტის გენერირებას. Pin შეცვლისას PCI გამოიწვევს PCINT [5: 0] ჩართული პინის გადართვის შემთხვევაში. PCMSK Register აკონტროლებს რომელი ქინძისთავები ხელს უწყობს pin შეცვლის შეწყვეტას. ქინძისთავების შეცვლის შეწყვეტა PCINT- ზე [5: 0] აღმოჩენილია ასინქრონულად. ეს გულისხმობს, რომ ეს წყვეტები შეიძლება გამოყენებულ იქნას ნაწილის გასაღვიძებლად ასევე ძილის რეჟიმებიდან, გარდა Idle რეჟიმში.

INT0 შეფერხებები შეიძლება გამოწვეული იყოს ჩამოვარდნილი ან ამომავალი პირას ან დაბალი დონით. ეს დგინდება ისე, როგორც მითითებულია MCU კონტროლის რეესტრის სპეციფიკაციაში - MCUCR. როდესაც INT0 შეწყვეტა ჩართულია და კონფიგურირებულია როგორც დონის გააქტიურებული, შეფერხება იმოქმედებს მანამ, სანამ პინი არ არის გამართული. გაითვალისწინეთ, რომ INT0– ზე ჩამოვარდნილ ან ამომავალი პირას წყვეტები მოითხოვს I / O საათის არსებობას, აღწერილი აქ "საათის სისტემები და მათი განაწილება" გვერდი 23.

დაბალი დონის შეწყვეტა

დაბალი დონის შეწყვეტა INT0– ზე გამოვლენილია ასინქრონულად. ეს გულისხმობს, რომ ეს შეწყვეტა შეიძლება გამოყენებულ იქნას ნაწილის გასაღვიძებლად ასევე ძილის რეჟიმებიდან, გარდა Idle რეჟიმში. I / O საათი შეჩერებულია ძილის ყველა რეჟიმში, უმოქმედო რეჟიმის გარდა.

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

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

Pin შეცვლის შეფერხების დრო

ყოფილიampნაჩვენებია ქინძისთავის შეცვლის შეწყვეტის დრო სურათი 9-1.

რეგისტრაციის აღწერა

MCUCR - MCU კონტროლის რეესტრი

გარე შეწყვეტის კონტროლის რეგისტრი A შეიცავს საკონტროლო ბიტებს შეგრძნების კონტროლის კონტროლისთვის.

ცოტა 7 6 5 4 3 2 1 0
0x35 BODS PUD SE SM1 SM0 ბოდსე ISC01 ISC00 MCUCR
წაიკითხეთ/დაწერეთ R R/W R/W R/W R/W R R/W R/W
საწყისი ღირებულება 0 0 0 0 0 0 0 0

ბიტი 1: 0 - ISC0 [1: 0]: შეაჩერე გრძნობის კონტროლი 0 ბიტი 1 და ბიტი 0

გარე შეწყვეტა 0 აქტიურდება გარე პინტით INT0, თუ დაყენებულია SREG I დროშა და შესაბამისი შეწყვეტის ნიღაბი. დონისა და კიდეების გარე INT0 პინზე, რომლებიც ააქტიურებენ წყვეტს, განსაზღვრულია აქ ცხრილი 9-2რა მნიშვნელობა INT0 პინზე არის sampხელმძღვანელობდა კიდეების გამოვლენამდე. თუ არჩეულია ზღვარი ან გადართვის შეწყვეტა, იმპულსები, რომლებიც ერთ საათზე მეტ ხანს გრძელდება, წარმოქმნის შეწყვეტას. მოკლე პულსი არ არის გარანტირებული, რომ წარმოქმნის შეფერხებას. თუ შეირჩევა დაბალი დონის შეფერხება, დაბალი დონე უნდა შენარჩუნდეს მიმდინარე შესრულების ინსტრუქციის დასრულებამდე, რათა შეიქმნას შეფერხება.

ცხრილი 9-2. შეწყვეტა 0 სენსორული კონტროლი

ISC01 ISC00 აღწერა
0 0 INT0– ის დაბალი დონე იწვევს შეწყვეტის მოთხოვნას.
0 1 ნებისმიერი ლოგიკური ცვლილება INT0– ზე იწვევს შეწყვეტის მოთხოვნას.
1 0 INT0- ის დაცემა ზღვარზე იწვევს შეწყვეტის მოთხოვნას.
1 1 INT0- ის ამომავალი ზღვარი იწვევს შეწყვეტის მოთხოვნას.

GIMSK - ზოგადი შეწყვეტის ნიღბების რეესტრი

ცოტა 7 6 5 4 3 2 1 0
0XXX INT0 PCIe GIMSK
წაიკითხეთ/დაწერეთ R R/W R/W R R R R R
საწყისი ღირებულება 0 0 0 0 0 0 0 0

ბიტი 7, 4: 0 - რეს: დაცულია ბიტი

ეს ბიტი დაცულია ბიტიში ATtiny25 / 45/85 და ყოველთვის წაიკითხება როგორც ნული.

ბიტი 6 - INT0: გარე შეწყვეტის მოთხოვნა 0 ჩართვა

როდესაც დაყენებულია INT0 ბიტი (ერთი) და დაყენებულია I-bit სტატუსის რეესტრში (SREG) (ერთი), ჩართულია გარე პინის შეწყვეტა. შეწყვეტის გრძნობის კონტროლი 0 ბიტი 1/0 (ISC01 და ISC00) MCU კონტროლის რეესტრში (MCUCR) განსაზღვრავს აქტიურდება თუ არა გარე შეწყვეტა INT0 ქინძის ან დონის გასწვრივ ამოსვლისას და / ან დაცემას. აქტივობა პინზე გამოიწვევს შეწყვეტის მოთხოვნას მაშინაც კი, თუ INT0 კონფიგურირებულია როგორც გამომავალი. Exter- nal Interrupt Request 0-ის შესაბამისი წყვეტა ხორციელდება INT0- ის Interrupt- ის ვექტორიდან.

ბიტი 5 - PCIE: ქინძისთავების შეცვლის შეწყვეტის ჩართვა

როდესაც PCIE ბიტი დაყენებულია (ერთი) და I-bit სტატუსის რეესტრში (SREG) დაყენებულია (ერთი), ჩართულია pin შეცვლის შეწყვეტა. ნებისმიერი ცვლილება ნებისმიერ ჩართულ PCINT [5: 0] პინზე გამოიწვევს შეწყვეტას. Pin Change Interrupt Request- ის შესაბამისი შეწყვეტა ხორციელდება PCI– ს შეწყვეტის ვექტორიდან. PCINT [5: 0] ქინძისთავები ჩართულია ინდივიდუალურად PCMSK0 რეგისტრის მიერ.

GIFR - ზოგადი დროშის დროშის რეესტრი

ცოტა 7 6 5 4 3 2 1 0
0x3A INTF0 PCIF GIFR
წაიკითხეთ/დაწერეთ R R/W R/W R R R R R
საწყისი ღირებულება 0 0 0 0 0 0 0 0

ბიტი 7, 4: 0 - რეს: დაცულია ბიტი

ეს ბიტი დაცულია ბიტიში ATtiny25 / 45/85 და ყოველთვის წაიკითხება როგორც ნული.

ბიტი 6 - INTF0: გარე წყვეტის დროშა 0

როდესაც INT0 პინზე ზღვარი ან ლოგიკა შეცვლის შეწყვეტის მოთხოვნას, INTF0 ხდება (ერთი). თუ I-bit in SREG და INT0 bit in GIMSK დაყენებულია (ერთი), MCU გადავა შესაბამის შეწყვეტის ვექტორზე. დროშა იწმინდება, როდესაც ხდება შეწყვეტის რუტინა. გარდა ამისა, დროშის გასუფთავება შესაძლებელია ლოგიკური ნიშნის დაწერით. ეს დროშა ყოველთვის იწმინდება, როდესაც INT0 კონფიგურირებულია როგორც დონის წყვეტილი.

ბიტი 5 - PCIF: ქინძისთავების შეცვლის დროშის დროშა

როდესაც რომელიმე PCINT [5: 0] პინზე ლოგიკური ცვლილება იწვევს შეწყვეტის მოთხოვნას, PCIF ხდება (ერთი). თუ I-bit SREG– ში და PCIE ბიტი GIMSK– ში დაყენებულია (ერთი), MCU გადავა შესაბამის შეწყვეტის ვექტორზე. დროშა იწმინდება, როდესაც ხდება შეწყვეტის რუტინა. გარდა ამისა, დროშის გასუფთავება შესაძლებელია ლოგიკური ნიშნის დაწერით.

PCMSK - ნიღაბი ნიღაბი რეგისტრაცია

ცოტა 7 6 5 4 3 2 1 0
0x15 PCINT5 PCINT4 PCINT3 PCINT2 PCINT1 PCINT0 PCMSK
წაიკითხეთ/დაწერეთ R R R/W R/W R/W R/W R/W R/W
საწყისი ღირებულება 0 0 0 0 0 0 0 0

ბიტი 7: 6 - რეს: დაცულია ბიტი

ეს ბიტი დაცულია ბიტიში ATtiny25 / 45/85 და ყოველთვის წაიკითხება როგორც ნული.

ბიტი 5: 0 - PCINT [5: 0]: Pin Change Enable Mask 5: 0

თითოეული PCINT [5: 0] ბიტი ირჩევს ჩართულია თუ არა პინის შეცვლის შეწყვეტა შესაბამის I / O პინზე. თუ დაყენებულია PCINT [5: 0] და დაყენებულია PCIE ბიტი GIMSK– ში, პინის შეცვლის შეწყვეტა ჩართულია შესაბამის I / O პინზე. თუ PCINT [5: 0] გასუფთავებულია, შესაბამის I / O პინზე პინის შეცვლის შეწყვეტა გაუქმებულია.

I/O პორტები

შესავალი

ყველა AVR პორტს აქვს წაკითხვის-შეცვლის-ჩაწერის ნამდვილი ფუნქცია, როდესაც გამოიყენება როგორც ციფრული I/O პორტები. ეს ნიშნავს, რომ ერთი პორტის პინის მიმართულება შეიძლება შეიცვალოს SBI და CBI ინსტრუქციებით ნებისმიერი სხვა პინის მიმართულების უნებლიედ შეცვლის გარეშე. იგივე ეხება დისკის მნიშვნელობის შეცვლისას (თუ კონფიგურირებულია გამომავალი სახით) ან გამწევი რეზისტორების ჩართვის/გამორთვისას (თუ კონფიგურაციაა შეყვანის სახით). თითოეულ გამომავალ ბუფერს აქვს დისკის სიმეტრიული მახასიათებლები მაღალი ჩაძირვისა და წყაროს შესაძლებლობებით. პინის დრაივერი საკმარისად ძლიერია LED ეკრანების პირდაპირ მართვისთვის. პორტის ყველა ქინძისთავს აქვს ინდივიდუალურად შერჩევადი გამწევ რეზისტორებთან მიწოდების მოცულობითtagე უცვლელი წინააღმდეგობა. ყველა I/O პინს აქვს დამცავი დიოდები როგორც VCC-ზე, ასევე მიწაზე, როგორც ეს მითითებულია სურათი 10-1. მიმართეთ „ელექტრული მახასიათებლები“ ​​161 გვერდზე პარამეტრების სრული ჩამონათვალისთვის.

სურათი 10-1. I/O პინის ეკვივალენტური სქემა

ნახ10

ამ განყოფილების ყველა რეგისტრი და ბიტი მითითება დაწერილია ზოგადი ფორმით. მცირე ასო "x" წარმოადგენს პორტის ნუმერაციის ასოებს, ხოლო მცირე ასო "n" წარმოადგენს ბიტის რიცხვს. ამასთან, პროგრამაში რეგისტრის ან ბიტის განსაზღვრისას უნდა იქნას გამოყენებული ზუსტი ფორმა. ყოფილიample, PORTB3 ბიტი არა. 3 პორტში B, აქ დოკუმენტირებული ზოგადად როგორც PORTxn. ფიზიკური I/O რეგისტრები და ბიტის ადგილები ჩამოთვლილია აქ "რეგისტრაციის აღწერა" ჩართულია გვერდი 64.

თითოეული პორტისთვის გამოყოფილია I / O მეხსიერების მისამართების ადგილმდებარეობა, თითო მონაცემთა რეესტრისთვის - PORTx, მონაცემთა მიმართულების რეგისტრი - DDRx და პორტის შეყვანის პინები - PINx. პორტის შეყვანის ქინძისთავების I / O ადგილმდებარეობა იკითხება მხოლოდ, ხოლო მონაცემთა რეესტრი და მონაცემთა მიმართულების რეგისტრი იკითხება / წერს. ამასთან, PINx– ის რეგისტრატორში ლოგიკის ერთიდან ოდნავ ჩაწერა გამოიწვევს მონაცემთა რეესტრის შესაბამის ბიტიში გადართვას. გარდა ამისა, Pull-up Disable - PUD ბიტი MCUCR– ში გამორთავს დატვირთვის ფუნქციას ყველა პინის ყველა პორტში, როდესაც დაყენებულია.

I / O პორტის გამოყენება ზოგადი ციფრული I / O– ით არის აღწერილი ”პორტები, როგორც ზოგადი ციფრული I / O” 53-ე გვერდზე. პორტის ქინძის უმეტესობა მულტიპლექსირებულია ალტერნატიული ფუნქციებით მოწყობილობაზე არსებული პერიფერიული მახასიათებლებისთვის. როგორ აღწერილია თითოეული ალტერნატიული ფუნქცია პორტის პინთან ინტერფეისი ”პორტის ალტერნატიული ფუნქციები” 57 გვერდზე. ალტერნატიული ფუნქციების სრული აღწერილობისთვის იხილეთ ინდივიდუალური მოდულის განყოფილებები.

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

პორტები, როგორც ზოგადი ციფრული I / O

პორტები არის ორმხრივი I / O პორტები, რომლებსაც აქვთ სურვილისამებრ შიდა დაწევა. სურათი 10-2 გვიჩვენებს ერთი I / O- პორტის პინის ფუნქციურ აღწერას, რომელსაც აქ ზოგადად Pxn უწოდებენ.

სურათი 10-2. ზოგადი ციფრული I/O(1)

ნახ10

კონფიგურაცია Pin

თითოეული პორტის pin შედგება სამი რეგისტრის ბიტისგან: DDxn, PORTxn და PINxn. როგორც ნაჩვენებია "რეგისტრაციის აღწერა" ჩართულია გვერდი 64, DDxn ბიტებზე წვდომა ხდება DDRx I / O მისამართზე, PORTxn ბიტები PORTx I / O მისამართზე, და PINxn ბიტები PINx I / O მისამართზე.

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

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

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

პინის გადართვა

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

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

სამ მდგომარეობას ({DDxn, PORTxn} = 0b00) და მაღალ გამომავალს ({DDxn, PORTxn} = 0b11) შორის გადართვისას, შუალედური მდგომარეობა ჩართულია აწევით {DDxn, PORTxn} = 0b01) ან გამომავალი დაბალი ({DDxn, PORTxn} = 0b10) უნდა მოხდეს. ჩვეულებრივ, აწევის ჩართული მდგომარეობა სრულიად მისაღებია, რადგან მაღალი წინაღობის გარემო ვერ შეამჩნევს განსხვავებას ძლიერ მაღალ დრაივერსა და აწევას შორის. თუ ეს ასე არ არის, PUD ბიტი MCUCR რეესტრში შეიძლება დაყენდეს ისე, რომ გამორთოს ყველა აწევა ყველა პორტში.

შეყვანას შორის დაწევა და გამომავალი დაბალ დონეზე გადართვა იგივე პრობლემას ქმნის. შუალედურ ნაბიჯად მომხმარებელმა უნდა გამოიყენოს ან სამი მდგომარეობა ({DDxn, PORTxn} = 0b00) ან გამომავალი მაღალი მდგომარეობა ({DDxn, PORTxn} = 0b10).

ცხრილი 10-1 აჯამებს კონტროლის სიგნალებს pin მნიშვნელობისთვის.

ცხრილი 10-1. პორტის პინის კონფიგურაციები

DDxn პორტქსნი PUD

(MCUCR– ში)

I/O აწევა კომენტარი
0 0 X შეყვანა არა ტრი-სახელმწიფო (Hi-Z)
0 1 0 შეყვანა დიახ Pxn აწარმოებს მიმდინარეობას თუ ext. დაბლა ჩამოიწია.
0 1 1 შეყვანა არა ტრი-სახელმწიფო (Hi-Z)
1 0 X გამომავალი არა გამომავალი დაბალი (ნიჟარა)
1 1 X გამომავალი არა გამომავალი მაღალი (წყარო)

კითხულობს Pin მნიშვნელობას

მონაცემთა მიმართულების ბიტის DDxn პარამეტრიდან დამოუკიდებლად, პორტის პინის წაკითხვა შესაძლებელია PINxn Register ბიტის საშუალებით. როგორც ეს ნაჩვენებია სურათი 10-2, PINxn რეგისტრაციის ბიტი და წინა ჩამკეტი წარმოადგენს სინქრონიზატორს. ეს საჭიროა მეტასტაბელურობის თავიდან ასაცილებლად, თუ ფიზიკური პინი შეცვლის მნიშვნელობას შიდა საათის კიდესთან, მაგრამ ამასთანავე, ის შეფერხებას იწვევს. სურათი 10-3 აჩვენებს სინქრონიზაციის დროის დიაგრამას გარედან გამოყენებული პინის მნიშვნელობის წაკითხვისას. გავრცელების მაქსიმალური და მინიმალური შეფერხებები აღინიშნება, შესაბამისად, tpd, max და tpd, min.

გაითვალისწინეთ საათის პერიოდი დაწყებული სისტემის საათის პირველი ჩამოვარდნიდან მალევე. საკეტი დახურულია, როდესაც საათი დაბალია, და გამჭვირვალე ხდება, როდესაც საათი მაღლაა, რასაც მიუთითებს "SYNC LATCH" სიგნალის დაჩრდილული რეგიონი. სიგნალის სიხშირე იკავებს, როდესაც სისტემის საათი იკლებს. ის საათდება PINxn რეგისტრში მომდევნო პოზიტიური საათის პირას. როგორც მითითებულია ორი ისარი tpd, max და tpd, min, ერთი სიგნალის გადასვლა პინზე გადაიდო ½ და 1½ სისტემის საათის პერიოდს შორის, მტკიცების დროის მიხედვით.

პროგრამული უზრუნველყოფისთვის მინიჭებული პინ-მნიშვნელობის კითხვისას, ჩასმული უნდა იყოს nop ინსტრუქცია, როგორც ეს მითითებულია სურათი 10-4. გარეთ ინსტრუქცია ადგენს "SYNC LATCH" სიგნალს საათის პოზიტიურ ზღვარზე. ამ შემთხვევაში, შეფერხება tpd სინქრონიზატორის საშუალებით არის ერთი სისტემის საათის პერიოდი.

შემდეგი კოდი ყოფილიample გვიჩვენებს, თუ როგორ უნდა დააყენოთ პორტის B პინები 0 და 1 მაღალი, 2 და 3 დაბალი, და განსაზღვროთ პორტის ქინძისთავები 4-დან 5-მდე, როგორც შეყვანის სახით, 4-ე პორტისთვის მინიჭებული ამოსაყვანი ღილაკით. მიღებული პინის მნიშვნელობები ხელახლა იკითხება, მაგრამ როგორც ადრე განვიხილეთ, nop ინსტრუქცია ჩართულია იმისათვის, რომ შეძლოთ ზოგიერთ პინზე ახლახან მინიჭებული მნიშვნელობის უკან წაკითხვა.

ასამბლეის კოდი ყოფილიample(1)

; განსაზღვრეთ აწევა და დააყენეთ გამოსავლები მაღალი

; განსაზღვრეთ მიმართულებები პორტის ქინძისთავებისთვის

ldi        r16,(1<<PB4)|(1<<PB1)|(1<<PB0)

ldi        r17,(1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0)

გარეთ PORTB,r16

გამოვიდა DDRB,r17

; ჩადეთ nop სინქრონიზაციისთვის

არა

; წაიკითხეთ პორტის ქინძისთავები

r16-ში, PINB-ში

შენიშვნა: ასამბლეის პროგრამისთვის გამოიყენება ორი დროებითი რეგისტრი, რათა შემცირდეს დრო 0, 1 და 4 ქინძისთავების დაყენებიდან, სანამ მიმართულების ბიტები სწორად არ დაყენდება, 2 და 3 ბიტი განსაზღვრავს როგორც დაბალს და ხელახლა განსაზღვრავს ბიტებს 0 და 1 როგორც ძლიერი მაღალი მძღოლები.

C კოდი ყოფილიample
ხელმოუწერელი char i;

/* განსაზღვრეთ აწევა და დააყენეთ გამოსავალი მაღალი */

/* განსაზღვრეთ მიმართულებები პორტის პინებისთვის */ PORTB = (1<

DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0);

/* ჩადეთ nop სინქრონიზაციისთვის*/

_NOP ();

/* პორტის პინების წაკითხვა */ i = PINB;

ციფრული შეყვანის ჩართვა და ძილის რეჟიმები

როგორც ნაჩვენებია სურათი 10-2, ციფრული შეყვანის სიგნალი შეიძლება იყოს clampდამიწება შმიტ-ტრიგერის შესასვლელთან. სურათზე მითითებული SLEEP სიგნალი დაყენებულია MCU Sleep Controller-ის მიერ გამორთვის რეჟიმში, რათა თავიდან იქნას აცილებული ენერგიის მაღალი მოხმარება, თუ ზოგიერთი შემავალი სიგნალი რჩება მცურავი, ან აქვს ანალოგური სიგნალის დონე VCC/2-თან ახლოს.

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

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

უკავშირდება ქინძისთავები

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

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

პორტის ალტერნატიული ფუნქციები

პორტის ქინძის უმეტესობას აქვს ალტერნატიული ფუნქციები, გარდა იმისა, რომ ზოგადი ციფრულია I / Os. სურათი 10-5 გვიჩვენებს, თუ როგორ ხდება პორტის pin კონტროლის გამარტივებული სიგნალები სურათი 10-2 შეიძლება გადალახოს ალტერნატიული ფუნქციები. ზედმეტი სიგნალები შეიძლება არ იყოს ნავსადგურის ყველა პინში, მაგრამ ეს ფიგურა წარმოადგენს ზოგადი აღწერილობას, რომელიც გამოიყენება AVR მიკროკონტროლერის ოჯახის ყველა პორტის ქინძისთავზე.

ცხრილი 10-2. აბსოლუტური სიგნალების ზოგადი აღწერა ალტერნატიული ფუნქციებისთვის

სიგნალის სახელი სრული სახელი აღწერა
PUOE Pull-up override ჩართვა თუ ეს სიგნალი დაყენებულია, დაწევის ჩართვა კონტროლდება PUOV სიგნალით. თუ ეს სიგნალი გაიწმინდა, ჩართვა ჩართულია როდის

{DDxn, PORTxn, PUD} = 0b010.

პუოვი ჩამოტვირთვის მნიშვნელობის გადალახვა PUOE დაყენების შემთხვევაში, PUOV დაყენების / გასუფთავებისას ჩართვა ჩართულია / გამორთულია, მიუხედავად DDxn, PORTxn და PUD რეესტრის ბიტების დაყენებისა.
DDOE მონაცემთა მიმართულების შეცვლა ჩართვა თუ ეს სიგნალი დაყენებულია, გამომავალი დრაივერის ჩართვა კონტროლდება DDOV სიგნალით. თუ ეს სიგნალი გასუფთავებულია, გამოყვანის დრაივერი ჩართულია DDxn Register ბიტით.
DDOV მონაცემთა მიმართულების მნიშვნელობის გადალახვა თუ DDOE არის დაყენებული, გამომავალი დრაივერი ჩართულია / გამორთულია, როდესაც DDOV არის დაყენებული / გასუფთავებული, მიუხედავად DDxn Register ბიტის პარამეტრისა.
PVOE პორტის მნიშვნელობის შეცვლის ჩართვა თუ ეს სიგნალი დაყენებულია და გამომავალი დრაივერი ჩართულია, პორტის მნიშვნელობას აკონტროლებს PVOV სიგნალი. თუ PVOE გასუფთავებულია და გამომავალი მძღოლი ჩართულია, პორტის მნიშვნელობას აკონტროლებს PORTxn Register ბიტი.
PVOV პორტის მნიშვნელობა გადააჭარბებს მნიშვნელობას თუ PVOE არის დაყენებული, პორტის მნიშვნელობა დაყენებულია PVOV- ზე, მიუხედავად PORTxn Register ბიტის პარამეტრისა.
PTOE პორტის გადართვის შეცვლა ჩართვა თუ PTOE არის დაყენებული, PORTxn რეგისტრაციის ბიტი ინვერსიულია.
დიეო ციფრული შეყვანის ჩართვა შეცვლის შეცვლა ჩართვა თუ ეს ბიტი მითითებულია, ციფრული შეყვანის ჩართვა კონტროლდება DIEOV სიგნალით. ამ სიგნალის გასუფთავების შემთხვევაში, ციფრული შეყვანის ჩართვა განისაზღვრება MCU მდგომარეობით (ნორმალური რეჟიმი, ძილის რეჟიმი).
დიოვი ციფრული შეყვანის ჩართვა შეცვლის მნიშვნელობას თუ DIEOE არის დაყენებული, ციფრული შეყვანა ჩართულია / გამორთულია, როდესაც DIEOV არის დაყენებული / გასუფთავებული, MCU მდგომარეობის მიუხედავად, ნორმალური რეჟიმი, ძილის რეჟიმი.
DI ციფრული შეყვანა ეს არის ციფრული შენატანი ალტერნატიული ფუნქციებისთვის. ნახატზე, სიგნალი უკავშირდება შმიტ-ტრიგერის გამოსვლას, მაგრამ სინქრონიზაციის დაწყებამდე. თუ ციფრული შეყვანა არ გამოიყენება საათის წყაროდ, ალტერნატიული ფუნქციის მქონე მოდული გამოიყენებს საკუთარ სინქრონიზატორს.
AIO ანალოგური შეყვანა / გამოტანა ეს არის ანალოგური შეყვანა / გამომავალი ალტერნატიული ფუნქციებიდან. სიგნალი უკავშირდება პირდაპირ ბალიშს და მისი გამოყენება შესაძლებელია ორი მიმართულებით.

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

პორტის B ალტერნატიული ფუნქციები

პორტის B ქინძისთავები ალტერნატიული ფუნქციით არის ნაჩვენები ცხრილი 10-3.

ცხრილი 10-3. პორტი B ქინძისთავები ალტერნატიული ფუნქციები

პორტის პინი ალტერნატიული ფუნქცია
PB5

RESET: პინის გადაყენება

dW: გამართვა WIRE I / O ADC0: ADC შეყვანის არხი 0

PCINT5: ქინძისთავების შეცვლის შეწყვეტა, წყარო 5

PB4 XTAL2: კრისტალური ოსილატორის გამომავალი CLKO: სისტემის საათის გამომავალი ADC2: ADC შეყვანის არხი 2

OC1B: ტაიმერი / მრიცხველი 1 შეადარე Match B გამოყვანის PCINT4: Pin Change Interrupt 0, წყარო 4

PB3 XTAL1: კრისტალური ოსცილატორის შეყვანა CLKI: გარე საათის შეყვანა ADC3: ADC შეყვანის არხი 3

OC1B: დამატებითი ტაიმერი / მრიცხველი 1 შეადარე მატჩის B გამოყვანის PCINT3: Pin Change Interrupt 0, წყარო 3

PB2 SCK: სერიული საათის შეყვანა ADC1: ADC შეყვანის არხი 1

T0: ტაიმერი / მრიცხველი 0 საათის წყარო USCK: USI საათი (სამი მავთულის რეჟიმი) SCL: USI საათი (ორი მავთულის რეჟიმი) INT0: გარე შეწყვეტა 0 შეყვანის PCINT2: პინის შეცვლის შეწყვეტა 0, წყარო 2

PB1 MISO: SPI მონაცემთა შეყვანის / მონათა მონაცემის გამოტანა AIN1: ანალოგური შედარება, ნეგატიური შეყვანა OC0B: ტაიმერი / მრიცხველი 0 შედარება მატჩის B გამოყვანის OC1A: ტაიმერი / მრიცხველი 1 შედარება მატჩის გამოსავალს DO: მონაცემთა გამომავალი USI (სამსადენო რეჟიმი) PCINT1: ქინძისთავების შეცვლის შეწყვეტა 0, წყარო 1
PB0 MOSI :: SPI Master Data Output / Slave Data Input AIN0: ანალოგური შედარება, პოზიტიური შეყვანა

OC0A: Timer/Counter0 შედარება Match A გამომავალი

OC1A: დამატებითი ტაიმერი / მრიცხველი 1 შედარება Match A Output DI: USI მონაცემთა შეყვანა (სამი მავთულის რეჟიმი)

SDA: USI მონაცემთა შეყვანა (ორი მავთულის რეჟიმი) AREF: გარე ანალოგური მითითება PCINT0: პინის შეცვლის შეწყვეტა 0, წყარო 0

პორტი B, ბიტი 5 - RESET / dW / ADC0 / PCINT5

RESET: გარე გადატვირთვის შეყვანის აქტიური დაბალია და ჩართულია RSTDISBL დაუკრავენის პროგრამირების ("1") საშუალებით. Pullup გააქტიურებულია და გამომავალი დრაივერი და ციფრული შეყვანის დეაქტივაცია ხდება, როდესაც pin გამოიყენება როგორც RESET pin.

dW: როდესაც პროგრამირდება გამართვის პრობლემა WIRE ჩართვა (DWEN) და დაბლოკილი ბიტები არ არის პროგრამირებული, გააქტიურებულია debugWIRE სისტემა სამიზნე მოწყობილობაში. RESET პორტის პინი კონფიგურირებულია, როგორც მავთულის AND (ღია გადინების) ორმხრივი I / O პინი, რომელსაც ჩართვის ჩართვა აქვს და ხდება საკომუნიკაციო კარიბჭე სამიზნესა და ემულატორს შორის.

ADC0: ანალოგური ციფრული გადამყვანი, არხი 0.

PCINT5: Pin შეცვლის წყაროს 5.

პორტი B, ბიტი 4 - XTAL2 / CLKO / ADC2 / OC1B / PCINT4

XTAL2: Chip Clock Oscillator pin 2. გამოიყენება როგორც საათის პინი ჩიპების საათის ყველა წყაროში, გარდა შიდა დაკალიბრებადი RC Oscillator და გარე საათისა. როდესაც გამოიყენება როგორც საათის pin, pin არ შეიძლება გამოყენებულ იქნას როგორც I / O pin. შიდა დაკალიბრებადი RC ოცილატორის ან გარე საათის ჩიპის საათის წყაროს გამოყენებისას, PB4 ემსახურება როგორც ჩვეულებრივ I / O პინს.

CLKO: გამიჯნული სისტემის საათი შეიძლება გამოვიდეს pin PB4- ზე. გაყოფილი სისტემის საათი გამოვა, თუ CKOUT Fuse დაპროგრამებულია, მიუხედავად PORTB4 და DDB4 პარამეტრებისა. ის ასევე გამოვა გადატვირთვის დროს.

ADC2: ანალოგური ციფრული გადამყვანი, არხი 2.

OC1B: გამომავალი შედარება მატჩის გამომავალი: PB4 პინი შეიძლება გამოდგეს როგორც ტაიმერის / მრიცხველის გარე გამომავალი 1 შეადარე M მატჩი B, როდესაც კონფიგურირებულია როგორც გამომავალი (DDB4 ნაკრები). OC1B პინი ასევე გამომავალი პინია PWM რეჟიმის ტაიმერის ფუნქციისთვის.

PCINT4: Pin შეცვლის წყაროს 4.

პორტი B, ბიტი 3 - XTAL1 / CLKI / ADC3 / OC1B / PCINT3

XTAL1: Chip Clock Oscillator pin 1. გამოიყენება ჩიპების საათის ყველა წყაროსთვის, გარდა შიდა დაკალიბრებადი RC ოცილატორისა. როდესაც გამოიყენება როგორც საათის pin, pin არ შეიძლება გამოყენებულ იქნას როგორც I / O pin.

CLKI: საათის შეყვანა საათის გარე წყაროდან, იხ „გარე საათი“ 26 გვერდზე.

ADC3: ანალოგური ციფრული გადამყვანი, არხი 3.

OC1B: ინვერსიული გამომავალი შედარება მატჩის გამომავალი: PB3 პინი შეიძლება გამოდგეს ტაიმერის / მრიცხველის გარე გამოსასვლელად 1 შეადარეთ მატჩი B, როდესაც კონფიგურირებულია გამომავალი სახით (DDB3 კომპლექტი). OC1B პინი ასევე შებრუნებული გამომავალი პინია PWM რეჟიმის ტაიმერის ფუნქციისთვის.

PCINT3: Pin შეცვლის წყაროს 3.

პორტი B, ბიტი 2 - SCK / ADC1 / T0 / USCK / SCL / INT0 / PCINT2

SCK: სამაგისტრო საათის გამომავალი, Slave Clock შეყვანის პინი SPI არხისთვის. როდესაც SPI ჩართულია როგორც Slave, ეს პინი კონფიგურირებულია როგორც შეყვანა, მიუხედავად DDB2- ის პარამეტრისა. როდესაც SPI ჩართულია როგორც სამაგისტრო, ამ პინის მონაცემების მიმართულებას აკონტროლებს DDPB2. როდესაც pin იძულებულია SPI იყოს შეყვანა, დაწევის კონტროლი კვლავ შესაძლებელია PORTB2 ბიტით.

ADC1: ანალოგური ციფრული გადამყვანი, არხი 1.

T0: ტაიმერი / მრიცხველის 0 მრიცხველის წყარო.

USCK: სამსადენიანი რეჟიმის უნივერსალური სერიული ინტერფეისის საათი.

SCL: ორი მავთულის რეჟიმის სერიული საათი USI ორი მავთულის რეჟიმისთვის.

INT0: გარე წყვეტის წყარო 0.

PCINT2: Pin შეცვლის წყაროს 2.

პორტი B, ბიტი 1 - MISO / AIN1 / OC0B / OC1A / DO / PCINT1

MISO: მონაცემთა მაგისტრალური შეყვანა, Slave მონაცემთა გამომავალი პინი SPI არხისთვის. როდესაც SPI ჩართულია როგორც სამაგისტრო პროგრამა, ეს პინი კონფიგურირებულია როგორც შეყვანა, მიუხედავად DDB1 პარამეტრისა. როდესაც SPI ჩართულია როგორც Slave, ამ პინის მონაცემების მიმართულებას აკონტროლებს DDB1. როდესაც pin იძულებულია SPI იყოს შეყვანა, დაწევის კონტროლი კვლავ შესაძლებელია PORTB1 ბიტით.

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

OC0B: გამომავალი შედარება Match გამომავალი. PB1 პინი შეიძლება გამოდგეს როგორც ტაიმერის / მრიცხველის გარე გამომავალი 0 შეადარეთ მატჩი B. PB1 პინი უნდა იყოს კონფიგურირებული როგორც გამომავალი (DDB1 კომპლექტი (ერთი)) ამ ფუნქციის შესასრულებლად. OC0B პინი ასევე გამომავალი პინია PWM რეჟიმის ტაიმერის ფუნქციისთვის.

OC1A: გამომავალი შედარება მატჩის გამომავალი: PB1 პინი შეიძლება გამოდგეს როგორც ტაიმერის / მრიცხველის გარე გამომავალი 1 შეადარე M მატჩი B, როდესაც კონფიგურირებულია როგორც გამომავალი (DDB1 კომპლექტი). OC1A პინი ასევე გამომავალი პინია PWM რეჟიმის ტაიმერის ფუნქციისთვის.

DO: სამსადენიანი რეჟიმის უნივერსალური სერიული ინტერფეისი მონაცემთა გამოცემა. სამსადენიანი რეჟიმი მონაცემთა გამოცემა გადალახავს PORTB1 მნიშვნელობას და ის მიემართება პორტში, როდესაც მონაცემთა მიმართულების ბიტი DDB1 არის დაყენებული (ერთი). PORTB1 მაინც იძლევა დაწევას, თუ მიმართულებაა შეყვანილი და PORTB1 დაყენებულია (ერთი).

PCINT1: Pin შეცვლის წყაროს 1.

პორტი B, ბიტი 0 - MOSI / AIN0 / OC0A / OC1A / DI / SDA / AREF / PCINT0

MOSI: SPI Master Data output, Slave Data input SPI არხისთვის. როდესაც SPI ჩართულია როგორც Slave, ეს პინი კონფიგურირებულია როგორც შეყვანა, მიუხედავად DDB0 პარამეტრისა. როდესაც SPI ჩართულია როგორც სამაგისტრო, ამ პინის მონაცემების მიმართულებას აკონტროლებს DDB0. როდესაც pin იძულებულია SPI იყოს შეყვანა, დაწევა შეიძლება კვლავ კონტროლდეს PORTB0 ბიტით.

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

OC0A: გამომავალი შედარება Match გამომავალი. PB0 ქინძისთავი შეიძლება გამოდგეს როგორც ტაიმერის / მრიცხველის 0 გარე გამომავალი შედარება Match A, როდესაც კონფიგურირებულია გამომავალი სახით (DDB0 ნაკრები (ერთი)). OC0A პინი ასევე გამომავალი პინია PWM რეჟიმის ტაიმერის ფუნქციისთვის.

OC1A: ინვერსიული გამომავალი შედარება მატჩის გამომავალი: PB0 პინი შეიძლება გამოდგეს ტაიმერის / მრიცხველის გარე გამოსასვლელად 1 შეადარეთ მატჩი B, როდესაც კონფიგურირებულია გამომავალი სახით (DDB0 ნაკრები). OC1A პინი ასევე შებრუნებული გამომავალი პინია PWM რეჟიმის ტაიმერის ფუნქციისთვის.

SDA: ორი მავთულის რეჟიმში სერიული ინტერფეისის მონაცემები.

AREF: ADC– ის გარე ანალოგური მითითება. ამოღება და გამომავალი დრაივერი გამორთულია PB0– ზე, როდესაც პინი გამოიყენება როგორც გარე მითითება ან შიდა მოცულობაtage მითითება გარე კონდენსატორთან AREF პინზე.

DI: მონაცემთა შეყვანა USI სამტავთული რეჟიმში. USI სამსადენიანი რეჟიმი არ გადალახავს პორტის ჩვეულებრივ ფუნქციებს, ამიტომ pin უნდა იყოს კონფიგურირებული, როგორც DI ფუნქციის შეყვანა.

PCINT0: Pin შეცვლის წყაროს 0.

ცხრილი 10-4 და ცხრილი 10-5 დაუკავშირე პორტის B ალტერნატიულ ფუნქციებს უჩვენებელ სიგნალებზე სურათი 10-5 გვერდი 58.

ცხრილი 10-4. აბსოლუტური სიგნალები ალტერნატიული ფუნქციებისთვის PB-ში[5:3]

სიგნალის სახელი PB5 / RESET / ADC0 / PCINT5 PB4/ADC2/XTAL2/ OC1B/PCINT4 PB3/ADC3/XTAL1/ OC1B/PCINT3
PUOE

RSTDISBL(1) • DWEN(1)

0 0
პუოვი 1 0 0
DDOE RSTDISBL(1) • DWEN(1) 0 0
DDOV გამართვის სადენიანი გადაცემა 0 0
PVOE 0 OC1B ჩართვა

OC1B ჩართვა

PVOV 0 OC1B OC1B
PTOE 0 0 0
დიეო

RSTDISBL(1) + (PCINT5 • PCIE + ADC0D)

PCINT4 • PCIE + ADC2D PCINT3 • PCIE + ADC3D
დიოვი ADC0D ADC2D ADC3D
DI PCINT5 შეყვანა PCINT4 შეყვანა PCINT3 შეყვანა
AIO RESET შეყვანის, ADC0 შეყვანის ADC2 შეყვანა ADC3 შეყვანა

შენიშვნა: როდესაც დაუკრავენ არის "0" (დაპროგრამებული).

ცხრილი 10-5. აბსოლუტური სიგნალები ალტერნატიული ფუნქციებისთვის PB-ში[2:0]

სიგნალის სახელი PB2/SCK/ADC1/T0/ USCK/SCL/INT0/PCINT2 PB1/MISO/DO/AIN1/ OC1A/OC0B/PCINT1 PB0/MOSI/DI/SDA/AIN0/AR EF/OC1A/OC0A/

PCINT0

PUOE USI_TWO_WIRE 0 USI_TWO_WIRE
პუოვი 0 0 0
DDOE USI_TWO_WIRE 0 USI_TWO_WIRE
DDOV (USI_SCL_HOLD + PORTB2) • DDB2 0  

(SDA + PORTB0) • DDB0

PVOE USI_TWO_WIRE • DDB2 OC0B ჩართვა + OC1A ჩართვა + USI_THREE_WIRE

OC0A ჩართვა + OC1A ჩართვა + (USI_TWO_WIRE

DDB0)

PVOV 0 OC0B + OC1A + DO

OC0A + OC1A

PTOE USITC 0 0
დიეო PCINT2 • PCIE + ADC1D + USISIE PCINT1 • PCIE + AIN1D PCINT0 • PCIE + AIN0D + USISIE
დიოვი ADC1D AIN1D AIN0D
DI T0 / USCK / SCL / INT0 /

PCINT2 შეყვანა

PCINT1 შეყვანა DI / SDA / PCINT0 შეყვანა
AIO ADC1 შეყვანა ანალოგური შედარების უარყოფითი შეყვანა ანალოგური შედარების პოზიტიური შეყვანა

რეგისტრაციის აღწერა

MCUCR - MCU კონტროლის რეესტრი

ცოტა 7 6 5 4 3 2 1 0
0x35 BODS PUD SE SM1 SM0 ბოდსე ISC01 ISC00 MCUCR
წაიკითხეთ/დაწერეთ R R/W R/W R/W R/W R R/W R/W
საწყისი ღირებულება 0 0 0 0 0 0 0 0

ბიტი 6 - PUD: გაყვანა გამორთულია

როდესაც ეს ბიტი იწერება ერთზე, I / O პორტებში დაწევის ზომები გამორთულია მაშინაც კი, თუ DDxn და PORTxn რეესტრები კონფიგურირებულია, რომ ჩართვა მოხდეს ({DDxn, PORTxn} = 0b01). იხილეთ "ქინძისთავის კონფიგურაცია" 54-ე გვერდზე დამატებითი ინფორმაცია ამ ფუნქციის შესახებ.

PORTB - პორტის B მონაცემთა რეესტრი

ცოტა 7 6 5 4 3 2 1 0
0x18 პორტი 5 პორტი 4 პორტი 3 პორტი 2 პორტი 1 პორტი 0 პორტბოლი
წაიკითხეთ/დაწერეთ R R R/W R/W R/W R/W R/W R/W
საწყისი ღირებულება 0 0 0 0 0 0 0 0

DDRB - პორტის B მონაცემთა მიმართულებების რეგისტრი

ცოტა 7 6 5 4 3 2 1 0
0x17 DDB5 DDB4 DDB3 DDB2 DDB1 DDB0 DDRB
წაიკითხეთ/დაწერეთ R R R/W R/W R/W R/W R/W R/W
საწყისი ღირებულება 0 0 0 0 0 0 0 0

PINB - პორტი B შეყვანის ქინძისთავების მისამართი

ცოტა 7 6 5 4 3 2 1 0
0x16 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0 PINB
წაიკითხეთ/დაწერეთ R R R/W R/W R/W R/W R/W R/W
საწყისი ღირებულება 0 0 N/A N/A N/A N/A N/A N/A

8 ბიტიანი ტაიმერი / მრიცხველი 0 PWM– ით

მახასიათებლები

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

ორმაგი ბუფერული გამომავალი შეადარეთ რეგისტრებს

ტაიმერის გასუფთავება მატჩის შედარებისას (ავტომატური ჩატვირთვა)

უპრობლემო, ფაზის სწორი პულსის სიგანის მოდულატორი (PWM)

ცვალებადი PWM პერიოდი

სიხშირის გენერატორი

წყვეტის სამი დამოუკიდებელი წყარო (TOV0, OCF0A და OCF0B)

დასრულდაview

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

8-ბიტიანი ტაიმერის / მრიცხველის გამარტივებული ბლოკ-დიაგრამა ნაჩვენებია აქ სურათი 11-1. I / O ქინძისთავების რეალურად განთავსებისთვის, იხილეთ ”Pinout ATtiny25 / 45/85” მე –2 გვერდზე. პროცესორზე ხელმისაწვდომი I / O რეგისტრები, I / O ბიტებისა და I / O პინების ჩათვლით, ნაჩვენებია სქელით. მოწყობილობის სპეციფიკური I / O რეგისტრაცია და ბიტის ადგილები ჩამოთვლილია აქ "რეგისტრაციის აღწერა" 77 გვერდზე.

ტაიმერი/მრიცხველი (TCNT0) და გამომავალი შედარების რეგისტრები (OCR0A და OCR0B) არის 8-ბიტიანი რეგისტრები. შეწყვეტის მოთხოვნის (შემოკლებით Int.Req. ფიგურაში) სიგნალები ყველა ჩანს ტაიმერის შეფერხების დროშის რეესტრში (TIFR). ყველა შეფერხება ინდივიდუალურად არის ნიღბიანი ტაიმერის შეფერხების ნიღბის რეესტრით (TIMSK). TIFR და TIMSK არ არის ნაჩვენები სურათზე.

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

ორმაგი ბუფერული გამოყვანის შედარების რეგისტრები (OCR0A და OCR0B) შედარებულია ტაიმერის / მრიცხველის მნიშვნელობასთან ნებისმიერ დროს. შედარების შედეგი შეიძლება გამოყენებულ იქნას Waveform გენერატორის მიერ PWM ან ცვლადი სიხშირის გამომავალი გამომავალი შედარების ქინძისთავებზე (OC0A და OC0B). იხილეთ “შედეგების შედარების განყოფილება” გვერდზე 69. დეტალებისთვის. შედარების შესატყვისი ღონისძიება ასევე დააყენებს შედარების დროშას (OCF0A ან OCF0B), რომელიც შეიძლება გამოყენებულ იქნას გამოყვანის შედარების შეწყვეტის მოთხოვნის შესაქმნელად.

განმარტებები

ამ სექციაში ბევრი რეგისტრი და bit მითითება იწერება ზოგადი ფორმით. ქვედა შემთხვევაში ”n” ცვლის ტაიმერის / მრიცხველის ნომერს, ამ შემთხვევაში 0. ქვედა ”x” ცვლის გამომავალი შედარების ერთეულს, ამ შემთხვევაში შეადარე A განყოფილებას ან შეადარე B ერთეულს. პროგრამაში უნდა იყოს გამოყენებული ზუსტი ფორმა, ანუ TCNT0 ტაიმერის / მრიცხველის 0 მთვლელი მნიშვნელობის მისაღებად და ა.შ.

განმარტებები ცხრილი 11-1 ასევე ინტენსიურად გამოიყენება მთელ დოკუმენტში.

ცხრილი 11-1. განმარტებები

მუდმივი აღწერა
ქვედა მრიცხველი BOTTOM– ს აღწევს, როდესაც ის 0x00 გახდება
მაქს მრიცხველი აღწევს მაქსიმუმს, როდესაც ხდება 0xFF (ათობითი 255)
TOP მრიცხველი აღწევს TOP– ს, როდესაც ის ხდება ტოლის თანმიმდევრობის უმაღლესი მნიშვნელობის ტოლი. TOP მნიშვნელობას შეიძლება მივანიჭოთ 0xFF (MAX) ფიქსირებული მნიშვნელობა ან OCR0A რეესტრში შენახული მნიშვნელობა. დავალება დამოკიდებულია მუშაობის რეჟიმში

ტაიმერი / მრიცხველის პრეზელერი და საათის წყაროები

ტაიმერის / მრიცხველის ქრონომეტრაჟი შეიძლება გაკეთდეს საათის შიდა ან გარე წყაროს მიერ. საათის წყაროს ირჩევს Clock Select ლოგიკა, რომელსაც აკონტროლებს Clock Select (c) ბიტები, რომლებიც მდებარეობს ტაიმერის / მრიცხველის კონტროლის რეესტრში (TCCR0B).

საათის შიდა წყარო Prescaler– თან

ტაიმერი/მრიცხველი 0 შეიძლება ჩატარდეს უშუალოდ სისტემის საათის მიერ (CS0[2:0] = 1-ის დაყენებით). ეს უზრუნველყოფს უსწრაფეს მუშაობას, მაქსიმალური ტაიმერის/საათის სიხშირით, რომელიც ტოლია სისტემის საათის სიხშირეს (fCLK_I/O). ალტერნატიულად, პრესკალერის ოთხი ონკანიდან ერთი შეიძლება გამოყენებულ იქნას საათის წყაროდ. წინასწარ მასშტაბურ საათს აქვს ერთის სიხშირე

Prescaler- ის გადაყენება

წინასწარი გამყიდველი თავისუფლად მუშაობს, ანუ მუშაობს დამოუკიდებლად საათის არჩევის ლოგიკის ტაიმერი/მრიცხველი 0. ვინაიდან ქრონომეტრზე გავლენას არ ახდენს ქრონომეტრის/მრიცხველის საათის შერჩევა, წინასწარი გამრიცხველიანების მდგომარეობას ექნება გავლენა იმ სიტუაციებზე, სადაც გამოიყენება წინასწარ განსაზღვრული საათი. ერთი ყოფილიampprescaling artifact არის, როდესაც ტაიმერი/მრიცხველი ჩართულია და დარეკილია წინასწარი შემფასებლის მიერ (6> CS0 [2: 0]> 1). სისტემური საათის ციკლების რაოდენობა ტაიმერის ჩართვის დაწყებიდან პირველი რიცხვის ჩათვლით შეიძლება იყოს 1 -დან N+1 სისტემის საათის ციკლებად, სადაც N უდრის წინასწარ გამრიცხველს (8, 64, 256 ან 1024).

შესაძლებელია გამოიყენოთ Prescaler Reset პროგრამის შესრულებისათვის ტაიმერის / მრიცხველის სინქრონიზაციისათვის.

საათის გარე წყარო

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

პირას დეტექტორის საშუალებით. სურათი 11-2 აჩვენებს T0 სინქრონიზაციისა და კიდეების დეტექტორის ლოგიკის ფუნქციურ ეკვივალენტურ ბლოკ დიაგრამას. რეგისტრები იმართება შიდა სისტემის საათის დადებით კიდეზე (clkI/O). ჩამკეტი გამჭვირვალეა შიდა სისტემის საათის მაღალ პერიოდში.

კიდეების დეტექტორი წარმოქმნის ერთ clkT0 პულსს თითოეული პოზიტიური (CS0[2:0] = 7) ან უარყოფითი (CS0[2:0] = 6) კიდეზე, რომელიც აღმოაჩენს.

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

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

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

არა PWM ტალღის წარმოქმნის რეჟიმებში, შედარების შესატყვისი გამომავალი შეიძლება აიძულოს ერთი ძალის დაწერით Force Output Compare (FOC0x) ბიტზე. შედარების შესატყვისი ფორმით არ დადგინდება OCF0x დროშა, ან ხდება ტაიმერის ხელახლა ჩატვირთვა / გასუფთავება, მაგრამ OC0x პინი განახლდება ისე, როგორც მოხდა შედარების მატჩის ნამდვილი შემთხვევა (COM0x [1: 0] ბიტიანი პარამეტრები განსაზღვრავს, არის თუ არა OC0x pin მითითებული, გასუფთავებული ან გადართული).

შეადარე მატჩის ბლოკირება TCNT0 დაწერეთ

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

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

ვინაიდან TCNT0– ის ნებისმიერი რეჟიმის რეჟიმში ჩაწერა დაბლოკავს ყველა შედარების მატჩებს ერთი ტაიმერის საათის ციკლისთვის, გამოყოფის შედარების განყოფილების გამოყენებისას TCNT0– ის შეცვლისას საფრთხე ემუქრება, მიუხედავად იმისა მუშაობს თუ არა ტაიმერი / მრიცხველი. თუ TCNT0- ზე დაწერილი მნიშვნელობა უდრის OCR0x მნიშვნელობას, შედარება მატჩს გამოტოვებს, რის შედეგადაც წარმოიქმნება არასწორი ტალღის ფორმა. ანალოგიურად, არ დაწეროთ TCNT0 მნიშვნელობის ტოლი BOTTOM, როდესაც მრიცხველი ითვლის თვლას.

OC0x– ის დაყენება უნდა შესრულდეს მონაცემთა მიმართულების რეესტრის დაყენებამდე, პორტის პინის გასასვლელად. OC0x მნიშვნელობის დაყენების უმარტივესი გზაა Force Output Compare (FOC0x) სტრობის ბიტების გამოყენება ნორმალურ რეჟიმში. OC0x რეგისტრები ინარჩუნებენ თავიანთ მნიშვნელობებს მაშინაც კი, როდესაც Waveform Generation რეჟიმებს შორის ცვლილებები ხდება.

გაითვალისწინეთ, რომ COM0x [1: 0] ბიტი არ არის ორმაგად ბუფერირებული, შედარების მნიშვნელობასთან ერთად. COM0x [1: 0] ბიტების შეცვლა ძალაში შევა დაუყოვნებლივ.

შეადარეთ მატჩის გამომავალი ერთეული

გამოყვანის რეჟიმის შედარება (COM0x [1: 0]) ბიტებს აქვთ ორი ფუნქცია. Waveform გენერატორი იყენებს COM0x [1: 0] ბიტს განსაზღვრისათვის Output Compare (OC0x) მდგომარეობა შემდეგ შედარების მატჩზე. ასევე, COM0x [1: 0] ბიტი აკონტროლებს OC0x pin გამომავალი წყაროს. სურათი 11-6 გვიჩვენებს ლოგიკის გამარტივებულ სქემას, რომელსაც გავლენას ახდენს COM0x [1: 0] ბიტიანი პარამეტრი. I / O რეგისტრები, I / O ბიტები და I / O ქინები ფიგურაში ნაჩვენებია სქელით. ნაჩვენებია მხოლოდ ზოგადი I / O პორტის კონტროლის რეგისტრების ის ნაწილები (DDR და PORT), რომლებიც გავლენას ახდენს COM0x [1: 0] ბიტით. OC0x მდგომარეობის მითითებისას, მითითება ხდება შიდა OC0x რეესტრისთვის და არა OC0x pin. სისტემის გადატვირთვის შემთხვევაში, OC0x რეგისტრი აღდგება "0" -ზე.

როდესაც OC0A / OC0B უკავშირდება I / O პინს, COM0A [1: 0] / COM0B [1: 0] ბიტების ფუნქცია დამოკიდებულია WGM0 [2: 0] ბიტის პარამეტრზე. ცხრილი 11-2 აჩვენებს COM0x [1: 0] ბიტიან ფუნქციონირებას, როდესაც WGM0 [2: 0] ბიტი დაყენებულია ჩვეულებრივ ან CTC რეჟიმში (არა PWM).

ცხრილი 11-2. შეადარეთ გამომავალი რეჟიმი, არა-PWM რეჟიმი

COM0A1 COM0B1 COM0A0 COM0B0 აღწერა
0 0 პორტის ნორმალური ფუნქციონირება, OC0A / OC0B გათიშულია.
0 1 ჩართეთ OC0A / OC0B შედარების მატჩზე
1 0 გასუფთავება OC0A / OC0B შედარების მატჩზე
1 1 დააყენეთ OC0A / OC0B შედარების მატჩზე

ცხრილი 11-3 აჩვენებს COM0x [1: 0] ბიტის ფუნქციონირებას, როდესაც WGM0 [2: 0] ბიტი დაყენებულია PWM სწრაფად რეჟიმში.

ცხრილი 11-3. შეადარეთ გამომავალი რეჟიმი, სწრაფი PWM რეჟიმი(1)

COM0A1 COM0B1 COM0A0 COM0B0 აღწერა
0 0 პორტის ნორმალური ფუნქციონირება, OC0A / OC0B გათიშულია.
0 1 დაცულია
1 0 გაასუფთავე OC0A / OC0B შედარების მატჩზე, დააყენე OC0A / OC0B BOTTOM (არა ინვერსიული რეჟიმი)
1 1 დააყენეთ OC0A / OC0B შედარების მატჩზე, გაასუფთავეთ OC0A / OC0B ქვედა წერტილში (ინვერსიის რეჟიმი)

შენიშვნა: განსაკუთრებული შემთხვევა ხდება, როდესაც OCR0A ან OCR0B უდრის TOP-ს და დაყენებულია COM0A1/COM0B1. ამ შემთხვევაში, შედარების დამთხვევა იგნორირებულია, მაგრამ ნაკრები ან გასუფთავება კეთდება BOTTOM-ში. იხ ”სწრაფი PWM რეჟიმი” 73-ე გვერდზე დამატებითი დეტალებისთვის.

ცხრილი 11-4 აჩვენებს COM0x [1: 0] ბიტის ფუნქციონირებას, როდესაც WGM0 [2: 0] ბიტი დაყენებულია ფაზაზე სწორი PWM რეჟიმში.

ცხრილი 11-4. შეადარეთ გამომავალი რეჟიმი, ფაზის სწორი PWM რეჟიმი(1)

COM0A1 COM0B1 COM0A0 COM0B0 აღწერა
0 0 პორტის ნორმალური ფუნქციონირება, OC0A / OC0B გათიშულია.
0 1 დაცულია
1 0 გაასუფთავეთ OC0A / OC0B შედარების მატჩის დროს, როდესაც ათვლით. დადგით OC0A / OC0B შედარების მატჩზე, როდესაც ჩამოთვლით.
1 1 დააყენეთ OC0A / OC0B შედარების მატჩზე, როდესაც აითვალეთ. გაასუფთავეთ OC0A / OC0B შედარების მატჩის დაანგარიშებისას.

შენიშვნა: 1. განსაკუთრებული შემთხვევა ჩნდება, როდესაც OCR0A ან OCR0B უდრის TOP-ს და დაყენებულია COM0A1/COM0B1. ამ შემთხვევაში, Compare Match იგნორირებულია, მაგრამ ნაკრები ან კლირენსი კეთდება TOP-ზე. იხ ”ფაზის სწორი PWM რეჟიმი” 74 გვერდზე დამატებითი დეტალებისთვის.

ბიტი 3: 2 - რეს: დაცულია ბიტი

ეს ბიტი დაცულია ბიტიში ATtiny25 / 45/85 და ყოველთვის წაიკითხება როგორც ნული.

ბიტი 1: 0 - WGM0 [1: 0]: ტალღის ფორმის გენერაციის რეჟიმი

კომბინირებული WGM02 ბიტთან, რომელიც TCCR0B რეგისტრშია ნაპოვნი, ეს ბიტები აკონტროლებენ მრიცხველის თვლის თანმიმდევრობას, წყაროს მაქსიმალური (TOP) მთვლელი მნიშვნელობიდან და რა ტიპის ტალღის წარმოქმნის გამოყენებას, იხილეთ ცხრილი 11-5. ტაიმერის / მრიცხველის ერთეულის მიერ მხარდაჭერილი მუშაობის რეჟიმებია: ნორმალური რეჟიმი (მრიცხველი), წმინდა ტაიმერი შედარების შესატყვისობის (CTC) რეჟიმში და პულსის სიგანის მოდულაციის ორი ტიპი (PWM) რეჟიმები (იხ. ”ოპერაციის რეჟიმები” მე-71 გვერდზე).

ცხრილი 11-5. ტალღის თაობის რეჟიმის ბიტის აღწერა

რეჟიმი WGM 02 WGM 01 WGM 00 მუშაობის ტაიმერი / მრიცხველის რეჟიმი TOP OCRx- ის განახლება: ჩართულია TOV დროშა
0 0 0 0 ნორმალური 0xFF დაუყოვნებლივ მაქს(1)
1 0 0 1 PWM, ფაზა სწორია 0xFF TOP ქვედა(2)
2 0 1 0 CTC ოკრა დაუყოვნებლივ მაქს(1)
3 0 1 1 სწრაფი PWM 0xFF ქვედა(2) მაქს(1)
4 1 0 0 დაცულია
5 1 0 1 PWM, ფაზა სწორია ოკრა TOP ქვედა(2)
6 1 1 0 დაცულია
7 1 1 1 სწრაფი PWM ოკრა ქვედა(2) TOP

ბიტი 7 - FOC0A: ძალის გამომავალი შედარება A

FOC0A ბიტი აქტიურია მხოლოდ მაშინ, როდესაც WGM ბიტი განსაზღვრავს არა PWM რეჟიმს.

ამასთან, მომავალ მოწყობილობებთან თავსებადობის უზრუნველსაყოფად, ეს ბიტი უნდა იყოს ნულის ტოლი, როდესაც PCC რეჟიმში მუშაობისას იწერება TCCR0B. FOC0A ბიტზე ლოგიკური წერისას დაუყოვნებლივ შეადარე მატჩი იძულებითია Waveform Generation განყოფილებაში. OC0A გამომავალი იცვლება COM0A [1: 0] ბიტის პარამეტრის შესაბამისად. გაითვალისწინეთ, რომ FOC0A ბიტი ხორციელდება როგორც strobe. ამიტომ COM0A [1: 0] ბიტებში არსებული მნიშვნელობა განსაზღვრავს იძულებითი შედარების ეფექტს.

FOC0A strobe არ წარმოშობს რაიმე შეფერხებას და არც გაასუფთავებს ტაიმერს CTC რეჟიმში OCR0A– ს გამოყენებით, როგორც TOP. FOC0A ბიტი ყოველთვის იკითხება, როგორც ნულოვანი.

ბიტი 6 - FOC0B: ძალის გამოყვანის შედარება B

FOC0B ბიტი აქტიურია მხოლოდ მაშინ, როდესაც WGM ბიტი განსაზღვრავს არა PWM რეჟიმს.

ამასთან, სამომავლო მოწყობილობებთან თავსებადობის უზრუნველსაყოფად, ეს ბიტი უნდა იყოს ნულის ტოლი, როდესაც PWM რეჟიმში მუშაობისას იწერება TCCR0B. FOC0B ბიტზე ლოგიკური წერისას დაუყოვნებლივ შეადარე მატჩი იძულებითია Waveform Generation განყოფილებაში. OC0B გამომავალი იცვლება COM0B [1: 0] ბიტის პარამეტრის შესაბამისად. გაითვალისწინეთ, რომ FOC0B ბიტი ხორციელდება როგორც strobe. ამიტომ COM0B [1: 0] ბიტებში არსებული მნიშვნელობა განსაზღვრავს იძულებითი შედარების ეფექტს.

FOC0B სტრობი არ შექმნის შეწყვეტას და არც ტაიმერი გაასუფთავებს CTC რეჟიმში OCR0B– ის გამოყენებით, როგორც TOP.

FOC0B ბიტი ყოველთვის იკითხება, როგორც ნულოვანი.

ბიტი 5: 4 - რეს: დაცულია ბიტი

ეს ბიტი დაცულია ბიტიში ATtiny25 / 45/85 და ყოველთვის წაიკითხება როგორც ნული.

ბიტი 3 - WGM02: ტალღის ფორმის წარმოქმნის რეჟიმი

იხილეთ აღწერილობა აქ ”TCCR0A - ტაიმერი / მრიცხველის კონტროლის რეგისტრაცია A” 77-ე გვერდზე.

ბიტი 2: 0 - CS0 [2: 0]: საათის არჩევა

საათის არჩევის სამი ბიტი ირჩევს საათის წყაროს, რომელსაც გამოიყენებს ტაიმერი / მრიცხველი.

ცხრილი 11-6. საათის არჩევა ბიტის აღწერა

CS02 CS01 CS00 აღწერა
0 0 0 საათის წყარო არ არის (ტაიმერი / მრიცხველი შეჩერებულია)
0 0 1 clkI/O/(წინასწარი მასშტაბის გარეშე)
0 1 0 clkI/O/8 (prescaler-დან)
0 1 1 clkI/O/64 (prescaler-დან)
1 0 0 clkI/O/256 (prescaler-დან)
1 0 1 clkI/O/1024 (prescaler-დან)
1 1 0 საათის გარე წყარო T0 პინზე. საათი ზღვარზე ვარდება.
1 1 1 საათის გარე წყარო T0 პინზე. საათი ამოდის კიდეზე.

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

მთვლელი და შეადარე ერთეულები

ტაიმერის / მრიცხველის 1 ზოგადი მოქმედება აღწერილია ასინქრონულ რეჟიმში და სინქრონულ ოპერაციაზე მითითებულია მხოლოდ იმ შემთხვევაში, თუ ამ ორ რეჟიმს შორის განსხვავებაა. სურათი 12-2 ნაჩვენებია ტაიმერის / მრიცხველის 1 სინქრონიზაციის რეესტრის ბლოკის დიაგრამა და სინქრონიზაციის შეფერხებები რეგისტრებს შორის. გაითვალისწინეთ, რომ საათის შეგროვების ყველა დეტალი არ არის ნაჩვენები ნახატზე. ტაიმერის / მრიცხველის 1 რეგისტრის მნიშვნელობები გადის შიდა სინქრონიზაციის რეესტებში, რაც იწვევს შეყვანის სინქრონიზაციის შეფერხებას, სანამ არ ახდენს გავლენას მრიცხველის მუშაობაზე. რეგისტრების TCCR1, GTCCR, OCR1A, OCR1B და OCR1C წაკითხვა შესაძლებელია რეგისტრის დაწერის შემდეგ. წაკითხვის უკანა მნიშვნელობები გადაიდო ტაიმერის / მრიცხველის 1 (TCNT1) რეგისტრისა და დროშებისთვის (OCF1A, OCF1B და TOV1), შეყვანისა და გამოყვანის სინქრონიზაციის გამო.

ტაიმერი / მრიცხველი 1 გამოირჩევა მაღალი გარჩევადობითა და მაღალი სიზუსტით გამოყენებით, წინასწარი შეფასების ქვედა შესაძლებლობებით. მას ასევე შეუძლია მხარი დაუჭიროს ორ ზუსტ, მაღალსიჩქარიან, 8-ბიტიან პულსის სიგანის მოდულატორს, საათის სიჩქარით 64 მეგაჰერცით (ან 32 მეგაჰერცი დაბალი სიჩქარის რეჟიმში). ამ რეჟიმში, ტაიმერი / მრიცხველი 1 და გამომავალი შედარების რეგისტრატორები ემსახურებიან ორმაგ დამოუკიდებელ PWM– ებს, რომლებიც არ გადაფარავს არა ინვერსიულ და ინვერსიულ შედეგებს. Ეხება გვერდი 86 ამ ფუნქციის დეტალური აღწერისთვის. ანალოგიურად, წინასწარი გამოყოფის მაღალი შესაძლებლობები ამ ერთეულს გამოსადეგია უფრო დაბალი სიჩქარის ფუნქციებისთვის ან ზუსტი დროის ფუნქციებისთვის იშვიათი მოქმედებებით.

სურათი 12-2. ტაიმერი/მრიცხველი 1 სინქრონიზაციის რეგისტრის ბლოკის დიაგრამა.

ტაიმერი / მრიცხველი 1 და პრეპარატი საშუალებას აძლევს პროცესორს აწარმოოს ნებისმიერი საათის წყაროდან, ხოლო პრეზერვატორი მუშაობს 64 მჰც (ან 32 მჰც დაბალი სიჩქარის რეჟიმში) PCK საათზე ასინქრონულ რეჟიმში.

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

შემდეგი სურათი 12-3 აჩვენებს ტაიმერის / მრიცხველის ბლოკის დიაგრამას.

ცხრილი 12-1. შედარება რეჟიმი აირჩიეთ PWM რეჟიმში

COM1x1 COM1x0 ეფექტი გამომავალზე შედარება ქინძისთავებზე
0 0 OC1x არ არის დაკავშირებული. OC1x არ არის დაკავშირებული.
0 1 OC1x გასუფთავდა შედარების შესატყვისობით. დააყენეთ whenTCNT1 = 00 $. OC1x დაყენებულია შედარების შესატყვისად. გაიწმინდა, როდესაც TCNT1 = 00 $.
1 0 OC1x გასუფთავდა შედარების შესატყვისი დააყენეთ, როდესაც TCNT1 = 00 $. OC1x არ არის დაკავშირებული.
1 1 OC1x დაყენებულია შედარების შესატყვისად. გაიწმინდა, როდესაც TCNT1 = 00 $. OC1x არ არის დაკავშირებული.

ADC მახასიათებლები

ცხრილი 21-8. ADC მახასიათებლები, ერთჯერადი არხები. TA = -40°C-დან +85°C-მდე

სიმბოლო პარამეტრი მდგომარეობა მინ ტიპი მაქს ერთეულები
რეზოლუცია 10 ბიტები
აბსოლუტური სიზუსტე (მათ შორის INL, DNL და რაოდენობრივი, მოგების და კომპენსაციის შეცდომები) VREF = 4V, VCC = 4V,

ADC საათი = 200 kHz

2 LSB
VREF = 4V, VCC = 4V,

ADC საათი = 1 მეგაჰერციანი

3 LSB
VREF = 4V, VCC = 4V,

ADC საათი = 200 kHz

ხმაურის შემცირების რეჟიმი

1.5 LSB
VREF = 4V, VCC = 4V,

ADC საათი = 1 მეგაჰერციანი

ხმაურის შემცირების რეჟიმი

2.5 LSB
ინტეგრალური არაწრფივი (INL) (სიზუსტე კომპენსაციის შემდეგ და დაკალიბრების შემდეგ) VREF = 4V, VCC = 4V,

ADC საათი = 200 kHz

1 LSB
დიფერენციალური არაწრფივი (DNL) VREF = 4V, VCC = 4V,

ADC საათი = 200 kHz

0.5 LSB
შეცდომის მიღება VREF = 4V, VCC = 4V,

ADC საათი = 200 kHz

2.5 LSB
ოფსეტური შეცდომა VREF = 4V, VCC = 4V,

ADC საათი = 200 kHz

1.5 LSB
კონვერტაციის დრო უფასო მიმდინარე კონვერტაცია 14 280 მკ
საათის სიხშირე 50 1000 kHz
VIN შეყვანის მოცულობაtage GND VREF V
შეყვანის სიჩქარეს 38.4 kHz
AREF გარე მითითება ტtage 2.0 VCC V
VINT შიდა ტომიtage მითითება 1.0 1.1 1.2 V
შიდა 2.56V მითითება (1) VCC > 3.0V 2.3 2.56 2.8 V
RREF 32
წვიმა ანალოგური შეყვანის წინააღმდეგობა 100
ADC გამომავალი 0 1023 LSB

შენიშვნა: 1. ღირებულებები მხოლოდ სახელმძღვანელოა.

ცხრილი 21-9. ADC მახასიათებლები, დიფერენციალური არხები (უნიპოლარული რეჟიმი). TA = -40°C-დან +85°C-მდე

სიმბოლო პარამეტრი მდგომარეობა მინ ტიპი მაქს ერთეულები
რეზოლუცია მოგება = 1x 10 ბიტები
მოგება = 20x 10 ბიტები
აბსოლუტური სიზუსტე (მათ შორის INL, DNL და

კვანტიზაციის, მოგების და კომპენსაციის შეცდომები)

მოგება = 1x

VREF = 4V, VCC = 5V

ADC საათი = 50 - 200 kHz

10.0 LSB
მოგება = 20x

VREF = 4V, VCC = 5V

ADC საათი = 50 - 200 kHz

20.0 LSB
ინტეგრალური არაწრფივი (INL) (სიზუსტე ოფსტის და მოგების კალიბრაციის შემდეგ) მოგება = 1x

VREF = 4V, VCC = 5V

ADC საათი = 50 - 200 kHz

4.0 LSB
მოგება = 20x

VREF = 4V, VCC = 5V

ADC საათი = 50 - 200 kHz

10.0 LSB
შეცდომის მიღება მოგება = 1x 10.0 LSB
მოგება = 20x 15.0 LSB
ოფსეტური შეცდომა მოგება = 1x

VREF = 4V, VCC = 5V

ADC საათი = 50 - 200 kHz

3.0 LSB
მოგება = 20x

VREF = 4V, VCC = 5V

ADC საათი = 50 - 200 kHz

4.0 LSB
კონვერტაციის დრო უფასო მიმდინარე კონვერტაცია 70 280 მკ
საათის სიხშირე 50 200 kHz
VIN შეყვანის მოცულობაtage GND VCC V
VDIFF შეყვანის დიფერენციალური ტtage VREF/Gain V
შეყვანის სიჩქარეს 4 kHz
AREF გარე მითითება ტtage 2.0 VCC - 1.0 V
VINT შიდა ტომიtage მითითება 1.0 1.1 1.2 V
შიდა 2.56V მითითება (1) VCC > 3.0V 2.3 2.56 2.8 V
RREF მიმართვის შეყვანის წინააღმდეგობა 32
წვიმა ანალოგური შეყვანის წინააღმდეგობა 100
ADC კონვერტაციის შედეგი 0 1023 LSB

შენიშვნა: ღირებულებები მხოლოდ სახელმძღვანელოა.

ცხრილი 21-10. ADC მახასიათებლები, დიფერენციალური არხები (ბიპოლარული რეჟიმი). TA = -40°C-დან +85°C-მდე

სიმბოლო პარამეტრი მდგომარეობა მინ ტიპი მაქს ერთეულები
რეზოლუცია მოგება = 1x 10 ბიტები
მოგება = 20x 10 ბიტები
აბსოლუტური სიზუსტე (მათ შორის INL, DNL და

კვანტიზაციის, მოგების და კომპენსაციის შეცდომები)

მოგება = 1x

VREF = 4V, VCC = 5V

ADC საათი = 50 - 200 kHz

8.0 LSB
მოგება = 20x

VREF = 4V, VCC = 5V

ADC საათი = 50 - 200 kHz

8.0 LSB
ინტეგრალური არაწრფივი (INL) (სიზუსტე ოფსტის და მოგების კალიბრაციის შემდეგ) მოგება = 1x

VREF = 4V, VCC = 5V

ADC საათი = 50 - 200 kHz

4.0 LSB
მოგება = 20x

VREF = 4V, VCC = 5V

ADC საათი = 50 - 200 kHz

5.0 LSB
შეცდომის მიღება მოგება = 1x 4.0 LSB
მოგება = 20x 5.0 LSB
ოფსეტური შეცდომა მოგება = 1x

VREF = 4V, VCC = 5V

ADC საათი = 50 - 200 kHz

3.0 LSB
მოგება = 20x

VREF = 4V, VCC = 5V

ADC საათი = 50 - 200 kHz

4.0 LSB
კონვერტაციის დრო უფასო მიმდინარე კონვერტაცია 70 280 მკ
საათის სიხშირე 50 200 kHz
VIN შეყვანის მოცულობაtage GND VCC V
VDIFF შეყვანის დიფერენციალური ტtage VREF/Gain V
შეყვანის სიჩქარეს 4 kHz
AREF გარე მითითება ტtage 2.0 VCC - 1.0 V
VINT შიდა ტომიtage მითითება 1.0 1.1 1.2 V
შიდა 2.56V მითითება (1) VCC > 3.0V 2.3 2.56 2.8 V
RREF მიმართვის შეყვანის წინააღმდეგობა 32
წვიმა ანალოგური შეყვანის წინააღმდეგობა 100
ADC კონვერტაციის შედეგი -512 511 LSB

ინსტრუქციის ნაკრების შეჯამება

მნემონიკა ოპერანდები აღწერა ოპერაცია დროშები # საათები
არითმეტიკული და ლოგიკური ინსტრუქციები
დამატება რდ., რრ დაამატეთ ორი რეგისტრი Rd ← Rd + Rr Z, C, N, V, H 1
ADC რდ., რრ დაამატეთ ორი რეგისტრის გადატანა Rd ← Rd + Rr + C Z, C, N, V, H 1
ADIW რდლ, კ დაუმატეთ დაუყოვნებლივი სიტყვა Rdh:Rdl ← Rdh:Rdl + K Z, C, N, V, S 2
SUB რდ., რრ ორი რეგისტრის გამოკლება Rd ← Rd – Rr Z, C, N, V, H 1
SUBI რდ, კ გამოკლეთ რეგისტრიდან მუდმივი Rd ← Rd – K Z, C, N, V, H 1
SBC რდ., რრ გამოკლება ორი რეგისტრის გატარებით Rd ← Rd – Rr – C Z, C, N, V, H 1
SBCI რდ, კ გამოკლება Carry Constant- ით Reg. Rd ← Rd – K – C Z, C, N, V, H 1
SBIW რდლ, კ გამოაკელი დაუყოვნებლივ Word- ს Rdh:Rdl ← Rdh:Rdl – კ Z, C, N, V, S 2
და რდ., რრ ლოგიკური და რეგისტრები Rd ← Rd ∙ Rr Z, N, V 1
ANDI რდ, კ ლოგიკური და რეგისტრაცია და მუდმივი Rd ← Rd ∙ K Z, N, V 1
OR რდ., რრ ლოგიკური ან რეგისტრები Rd ← Rd v Rr Z, N, V 1
ORI რდ, კ ლოგიკური ან რეგისტრაცია და მუდმივი Rd ← Rd v K Z, N, V 1
EOR რდ., რრ ექსკლუზიური ან რეგისტრები Rd ← Rd ⊕ Rr Z, N, V 1
COM Rd ერთი კომპლემენტი Rd ← 0xFF − Rd Z, C, N, V 1
ნეგ Rd ორი კომპლემენტი Rd ← 0x00 − Rd Z, C, N, V, H 1
SBR რდ, კ დააყენეთ ბიტი (ებ) ი რეგისტრაციაში Rd ← Rd v K Z, N, V 1
CBR რდ, კ სარეგისტრაციო მონაცემების გასუფთავება Rd ← Rd ∙ (0xFF – K) Z, N, V 1
INC Rd მატება Rd ← Rd + 1 Z, N, V 1
დეკ Rd შემცირება Rd ← Rd − 1 Z, N, V 1
TST Rd ტესტი ნულის ან მინუსისთვის Rd ← Rd ∙ Rd Z, N, V 1
CLR Rd რეგისტრაციის გასუფთავება Rd ← Rd ⊕ Rd Z, N, V 1
SER Rd რეგისტრაციის დაყენება Rd ← 0xFF არცერთი 1
ფილიალის ინსტრუქციები
RJMP k შედარებითი ნახტომი კომპიუტერი ← კომპიუტერი + k + 1 არცერთი 2
IJMP არაპირდაპირი გადასვლა (Z) კომპიუტერი ← ზ არცერთი 2
დარეკვა k შედარებითი საქვეუწყებო ზარი კომპიუტერი ← კომპიუტერი + k + 1 არცერთი 3
ICALL არაპირდაპირი ზარი (Z) კომპიუტერი ← ზ არცერთი 3
RET ქვეპროგრამის დაბრუნება კომპიუტერი ← STACK არცერთი 4
RETI შეუშალე დაბრუნება კომპიუტერი ← STACK I 4
CPSE რდ., რრ შედარება, გამოტოვე თუ ტოლია თუ (Rd = Rr) PC ← PC + 2 ან 3 არცერთი 1/2/3
CP რდ., რრ შეადარე Rd − Rr Z, N, V, C, H 1
CPC რდ., რრ შეადარე Carry- ს Rd - Rr - C Z, N, V, C, H 1
CPI რდ, კ შეადარე რეგისტრაცია დაუყოვნებლივ Rd − K Z, N, V, C, H 1
SBRC რრ, ბ გამოტოვეთ, თუ რეგისტრაციაში ცოტათი გაიწმინდა თუ (Rr(b)=0) PC ← PC + 2 ან 3 არცერთი 1/2/3
SBRS რრ, ბ გამოტოვეთ, თუ რეგისტრში მითითებულია ბიტი თუ (Rr(b)=1) PC ← PC + 2 ან 3 არცერთი 1/2/3
SBIC პ, ბ გამოტოვეთ, თუ I / O რეგისტრაცია გაიწმინდა თუ (P(b)=0) PC ← PC + 2 ან 3 არცერთი 1/2/3
SBIS პ, ბ გამოტოვეთ, თუ I / O რეგისტრაციაში არის დაყენებული Bit თუ (P(b)=1) PC ← PC + 2 ან 3 არცერთი 1/2/3
BRBS ს, კ ფილიალი თუ მითითებულია სტატუსის დროშა თუ (SREG(s) = 1) მაშინ PC←PC+k + 1 არცერთი 1/2
BRBC ს, კ ფილიალი, თუ სტატუსის დროშა გაიწმინდა თუ (SREG(s) = 0) მაშინ PC←PC+k + 1 არცერთი 1/2
BREQ k ფილიალი თუ თანაბარი თუ (Z = 1) მაშინ PC ← PC + k + 1 არცერთი 1/2
BRNE k ფილიალი თუ არა თანაბარი თუ (Z = 0) მაშინ PC ← PC + k + 1 არცერთი 1/2
BRCS k ფილიალი თუ Carry Set თუ (C = 1) მაშინ PC ← PC + k + 1 არცერთი 1/2
BRCC k ფილიალი თუ Carry გაიწმინდა თუ (C = 0) მაშინ PC ← PC + k + 1 არცერთი 1/2
BRSH k ფილიალი თუ იგივე ან უფრო მაღალი თუ (C = 0) მაშინ PC ← PC + k + 1 არცერთი 1/2
BRLO k ფილიალი თუ ქვედა თუ (C = 1) მაშინ PC ← PC + k + 1 არცერთი 1/2
BRMI k ფილიალი თუ მინუსი თუ (N = 1) მაშინ PC ← PC + k + 1 არცერთი 1/2
BRPL k ფილიალი თუ პლუს თუ (N = 0) მაშინ PC ← PC + k + 1 არცერთი 1/2
BRGE k ფილიალი თუ უფრო დიდი ან ტოლია, ხელმოწერილია თუ (N ⊕ V= 0) მაშინ PC ← PC + k + 1 არცერთი 1/2
BRLT k ფილიალი, თუ ნულზე ნაკლებია, ხელმოწერილია თუ (N ⊕ V= 1) მაშინ PC ← PC + k + 1 არცერთი 1/2
BRHS k ფილიალი, თუ ნახევარი Carry დროშა მითითებული თუ (H = 1) მაშინ PC ← PC + k + 1 არცერთი 1/2
BRHC k ფილიალი, თუ ნახევარი დროშის დროშა გაიწმინდა თუ (H = 0) მაშინ PC ← PC + k + 1 არცერთი 1/2
BRTS k ფილიალი, თუ T დროშის ნაკრები თუ (T = 1) მაშინ PC ← PC + k + 1 არცერთი 1/2
BRTC k ფილიალი, თუ T დროშა გაიწმინდა თუ (T = 0) მაშინ PC ← PC + k + 1 არცერთი 1/2
BRVS k ფილიალი, თუ დაყენებულია გადავსების დროშა თუ (V = 1) მაშინ PC ← PC + k + 1 არცერთი 1/2
BRVC k ფილიალი თუ გაწმენდილია გადავსების დროშა თუ (V = 0) მაშინ PC ← PC + k + 1 არცერთი 1/2
მოისმინე k ფილიალი, თუ ჩართვა ჩართულია თუ (I = 1) მაშინ PC ← PC + k + 1 არცერთი 1/2
პატარძალი k ფილიალი თუ გათიშულია თუ (I = 0) მაშინ PC ← PC + k + 1 არცერთი 1/2
ბიტი და ბიტ ტესტის ინსტრუქციები
SBI პ, ბ დააყენეთ ბიტი I / O რეგისტრაციაში I/O(P,b) ← 1 არცერთი 2
CBI პ, ბ გაიწმინდე ბიტი I / O რეგისტრაციაში I/O(P,b) ← 0 არცერთი 2
LSL Rd ლოგიკური Shift მარცხნივ Rd(n+1) ← Rd(n), Rd(0) ← 0 Z, C, N, V 1
LSR Rd ლოგიკური Shift მარჯვნივ Rd(n) ← Rd(n+1), Rd(7) ← 0 Z, C, N, V 1
როლი Rd გადაატარეთ მარცხნივ გადატანა Rd(0)←C,Rd(n+1)← Rd(n),C←Rd(7) Z, C, N, V 1
ROR Rd მარჯვნივ გადატრიალება Rd(7)←C,Rd(n)← Rd(n+1),C←Rd(0) Z, C, N, V 1
ASR Rd არითმეტიკული ცვლა მარჯვნივ Rd(n) ← Rd(n+1), n=0..6 Z, C, N, V 1
მნემონიკა ოპერანდები აღწერა ოპერაცია დროშები # საათები
SWAP Rd შეცვალეთ Nibbles Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) არცერთი 1
BSET s დროშის ნაკრები SREG(s) ← 1 SREG (s) 1
BCLR s დროშა გასუფთავებულია SREG(s) ← 0 SREG (s) 1
BST რრ, ბ Bit Store რეგისტრიდან T- მდე T ← Rr(b) T 1
BLD რდ, ბ ცოტათი დატვირთვა T- დან რეგისტრაციისთვის Rd(b) ← T არცერთი 1
SEC დააყენეთ Carry C ← 1 C 1
CLC გასუფთავება C ← 0 C 1
SEN დააყენეთ უარყოფითი დროშა N ← 1 N 1
CLN უარყოფითი დროშის გასუფთავება N ← 0 N 1
SEZ დააყენეთ ნულოვანი დროშა Z ← 1 Z 1
CLZ წმინდა ნულოვანი დროშა Z ← 0 Z 1
SEI გლობალური შეფერხების ჩართვა მე ← 1 I 1
CLI გლობალური შეწყვეტის გამორთვა მე ← 0 I 1
SES დააყენეთ ხელმოწერილი სატესტო დროშა S ← 1 S 1
CLS ხელმოწერილი სატესტო დროშის გასუფთავება S ← 0 S 1
SEV დააყენეთ Twos Complement Overflow. V ← 1 V 1
CLV წმინდა Twos შეავსებს გადავსებას V ← 0 V 1
SET დააყენეთ T SREG- ში T ← 1 T 1
CLT გაწმინდე T SREG- ში T ← 0 T 1
SEH დააყენეთ ნახევარი დროშის დროშა SREG- ში H ← 1 H 1
CLH გაასუფთავეთ დროშის ნახევარი დროშა SREG- ში H ← 0 H 1
მონაცემთა გადაცემის ინსტრუქცია
MOV რდ., რრ გადაადგილება რეგისტრებს შორის Rd ← Rr არცერთი 1
MOVW რდ., რრ დააკოპირეთ რეგისტრაციის სიტყვა Rd+1:Rd ← Rr+1:Rr არცერთი 1
LDI რდ, კ ჩატვირთვა დაუყოვნებლივ Rd ← K არცერთი 1
LD Rd, X იტვირთება არაპირდაპირი გზით Rd ← (X) არცერთი 2
LD Rd, X + ჩატვირთეთ ირიბი და Post-Inc. Rd ← (X), X ← X + 1 არცერთი 2
LD რდ, - X ჩატვირთეთ არაპირდაპირი და წინა დეკემბერი. X ← X – 1, Rd ← (X) არცერთი 2
LD Rd, Y იტვირთება არაპირდაპირი გზით Rd ← (Y) არცერთი 2
LD Rd, Y + ჩატვირთეთ ირიბი და Post-Inc. Rd ← (Y), Y ← Y + 1 არცერთი 2
LD რდ, - ი ჩატვირთეთ არაპირდაპირი და წინა დეკემბერი. Y ← Y – 1, Rd ← (Y) არცერთი 2
LDD Rd, Y + q იტვირთება არაპირდაპირი გზით გადაადგილებით Rd ← (Y + q) არცერთი 2
LD რდ, ზ იტვირთება არაპირდაპირი გზით Rd ← (Z) არცერთი 2
LD Rd, Z + ჩატვირთეთ ირიბი და Post-Inc. Rd ← (Z), Z ← Z+1 არცერთი 2
LD რდ, -ზ ჩატვირთეთ არაპირდაპირი და წინა დეკემბერი. Z ← Z – 1, Rd ← (Z) არცერთი 2
LDD Rd, Z + q იტვირთება არაპირდაპირი გზით გადაადგილებით Rd ← (Z + q) არცერთი 2
LDS რდ, კ პირდაპირ ჩატვირთეთ SRAM– დან Rd ← (k) არცერთი 2
ST X, რრ ინახება არაპირდაპირი გზით (X) ← Rr არცერთი 2
ST X +, რრ ინახეთ არაპირდაპირი და Post-Inc. (X) ← Rr, X ← X + 1 არცერთი 2
ST - X, რრ შეინახეთ არაპირდაპირი და წინასაპროექტოდ. X ← X – 1, (X) ← Rr არცერთი 2
ST Y, რრ ინახება არაპირდაპირი გზით (Y) ← Rr არცერთი 2
ST Y +, რრ ინახეთ არაპირდაპირი და Post-Inc. (Y) ← Rr, Y ← Y + 1 არცერთი 2
ST - Y, Rr შეინახეთ არაპირდაპირი და წინასაპროექტოდ. Y ← Y – 1, (Y) ← Rr არცერთი 2
სგგდ Y + q, რრ ინახება ირიბად გადაადგილებით (Y + q) ← Rr არცერთი 2
ST ზ, რრ ინახება არაპირდაპირი გზით (Z) ← Rr არცერთი 2
ST Z +, რრ ინახეთ არაპირდაპირი და Post-Inc. (Z) ← Rr, Z ← Z + 1 არცერთი 2
ST -ზ, რრ შეინახეთ არაპირდაპირი და წინასაპროექტოდ. Z ← Z – 1, (Z) ← Rr არცერთი 2
სგგდ Z + q, Rr ინახება ირიბად გადაადგილებით (Z + q) ← Rr არცერთი 2
STS კ, რრ შეინახეთ პირდაპირ SRAM– ში (ლ) ← Rr არცერთი 2
LPM ჩატვირთეთ პროგრამის მეხსიერება R0 ← (Z) არცერთი 3
LPM რდ, ზ ჩატვირთეთ პროგრამის მეხსიერება Rd ← (Z) არცერთი 3
LPM Rd, Z + ჩატვირთეთ პროგრამის მეხსიერება და Post-Inc Rd ← (Z), Z ← Z+1 არცერთი 3
SPM შეინახეთ პროგრამის მეხსიერება (z) ← R1:R0 არცერთი
IN რდ, პ პორტში Rd ← P არცერთი 1
გარეთ P, რრ გარეთ პორტი P ← Rr არცერთი 1
PUSH Rr დააჭირეთ რეგისტრაციას Stack- ზე დასტა ← Rr არცერთი 2
POP Rd პოპ რეგისტრაცია სტეკიდან Rd ← STACK არცერთი 2
MCU კონტროლის ინსტრუქციები
NOP არანაირი ოპერაცია არცერთი 1
ძილი დაიძინე (იხილეთ კონკრეტული აღწერა ძილის ფუნქციისთვის) არცერთი 1
WDR მაკონტროლებელი სისტემის გადაყენება (იხილეთ კონკრეტული აღწერილობა WDR / ტაიმერისთვის) არცერთი 1
BREAK შესვენება
სიჩქარე (მეგაჰერცი) (1) მიწოდება ტომიtage (V) ტემპერატურის დიაპაზონი პაკეტი (2) შეკვეთის კოდი (3)
10 1.8 – 5.5 სამრეწველო

(-40 ° C- დან + 85 ° C) (4)

8P3 ATtiny45V-10PU
8S2 ATtiny45V-10SU ATtiny45V-10SUR ATtiny45V-10SH ATtiny45V-10SHR
8X ATtiny45V-10XU ATtiny45V-10XUR
20M1 ATtiny45V-10MU ATtiny45V-10MUR
20 2.7 – 5.5 სამრეწველო

(-40 ° C- დან + 85 ° C) (4)

8P3 ATtiny45-20PU
8S2 ATtiny45-20SU ATtiny45-20SUR

ATtiny45-20SH ATtiny45-20SHR

8X ATtiny45-20XU ATtiny45-20XUR
20M1 ATtiny45-20MU ATtiny45-20MUR

შენიშვნები: 1. სიჩქარის წინააღმდეგ მიწოდების მოცულობითtagე, იხილეთ განყოფილება 21.3 "სიჩქარე" 163 გვერდზე.

ყველა შეფუთვა არ შეიცავს Pb– ს, ჰალოიდს, და მთლიანად მწვანე და ისინი შეესაბამება საშიში ნივთიერებების შეზღუდვის ევროპულ დირექტივას (RoHS).

კოდის ინდიკატორები

H: NiPdAu ტყვიის დასრულება

U: მქრქალი თუნუქი

R: ფირზე და reel

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

ერატა

Errata ATtiny 25

ამ განყოფილებაში შესწორებული წერილი ეხება ATtiny25 მოწყობილობის გადასინჯვას.

Rev D - F

არ არის ცნობილი errata.

Rev B - C

EEPROM წაკითხვა შეიძლება ჩავარდეს დაბალი მიწოდების მოცულობითtage / დაბალი საათის სიხშირე

EEPROM წაკითხვა შეიძლება ჩავარდეს დაბალი მიწოდების მოცულობითtage / დაბალი საათის სიხშირე

ცდილობს წაიკითხოს EEPROM დაბალი საათის სიხშირეზე და/ან დაბალი მიწოდების მოცულობითtage შეიძლება გამოიწვიოს არასწორი მონაცემები.

პრობლემის აღმოფხვრა / გადაჭრა

არ გამოიყენოთ EEPROM როდესაც საათის სიხშირე 1 მჰც -ზე ნაკლებია და მიწოდების მოცულობაtage არის 2V ქვემოთ. თუ ოპერაციული სიხშირე არ შეიძლება გაიზარდოს 1 MHz– ზე, მიაწოდეთ მოცულობაtage უნდა იყოს 2 ვ -ზე მეტი. ანალოგიურად, თუ მიწოდება voltage არ შეიძლება გაიზარდოს 2V– ზე, მაშინ მუშაობის სიხშირე უნდა იყოს 1 MHz– ზე მეტი.

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

რევ ა

არა სampხელმძღვანელობდა.

Errata ATtiny 45

ამ განყოფილებაში შესწორებული წერილი ეხება ATtiny45 მოწყობილობის გადასინჯვას.

Rev F - G

არ არის ცნობილი errata

Rev D - E

EEPROM წაკითხვა შეიძლება ჩავარდეს დაბალი მიწოდების მოცულობითtage / დაბალი საათის სიხშირე

EEPROM წაკითხვა შეიძლება ჩავარდეს დაბალი მიწოდების მოცულობითtage / დაბალი საათის სიხშირე

ცდილობს წაიკითხოს EEPROM დაბალი საათის სიხშირეზე და/ან დაბალი მიწოდების მოცულობითtage შეიძლება გამოიწვიოს არასწორი მონაცემები.

პრობლემის აღმოფხვრა / გადაჭრა

არ გამოიყენოთ EEPROM როდესაც საათის სიხშირე 1 მჰც -ზე ნაკლებია და მიწოდების მოცულობაtage არის 2V ქვემოთ. თუ ოპერაციული სიხშირე არ შეიძლება გაიზარდოს 1 MHz– ზე, მიაწოდეთ მოცულობაtage უნდა იყოს 2 ვ -ზე მეტი. ანალოგიურად, თუ მიწოდება voltage არ შეიძლება გაიზარდოს 2V– ზე, მაშინ მუშაობის სიხშირე უნდა იყოს 1 MHz– ზე მეტი.

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

Rev B - C

PLL არ იკეტება

პროგრამის კოდიდან წაკითხული EEPROM არ მუშაობს Lock Bit Mode 3-ში

EEPROM წაკითხვა შეიძლება ჩავარდეს დაბალი მიწოდების მოცულობითtage / დაბალი საათის სიხშირე

ტაიმერის მრიცხველი 1 PWM გამომავალი გენერაცია OC1B- XOC1B– ზე არ მუშაობს სწორად

PLL არ იკეტება

როდესაც 6.0 მეგაჰერციან სიხშირეზე ნაკლებია, PLL არ დაიბლოკება

პრობლემის გადაჭრა / გადაჭრა

PLL– ის გამოყენებისას გაუშვით 6.0 მეგაჰერციანი ან მეტი სიჩქარით.

პროგრამის კოდიდან წაკითხული EEPROM არ მუშაობს Lock Bit Mode 3-ში

როდესაც მეხსიერების ჩაკეტვის ბიტი LB2 და LB1 პროგრამირდება 3 რეჟიმში, EEPROM წაკითხული არ მუშაობს აპლიკაციის კოდიდან.

პრობლემის მოგვარება / გარშემო მუშაობა

არ დააყენოთ Lock Bit Protection Mode 3, როდესაც პროგრამის კოდი უნდა წავიკითხოთ EEPROM– დან.

EEPROM წაკითხვა შეიძლება ჩავარდეს დაბალი მიწოდების მოცულობითtage / დაბალი საათის სიხშირე

ცდილობს წაიკითხოს EEPROM დაბალი საათის სიხშირეზე და/ან დაბალი მიწოდების მოცულობითtage შეიძლება გამოიწვიოს არასწორი მონაცემები.

პრობლემის აღმოფხვრა / გადაჭრა

არ გამოიყენოთ EEPROM როდესაც საათის სიხშირე 1 მჰც -ზე ნაკლებია და მიწოდების მოცულობაtage არის 2V ქვემოთ. თუ ოპერაციული სიხშირე არ შეიძლება გაიზარდოს 1 MHz– ზე, მიაწოდეთ მოცულობაtage უნდა იყოს 2 ვ -ზე მეტი. ანალოგიურად, თუ მიწოდება voltage არ შეიძლება გაიზარდოს 2V– ზე, მაშინ მუშაობის სიხშირე უნდა იყოს 1 MHz– ზე მეტი.

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

ტაიმერის მრიცხველი 1 PWM გამომავალი გენერაცია OC1B - XOC1B– ზე სწორად არ მუშაობს

ტაიმერის მრიცხველის 1 PWM გამომავალი OC1B-XOC1B არ მუშაობს სწორად. მხოლოდ იმ შემთხვევაში, როდესაც საკონტროლო ბიტები, COM1B1 და COM1B0 იმავე რეჟიმში არიან, როგორც COM1A1 და COM1A0, შესაბამისად, OC1B-XOC1B გამოსწორება მუშაობს სწორად.

პრობლემის მოგვარება / გარშემო მუშაობა

ერთადერთი გამოსავალი არის იგივე კონტროლის პარამეტრების გამოყენება COM1A [1: 0] და COM1B [1: 0] საკონტროლო ბიტებზე, იხილეთ მონაცემთა ცხრილის ცხრილი 14–4. პრობლემა დაფიქსირდა Tiny45 rev D– სთვის.

რევ ა

ენერგიის მოხმარება ძალიან მაღალია

DebugWIRE კარგავს კომუნიკაციას, როდესაც ერთჯერადად შედის შეწყვეტებში

PLL არ იკეტება

პროგრამის კოდიდან წაკითხული EEPROM არ მუშაობს Lock Bit Mode 3-ში

EEPROM წაკითხვა შეიძლება ჩავარდეს დაბალი მიწოდების მოცულობითtage / დაბალი საათის სიხშირე

ენერგიის მოხმარება ძალიან მაღალია

სამი სიტუაცია გამოიწვევს ენერგიის მოხმარების ძალიან მაღალ ენერგიას. Ესენი არიან:

გარე საათი ირჩევა დაუკრავებით, მაგრამ გამავალი / პორტი კვლავ ჩართულია, როგორც გამომავალი.

EEPROM იკითხება გამორთვამდე.

VCC არის 4.5 ვოლტი ან მეტი.

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

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

ცნობები

დატოვე კომენტარი

თქვენი ელფოსტის მისამართი არ გამოქვეყნდება. მონიშნულია აუცილებელი ველები *