ເນື້ອໃນ ເຊື່ອງ

Atmel

Atmel 8-bit AVR Microcontroller ກັບ 2/4/8K Bytes In-System Programmable Flashຊິບ

 

ຄຸນສົມບັດ

  • ປະສິດທິພາບສູງ, ພະລັງງານຕໍ່າ AVR® 8-Bit Microcontroller
  • ສະຖາປັດຕະຍະກຳ RISC ຂັ້ນສູງ
  • 120 ຄໍາແນະນໍາທີ່ມີປະສິດທິພາບ - ການປະຕິບັດຮອບວຽນດຽວຫຼາຍທີ່ສຸດ
  • 32 x 8 ຈຸດປະສົງທົ່ວໄປທີ່ລົງທະບຽນເຮັດວຽກ
  • ການດໍາເນີນງານຄົງທີ່ຢ່າງເຕັມສ່ວນ
  • ໂປຣແກຣມທີ່ບໍ່ປ່ຽນແປງ ແລະ ຄວາມຊົງຈຳຂອງຂໍ້ມູນ
  • 2/4/8K Bytes ຂອງ In-System Programmable Program Memory Flash
  • ຄວາມອົດທົນ: 10,000 ຂຽນ/ລຶບ ຮອບວຽນ
  • 128/256/512 Bytes ໃນລະບົບ Programmable EEPROM
  • ຄວາມອົດທົນ: 100,000 ຂຽນ/ລຶບ ຮອບວຽນ
  • 128/256/512 Bytes SRAM ພາຍໃນ
  • Programming Lock ສໍາລັບໂປລແກລມ Flash ດ້ວຍຕົນເອງແລະຄວາມປອດໄພຂໍ້ມູນ EEPROM

ຄຸນສົມບັດອຸປະກອນຕໍ່ພ່ວງ

  • 8-bit Timer/Counter ກັບ Prescaler ແລະສອງຊ່ອງ PWM
  • 8-bit ຈັບເວລາຄວາມໄວສູງ / Counter ກັບ Prescaler ແຍກຕ່າງຫາກ
  • 2 ຜົນຜະລິດ PWM ຄວາມຖີ່ສູງທີ່ມີຜົນຜະລິດແຍກຕ່າງຫາກປຽບທຽບການລົງທະບຽນ
  • Programmable Dead Time Generator
  • USI – Universal Serial Interface ກັບ Start Condition Detector
  • ADC 10-ບິດ

4 ຊ່ອງທາງການສິ້ນສຸດດຽວ

2 ຊ່ອງ ADC ທີ່ແຕກຕ່າງຄູ່ກັບ Programmable Gain (1x, 20x)

ການວັດແທກອຸນຫະພູມ

ຕົວຈັບເວລາ Watchdog ທີ່ສາມາດວາງແຜນໄດ້ດ້ວຍ Oscillator On-chip ແຍກຕ່າງຫາກ

On-chip Analog Comparator

ຄຸນນະສົມບັດພິເສດຂອງ Microcontroller

debugWIRE ລະບົບດີບັກເທິງຊິບ

ໂປຣແກຣມຢູ່ໃນລະບົບຜ່ານພອດ SPI

ແຫຼ່ງຂັດຂວາງພາຍນອກແລະພາຍໃນ

ການໃຊ້ພະລັງງານໜ້ອຍ, ການຫຼຸດສຽງລົບກວນ ADC, ແລະ ໂໝດປິດເຄື່ອງ

ປັບປຸງວົງຈອນການຣີເຊັດການເປີດເຄື່ອງໃໝ່

ວົງຈອນກວດຈັບສີນ້ຳຕານອອກຕາມໂປຣແກຣມ

Oscillator Calibrated ພາຍໃນ

I/O ແລະແພັກເກດ

ຫົກສາຍໂຄງການ I/O

8-pin PDIP, 8-pin SOIC, 20-pad QFN/MLF, ແລະ 8-pin TSSOP (ສະເພາະ ATtiny45/V)

ການດໍາເນີນງານ Voltage
- 1.8 - 5.5V ສໍາລັບ ATtiny25V / 45V / 85V
– 2.7 – 5.5V ສໍາລັບ ATtiny25/45/85

ລະດັບຄວາມໄວ
- ATtiny25V/45V/85V: 0 – 4 MHz @ 1.8 – 5.5V, 0 – 10 MHz @ 2.7 – 5.5V
– ATtiny25/45/85:0 – 10 MHz @ 2.7 – 5.5V, 0 – 20 MHz @ 4.5 – 5.5V.

ຊ່ວງອຸນຫະພູມອຸດສາຫະກໍາ

ການບໍລິໂພກພະລັງງານຕໍ່າ

ຮູບແບບການເຄື່ອນໄຫວ:

1 MHz, 1.8V: 300 µA

ໂໝດປິດເຄື່ອງ:

ການຕັ້ງຄ່າ Pin

Pinout ATtiny25/45/85 ການຕັ້ງຄ່າ

ປັກໝຸດຄຳອະທິບາຍ

VCC: ການສະຫນອງ voltage.
GND: ດິນ.
ພອດ B (PB5:PB0): ພອດ B ແມ່ນພອດ I/O ສອງທິດທາງ 6-ບິດ ທີ່ມີຕົວຕ້ານທານດຶງພາຍໃນ (ເລືອກສໍາລັບແຕ່ລະບິດ). Port B output buffers ມີລັກສະນະການຂັບ symmetrical ມີທັງ sink ສູງແລະຄວາມສາມາດແຫຼ່ງ. ໃນ​ຖາ​ນະ​ເປັນ​ການ​ປ້ອນ​ຂໍ້​ມູນ​, pins Port B ທີ່​ຖືກ​ດຶງ​ຈາກ​ພາຍ​ນອກ​ຕ​່​ໍ​າ​ຈະ​ເປັນ​ແຫຼ່ງ​ປະ​ຈຸ​ບັນ​ຖ້າ​ຫາກ​ວ່າ​ຕົວ​ຕ້ານ​ການ​ດຶງ​ຂຶ້ນ​ໄດ້​ຖືກ​ກະ​ຕຸ້ນ​. ປັກໝຸດພອດ B ຈະຖືກລະບຸໄວ້ສາມຄັ້ງເມື່ອເງື່ອນໄຂການຣີເຊັດກາຍເປັນການເຄື່ອນໄຫວ, ເຖິງແມ່ນວ່າໂມງຈະບໍ່ເຮັດວຽກກໍຕາມ.

Port B ຍັງໃຫ້ບໍລິການຫນ້າທີ່ຂອງລັກສະນະພິເສດຕ່າງໆຂອງ ATtiny25/45/85 ຕາມທີ່ລະບຸໄວ້
ໃນ ATtiny25, ພອດ I/O ທີ່ຕັ້ງໂປຣແກຣມໄດ້ PB3 ແລະ PB4 (pins 2 ແລະ 3) ຖືກແລກປ່ຽນໃນ ATtiny15 Compatibility Mode ເພື່ອຮອງຮັບການເຂົ້າກັນໄດ້ກັບ ATtiny15.

ຣີເຊັດ: ຕັ້ງຄ່າການປ້ອນຂໍ້ມູນຄືນໃໝ່. ລະດັບຕໍ່າສຸດຂອງເຂັມປັກໝຸດນີ້ເປັນເວລາດົນກວ່າຄວາມຍາວຂອງກຳມະຈອນຂັ້ນຕ່ຳຈະສ້າງການຣີເຊັດ, ເຖິງແມ່ນວ່າໂມງຈະບໍ່ເຮັດວຽກ ແລະໃຫ້ເຂັມຣີເຊັດບໍ່ໄດ້ປິດໃຊ້ງານ. ຄວາມຍາວຂອງກໍາມະຈອນຕໍາ່ສຸດແມ່ນໄດ້ຮັບໃນ ຕາຕະລາງ 21-4 ໃນໜ້າ 165. ຈັງຫວະທີ່ສັ້ນກວ່າແມ່ນບໍ່ໄດ້ຮັບການຮັບປະກັນທີ່ຈະສ້າງການຣີເຊັດ.

PIN ຣີເຊັດຍັງສາມາດໃຊ້ເປັນ PIN I/O (ອ່ອນແອ) ໄດ້.

ເກີນview

ATtiny25/45/85 ເປັນ microcontroller 8-bit CMOS ພະລັງງານຕ່ໍາໂດຍອີງໃສ່ສະຖາປັດຕະຍະ ກຳ RISC ທີ່ປັບປຸງ AVR. ໂດຍການປະຕິບັດຄໍາແນະນໍາທີ່ມີປະສິດທິພາບໃນວົງຈອນໂມງດຽວ, ATtiny25/45/85 ບັນລຸການສົ່ງຜ່ານເຂົ້າໃກ້ 1 MIPS ຕໍ່ MHz ເຮັດໃຫ້ຜູ້ອອກແບບລະບົບສາມາດເພີ່ມປະສິດທິພາບການໃຊ້ພະລັງງານທຽບກັບຄວາມໄວການປຸງແຕ່ງ.

ຕັນແຜນວາດ ບລັອກແຜນວາດ

ຫຼັກ AVR ປະສົມປະສານຊຸດຄໍາແນະນໍາທີ່ອຸດົມສົມບູນກັບ 32 ບັນທຶກການເຮັດວຽກທີ່ມີຈຸດປະສົງທົ່ວໄປ. ທະບຽນທັງໝົດ 32 ໜ່ວຍແມ່ນເຊື່ອມຕໍ່ໂດຍກົງກັບໜ່ວຍຂໍ້ມູນທາງເລກຄະນິດສາດ (ALU), ອະນຸຍາດໃຫ້ມີສອງທະບຽນເອກະລາດສາມາດເຂົ້າເຖິງໄດ້ໃນຄຳສັ່ງດຽວທີ່ປະຕິບັດໃນໜຶ່ງຮອບວຽນໂມງ. ສະຖາປັດຕະຍະກໍາຜົນໄດ້ຮັບແມ່ນລະຫັດປະສິດທິພາບຫຼາຍໃນຂະນະທີ່ບັນລຸການສົ່ງຜ່ານເຖິງສິບເທົ່າໄວກວ່າ microcontrollers CISC ທໍາມະດາ.

ATtiny25/45/85 ໃຫ້ຄຸນສົມບັດດັ່ງຕໍ່ໄປນີ້: 2/4/8K bytes ຂອງ In-System Programmable Flash, 128/256/512 bytes EEPROM, 128/256/256 bytes SRAM, 6 ສາຍ I/O ຈຸດປະສົງທົ່ວໄປ, 32 ທົ່ວໄປ. ບັນທຶກການເຮັດວຽກທີ່ມີຈຸດປະສົງ, ໂຕຈັບເວລາ 8-ບິດ/ຕົວນັບຖອຍຫຼັງທີ່ມີໂຫມດປຽບທຽບ, ໂຕຈັບເວລາ/ໂຕນັບຄວາມໄວສູງ 8-ບິດ, ການໂຕ້ຕອບແບບ Universal Serial, ການຂັດຂວາງພາຍໃນ ແລະພາຍນອກ, 4-channel, 10-bit ADC, ໂປຣແກຣມໂມງຈັບເວລາ Watchdog ທີ່ມີພາຍໃນ. Oscillator, ແລະສາມຊອຟແວທີ່ເລືອກຮູບແບບການປະຫຍັດພະລັງງານ. ໂໝດ Idle ຈະຢຸດ CPU ໃນຂະນະທີ່ອະນຸຍາດໃຫ້ລະບົບ SRAM, Timer/Counter, ADC, Analog Comparator ແລະ Interrupt ສືບຕໍ່ເຮັດວຽກ. ໂໝດປິດເຄື່ອງຈະບັນທຶກເນື້ອໃນການລົງທະບຽນ, ປິດການທໍາງານຂອງຊິບທັງໝົດຈົນກ່ວາການລົບກວນ ຫຼື ຮາດແວຣີເຊັດຄັ້ງຕໍ່ໄປ. ໂໝດຫຼຸດສຽງລົບກວນ ADC ຈະຢຸດ CPU ແລະທຸກໂມດູນ I/O ຍົກເວັ້ນ ADC, ເພື່ອຫຼຸດຜ່ອນສຽງລົບກວນໃນລະຫວ່າງການປ່ຽນ ADC.

ອຸປະກອນດັ່ງກ່າວແມ່ນຜະລິດໂດຍນໍາໃຊ້ເຕັກໂນໂລຊີຄວາມຫນາແຫນ້ນຂອງຄວາມຫນາແຫນ້ນສູງຂອງ Atmel ບໍ່ລະເຫີຍ. On-chip ISP Flash ອະນຸຍາດໃຫ້ຫນ່ວຍຄວາມຈໍາຂອງໂປລແກລມຖືກດໍາເນີນໂຄງການໃຫມ່ໃນລະບົບໂດຍຜ່ານການໂຕ້ຕອບ SPI serial, ໂດຍໂປລແກລມຫນ່ວຍຄວາມຈໍາທີ່ບໍ່ມີການລະເຫີຍແບບທໍາມະດາຫຼືໂດຍລະຫັດບູດ On-chip ທີ່ເຮັດວຽກຢູ່ໃນຫຼັກ AVR.

ATtiny25/45/85 AVR ໄດ້ຮັບການສະໜັບສະໜູນດ້ວຍຊຸດໂປຣແກຣມ ແລະ ເຄື່ອງມືພັດທະນາລະບົບຄົບຊຸດລວມທັງ: C Compilers, Macro Assemblers, Program Debugger/Simulators ແລະ ຊຸດການປະເມີນຜົນ.

ກ່ຽວກັບຊັບພະຍາກອນ

ຊຸດເຄື່ອງມືພັດທະນາທີ່ສົມບູນແບບ, ບັນທຶກແອັບພລິເຄຊັນ ແລະແຜ່ນຂໍ້ມູນແມ່ນມີໃຫ້ດາວໂຫຼດຢູ່ http://www.atmel.com/avr.

ລະຫັດ Examples

ເອກະສານນີ້ມີລະຫັດງ່າຍໆ examples ທີ່ສະແດງໂດຍຫຍໍ້ກ່ຽວກັບວິທີການນໍາໃຊ້ພາກສ່ວນຕ່າງໆຂອງອຸປະກອນ. ລະຫັດເຫຼົ່ານີ້ examples ສົມມຸດວ່າສ່ວນຫົວສະເພາະ file ແມ່ນລວມກ່ອນທີ່ຈະລວບລວມ. ຈົ່ງຮູ້ວ່າບໍ່ແມ່ນຜູ້ຂາຍ C compiler ທັງຫມົດປະກອບມີຄໍານິຍາມ bit ໃນສ່ວນຫົວ files ແລະການຈັດການຂັດຂວາງໃນ C ແມ່ນຂຶ້ນກັບ compiler. ກະລຸນາຢືນຢັນດ້ວຍເອກະສານ C compiler ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມ.

ສໍາລັບການລົງທະບຽນ 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 ສະໜອງວິທີແກ້ໄຂທີ່ງ່າຍດາຍໃນການນຳໃຊ້ສຳລັບການໂຕ້ຕອບທີ່ລະອຽດອ່ອນສຳຜັດຢູ່ໃນຕົວຄວບຄຸມຈຸລະພາກຂອງ Atmel AVR. ຫໍສະໝຸດ QTouch ລວມມີການສະໜັບສະໜູນ QTouch® ແລະ QMatrix® ວິທີການໄດ້ມາ.

ການຮັບຮູ້ການສໍາຜັດແມ່ນໄດ້ຖືກເພີ່ມໄດ້ຢ່າງງ່າຍດາຍໃນທຸກແອັບພລິເຄຊັນໂດຍການເຊື່ອມຕໍ່ QTouch Library ແລະນໍາໃຊ້ Application Program-ming Interface (API) ຂອງຫ້ອງສະຫມຸດເພື່ອກໍານົດຊ່ອງທາງສໍາຜັດແລະເຊັນເຊີ. ແອັບພລິເຄຊັນຫຼັງຈາກນັ້ນໂທຫາ API ເພື່ອດຶງຂໍ້ມູນຊ່ອງທາງແລະກໍານົດສະຖານະຂອງເຊັນເຊີສໍາຜັດ.

ຫໍສະໝຸດ QTouch ແມ່ນບໍ່ເສຍຄ່າ ແລະສາມາດດາວໂຫຼດໄດ້ຈາກ Atmel webເວັບໄຊ. ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມແລະລາຍລະອຽດຂອງການປະຕິບັດ, ເບິ່ງຄູ່ມືຜູ້ໃຊ້ QTouch Library - ຍັງມີຢູ່ໃນ Atmel webເວັບໄຊ.

ການເກັບຮັກສາຂໍ້ມູນ

ຜົນໄດ້ຮັບຂອງຄຸນວຸດທິຄວາມຫນ້າເຊື່ອຖືສະແດງໃຫ້ເຫັນວ່າອັດຕາຄວາມລົ້ມເຫຼວຂອງການເກັບຮັກສາຂໍ້ມູນທີ່ຄາດໄວ້ແມ່ນຫນ້ອຍກວ່າ 1 PPM ໃນໄລຍະ 20 ປີຢູ່ທີ່ 85 ° C ຫຼື 100 ປີຢູ່ທີ່ 25 ° C.

AVR CPU Core

ແນະນຳ

ພາກນີ້ເວົ້າເຖິງສະຖາປັດຕະຍະກຳຫຼັກ AVR ໂດຍທົ່ວໄປ. ຫນ້າທີ່ຕົ້ນຕໍຂອງ CPU core ແມ່ນເພື່ອຮັບປະກັນການປະຕິບັດໂຄງການທີ່ຖືກຕ້ອງ. ດັ່ງນັ້ນ CPU ຈະຕ້ອງສາມາດເຂົ້າເຖິງຄວາມຊົງຈໍາ, ປະຕິບັດການຄິດໄລ່, ຄວບຄຸມອຸປະກອນຕໍ່ພ່ວງ, ແລະຈັດການສິ່ງລົບກວນ.

ສະຖາປັດຕະຍະກໍາview ສະຖາປັດຕະຍະກໍາ

ເພື່ອເຮັດໃຫ້ປະສິດທິພາບສູງສຸດ ແລະມີຄວາມຂະໜານກັນ, AVR ໃຊ້ສະຖາປັດຕະຍະກຳຂອງ Harvard – ມີຄວາມຊົງຈຳ ແລະລົດໂດຍສານແຍກຕ່າງຫາກສຳລັບໂຄງການ ແລະຂໍ້ມູນ. ຄໍາແນະນໍາໃນຫນ່ວຍຄວາມຈໍາຂອງໂປລແກລມຖືກປະຕິບັດດ້ວຍການວາງທໍ່ລະດັບດຽວ. ໃນຂະນະທີ່ຄໍາແນະນໍາຫນຶ່ງກໍາລັງຖືກປະຕິບັດ, ຄໍາແນະນໍາຕໍ່ໄປຈະຖືກດຶງມາຈາກຫນ່ວຍຄວາມຈໍາຂອງໂຄງການ. ແນວຄວາມຄິດນີ້ເຮັດໃຫ້ຄໍາແນະນໍາທີ່ຈະຖືກປະຕິບັດໃນທຸກໆຮອບວຽນໂມງ. ຫນ່ວຍຄວາມຈໍາຂອງໂປລແກລມແມ່ນ In-System Reprogrammable Flash memory.

ການ​ຈົດ​ທະ​ບຽນ​ການ​ເຂົ້າ​ເຖິງ​ໄວ​ File ປະກອບມີ 32 x 8-bit ບັນທຶກການເຮັດວຽກທີ່ມີຈຸດປະສົງທົ່ວໄປທີ່ມີເວລາເຂົ້າເຖິງຮອບດຽວ. ອັນນີ້ອະນຸຍາດໃຫ້ປະຕິບັດການຫົວໜ່ວຍເລກຄະນິດສາດ (ALU). ໃນການດໍາເນີນງານ ALU ປົກກະຕິ, ສອງຕົວປະຕິບັດການແມ່ນຜົນຜະລິດຈາກການລົງທະບຽນ File, ການດໍາເນີນງານໄດ້ຖືກປະຕິບັດ, ແລະຜົນໄດ້ຮັບຖືກເກັບໄວ້ໃນ Register File- ໃນ​ຫນຶ່ງ​ວົງ​ຈອນ​ໂມງ​.

ຫົກຂອງ 32 ລົງທະບຽນສາມາດຖືກນໍາໃຊ້ເປັນສາມຕົວຊີ້ລົງທະບຽນທີ່ຢູ່ທາງອ້ອມ 16-bit ສໍາລັບທີ່ຢູ່ Data Space - ເຮັດໃຫ້ການຄິດໄລ່ທີ່ຢູ່ທີ່ມີປະສິດທິພາບ. ຫນຶ່ງໃນຕົວຊີ້ທີ່ຢູ່ເຫຼົ່ານີ້ຍັງສາມາດຖືກນໍາໃຊ້ເປັນຕົວຊີ້ທີ່ຢູ່ສໍາລັບການຊອກຫາຕາຕະລາງໃນຫນ່ວຍຄວາມຈໍາຂອງ Flash Program. ການລົງທະບຽນຟັງຊັນທີ່ເພີ່ມນີ້ແມ່ນ 16-bit X-, Y-, ແລະ Z-register, ອະທິບາຍຕໍ່ມາໃນພາກນີ້.

ALU ສະຫນັບສະຫນູນການທໍາງານເລກຄະນິດແລະເຫດຜົນລະຫວ່າງທະບຽນຫຼືລະຫວ່າງຄົງທີ່ແລະທະບຽນ. ການປະຕິບັດການລົງທະບຽນດຽວຍັງສາມາດປະຕິບັດໄດ້ໃນ ALU. ຫຼັງ​ຈາກ​ການ​ດໍາ​ເນີນ​ງານ​ເລກ​ຄະ​ນິດ​ສາດ​, ການ​ຈົດ​ທະ​ບຽນ​ສະ​ຖາ​ນະ​ພາບ​ໄດ້​ຖືກ​ປັບ​ປຸງ​ເພື່ອ​ສະ​ທ້ອນ​ໃຫ້​ເຫັນ​ຂໍ້​ມູນ​ກ່ຽວ​ກັບ​ຜົນ​ຂອງ​ການ​ດໍາ​ເນີນ​ງານ​.

ການໄຫຼເຂົ້າຂອງໂປລແກລມແມ່ນສະຫນອງໃຫ້ໂດຍການກະໂດດແບບມີເງື່ອນໄຂແລະບໍ່ມີເງື່ອນໄຂແລະຄໍາແນະນໍາການໂທ, ສາມາດແກ້ໄຂພື້ນທີ່ທີ່ຢູ່ທັງຫມົດໂດຍກົງ. ຄໍາແນະນໍາ AVR ສ່ວນໃຫຍ່ມີຮູບແບບຄໍາ 16-bit ດຽວ, ແຕ່ຍັງມີຄໍາແນະນໍາ 32-bit.

ໃນ​ລະ​ຫວ່າງ​ການ​ຂັດ​ຂວາງ​ແລະ​ການ​ໂທ subroutine, ທີ່​ຢູ່​ກັບ​ຄືນ​ໄປ​ບ່ອນ Program Counter (PC) ຖືກ​ເກັບ​ຮັກ​ສາ​ໄວ້​ໃນ Stack. Stack ໄດ້ຖືກຈັດສັນຢ່າງມີປະສິດທິພາບໃນ SRAM ຂໍ້ມູນທົ່ວໄປ, ແລະດັ່ງນັ້ນຂະຫນາດ Stack ແມ່ນຖືກຈໍາກັດພຽງແຕ່ຂະຫນາດ SRAM ທັງຫມົດແລະການນໍາໃຊ້ SRAM ເທົ່ານັ້ນ. ໂປຣແກມຜູ້ໃຊ້ທັງໝົດຕ້ອງເລີ່ມຕົ້ນ SP ໃນ Reset routine (ກ່ອນການກຳນົດການຍ່ອຍ ຫຼືການລົບກວນຈະຖືກປະຕິບັດ). Stack Pointer (SP) ແມ່ນສາມາດອ່ານ/ຂຽນໄດ້ໃນພື້ນທີ່ I/O. ຂໍ້ມູນ SRAM ສາມາດເຂົ້າເຖິງໄດ້ງ່າຍໂດຍຜ່ານຫ້າຮູບແບບທີ່ຢູ່ທີ່ແຕກຕ່າງກັນທີ່ສະຫນັບສະຫນູນໃນສະຖາປັດຕະຍະກໍາ AVR.

ພື້ນທີ່ໜ່ວຍຄວາມຈຳໃນສະຖາປັດຕະຍະກຳ AVR ແມ່ນແຜນທີ່ໜ່ວຍຄວາມຈຳທີ່ເປັນເສັ້ນ ແລະປົກກະຕິທັງໝົດ.

ໂມດູນການລົບກວນແບບຍືດຫຍຸ່ນມີການຄວບຄຸມຂອງມັນຢູ່ໃນພື້ນທີ່ I/O ດ້ວຍການເພີ່ມການລົບກວນທົ່ວໂລກເພີ່ມເຕີມໃນການລົງທະບຽນສະຖານະ. ການຂັດຂວາງທັງໝົດມີຕົວລົບລົບກວນທີ່ແຍກກັນຢູ່ໃນຕາຕະລາງ Interrupt Vector. ການຂັດຂວາງມີບູລິມະສິດທີ່ສອດຄ່ອງກັບຕໍາແຫນ່ງ Vector ຂັດຂວາງຂອງພວກເຂົາ. ທີ່ຢູ່ Interrupt Vector ຕ່ໍາ, ບູລິມະສິດສູງກວ່າ.

ພື້ນທີ່ຫນ່ວຍຄວາມຈໍາ I/O ມີ 64 ທີ່ຢູ່ສໍາລັບຟັງຊັນຂອງ CPU peripheral ເປັນ Control Registers, SPI, ແລະຟັງຊັນ I/O ອື່ນໆ. ຫນ່ວຍຄວາມຈໍາ I/O ສາມາດເຂົ້າເຖິງໄດ້ໂດຍກົງ, ຫຼືເປັນສະຖານທີ່ Data Space ດັ່ງຕໍ່ໄປນີ້ຜູ້ທີ່ລົງທະບຽນ File, 0x20 – 0x5F.

ALU – ຫົວໜ່ວຍ Logic ເລກຄະນິດສາດ

AVR ALU ປະສິດທິພາບສູງດໍາເນີນການໃນການເຊື່ອມຕໍ່ໂດຍກົງກັບທັງຫມົດ 32 ຈຸດປະສົງທົ່ວໄປເຮັດວຽກລົງທະບຽນ. ພາຍໃນຮອບວຽນໂມງດຽວ, ການປະຕິບັດເລກຄະນິດລະຫວ່າງທະບຽນຈຸດປະສົງທົ່ວໄປ ຫຼືລະຫວ່າງທະບຽນ ແລະອັນທັນທີແມ່ນປະຕິບັດ. ການ​ດໍາ​ເນີນ​ງານ ALU ໄດ້​ແບ່ງ​ອອກ​ເປັນ​ສາມ​ປະ​ເພດ​ຕົ້ນ​ຕໍ - ເລກ​ຄະ​ນິດ​ສາດ​, ມີ​ເຫດ​ຜົນ​, ແລະ bit- functions​. ບາງການປະຕິບັດຂອງສະຖາປັດຕະຍະກໍາຍັງສະຫນອງຕົວຄູນທີ່ມີປະສິດທິພາບທີ່ສະຫນັບສະຫນູນທັງການຄູນລົງນາມ / ບໍ່ໄດ້ເຊັນແລະຮູບແບບເສດສ່ວນ. ເບິ່ງພາກ "ຊຸດຄໍາແນະນໍາ" ສໍາລັບລາຍລະອຽດລາຍລະອຽດ.

ສະຖານະລົງທະບຽນ

ການລົງທະບຽນສະຖານະມີຂໍ້ມູນກ່ຽວກັບຜົນໄດ້ຮັບຂອງຄໍາແນະນໍາເລກຄະນິດສາດທີ່ປະຕິບັດຫຼ້າສຸດ. ຂໍ້​ມູນ​ນີ້​ສາ​ມາດ​ຖືກ​ນໍາ​ໃຊ້​ສໍາ​ລັບ​ການ​ປ່ຽນ​ແປງ​ການ​ໄຫຼ​ຂອງ​ໂຄງ​ການ​ເພື່ອ​ດໍາ​ເນີນ​ການ​ຕາມ​ເງື່ອນ​ໄຂ​. ໃຫ້ສັງເກດວ່າການລົງທະບຽນສະຖານະພາບໄດ້ຖືກປັບປຸງຫຼັງຈາກການດໍາເນີນງານ 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

Bit 7 – I: Global Interrupt Enable

Global Interrupt Enable bit ຕ້ອງຖືກຕັ້ງເພື່ອໃຫ້ການລົບກວນສາມາດເປີດໃຊ້ໄດ້. ຫຼັງຈາກນັ້ນ, ການຄວບຄຸມການຂັດຂວາງການເປີດໃຊ້ສ່ວນບຸກຄົນແມ່ນດໍາເນີນການຢູ່ໃນທະບຽນການຄວບຄຸມແຍກຕ່າງຫາກ. ຖ້າ Global Interrupt Enable Register ໄດ້ຖືກລຶບລ້າງ, ບໍ່ມີການລົບກວນໃດໆທີ່ຈະຖືກເປີດໃຊ້ເປັນເອກະລາດຂອງການຕັ້ງຄ່າການເປີດໃຊ້ interrupt ສ່ວນບຸກຄົນ. I-bit ໄດ້ຖືກລຶບລ້າງໂດຍຮາດແວຫຼັງຈາກການຂັດຂວາງໄດ້ເກີດຂຶ້ນ, ແລະຖືກກໍານົດໂດຍຄໍາແນະນໍາ RETI ເພື່ອເປີດໃຊ້ການຂັດຂວາງຕໍ່ໄປ. I-bit ຍັງສາມາດຖືກກໍານົດແລະລຶບລ້າງໂດຍຄໍາຮ້ອງສະຫມັກທີ່ມີຄໍາແນະນໍາ SEI ແລະ CLI, ດັ່ງທີ່ອະທິບາຍໄວ້ໃນເອກະສານອ້າງອີງຊຸດຄໍາແນະນໍາ.

Bit 6 – T: Bit Copy Storage

ຄໍາແນະນໍາການຄັດລອກບິດ BLD (Bit LoaD) ແລະ BST (Bit STore) ໃຊ້ T-bit ເປັນແຫຼ່ງຫຼືຈຸດຫມາຍປາຍທາງສໍາລັບບິດທີ່ດໍາເນີນການ. ເລັກນ້ອຍຈາກການລົງທະບຽນໃນ Register File ສາມາດຖືກຄັດລອກເຂົ້າໄປໃນ T ໂດຍຄໍາແນະນໍາ BST, ແລະເລັກນ້ອຍໃນ T ສາມາດຖືກຄັດລອກເປັນບິດໃນທະບຽນໃນທະບຽນ. File ໂດຍຄໍາແນະນໍາ BLD.

Bit 5 – H: Half Carry Flag

Half Carry Flag H ຊີ້ບອກ Half Carry ໃນບາງການປະຕິບັດເລກເລກ. Half Carry ແມ່ນເປັນປະໂຫຍດໃນເລກເລກ BCD. ເບິ່ງ "ລາຍລະອຽດຊຸດຄໍາແນະນໍາ" ສໍາລັບລາຍລະອຽດ.

Bit 4 – S: Sign Bit, S = N ⊕ V

S-bit ສະເຫມີເປັນສະເພາະຫຼືລະຫວ່າງທຸງລົບ N ແລະສອງຂອງ Complement Overflow Flag V. ເບິ່ງ "ລາຍລະອຽດຊຸດຄໍາແນະນໍາ" ສໍາລັບລາຍລະອຽດ.

Bit 3 – V: ທຸງ Overflow ຂອງສອງອັນ

The Two's Complement Overflow Flag V ສະຫນັບສະຫນູນເລກຄະນິດສາດທີ່ສົມບູນຂອງສອງ. ເບິ່ງ "ລາຍລະອຽດຊຸດຄໍາແນະນໍາ" ສໍາລັບລາຍລະອຽດ.

Bit 2 – N: ທຸງລົບ

ທຸງລົບ N ຊີ້ບອກຜົນໄດ້ຮັບທາງລົບໃນການດໍາເນີນງານທາງເລກຄະນິດ ຫຼື logic. ເບິ່ງ "ລາຍລະອຽດຊຸດຄໍາແນະນໍາ" ສໍາລັບລາຍລະອຽດ.

Bit 1 – Z: Zero Flag

Zero Flag Z ຊີ້ບອກຜົນໄດ້ຮັບສູນໃນການດໍາເນີນງານເລກເລກ ຫຼືເຫດຜົນ. ເບິ່ງ "ລາຍລະອຽດຊຸດຄໍາແນະນໍາ" ສໍາລັບລາຍລະອຽດ.

Bit 0 – C: ທຸງພົກພາ

Carry Flag C ຊີ້ບອກເຖິງການດຳເນີນການເລກຄະນິດ ຫຼື logic. ເບິ່ງ "ລາຍລະອຽດຊຸດຄໍາແນະນໍາ" ສໍາລັບລາຍລະອຽດ.

ການລົງທະບຽນຈຸດປະສົງທົ່ວໄປ File

ລົງທະບຽນ File ຖືກປັບໃຫ້ເໝາະສົມສໍາລັບຊຸດຄໍາແນະນໍາ AVR Enhanced RISC. ໃນ​ຄໍາ​ສັ່ງ​ທີ່​ຈະ​ບັນ​ລຸ​ການ​ປະ​ຕິ​ບັດ​ທີ່​ຕ້ອງ​ການ​ແລະ​ຄວາມ​ຢືດ​ຢຸ່ນ​, ໂຄງ​ການ​ປ້ອນ​ຂໍ້​ມູນ / ຜົນ​ຜະ​ລິດ​ດັ່ງ​ຕໍ່​ໄປ​ນີ້​ແມ່ນ​ສະ​ຫນັບ​ສະ​ຫນູນ​ໂດຍ​ການ​ລົງ​ທະ​ບຽນ File:

operand ຜົນ​ຜະ​ລິດ 8-bit ຫນຶ່ງ​ແລະ​ຫນຶ່ງ​ຜົນ​ໄດ້​ຮັບ 8-bit input​

ສອງຕົວປະຕິບັດການຜົນຜະລິດ 8-ບິດ ແລະໜຶ່ງຜົນຮັບ 8-ບິດ

ສອງຕົວປະຕິບັດການຜົນຜະລິດ 8-ບິດ ແລະໜຶ່ງຜົນຮັບ 16-ບິດ

operand ຜົນ​ຜະ​ລິດ 16-bit ຫນຶ່ງ​ແລະ​ຫນຶ່ງ​ຜົນ​ໄດ້​ຮັບ 16-bit input​

ຮູບທີ 4-2 ສະ​ແດງ​ໃຫ້​ເຫັນ​ໂຄງ​ສ້າງ​ຂອງ 32 ການ​ຈົດ​ທະ​ບຽນ​ການ​ເຮັດ​ວຽກ​ຈຸດ​ປະ​ສົງ​ທົ່ວ​ໄປ​ໃນ CPU ໄດ້​. ຈຸດປະສົງທົ່ວໄປ

ດັ່ງທີ່ສະແດງຢູ່ໃນ ຮູບທີ 4-2, ແຕ່ລະທະບຽນຍັງຖືກມອບຫມາຍທີ່ຢູ່ຫນ່ວຍຄວາມຈໍາຂໍ້ມູນ, ແຜນທີ່ໃຫ້ເຂົາເຈົ້າໂດຍກົງເຂົ້າໄປໃນ 32 ສະຖານທີ່ທໍາອິດຂອງຜູ້ໃຊ້ Data Space. ເຖິງແມ່ນວ່າບໍ່ໄດ້ຮັບການປະຕິບັດທາງດ້ານຮ່າງກາຍເປັນສະຖານທີ່ SRAM, ອົງການຈັດຕັ້ງຫນ່ວຍຄວາມຈໍານີ້ສະຫນອງຄວາມຍືດຫຍຸ່ນທີ່ຍິ່ງໃຫຍ່ໃນການເຂົ້າເຖິງການລົງທະບຽນ, ຍ້ອນວ່າການລົງທະບຽນ X-, Y- ແລະ Z-pointer ສາມາດຖືກຕັ້ງຄ່າເພື່ອດັດສະນີການລົງທະບຽນໃດໆໃນ. file.ສ່ວນໃຫຍ່ຂອງຄໍາແນະນໍາທີ່ດໍາເນີນການກ່ຽວກັບການລົງທະບຽນ File ມີການເຂົ້າເຖິງໂດຍກົງກັບທະບຽນທັງຫມົດ, ແລະສ່ວນໃຫຍ່ແມ່ນຄໍາແນະນໍາວົງຈອນດຽວ.

ລົງທະບຽນ X, ລົງທະບຽນ Y, ແລະ Z-ລົງທະບຽນ

ການລົງທະບຽນ R26..R31 ມີບາງຫນ້າທີ່ເພີ່ມເຂົ້າໃນການນໍາໃຊ້ຈຸດປະສົງທົ່ວໄປຂອງພວກເຂົາ. ທະບຽນເຫຼົ່ານີ້ແມ່ນຕົວຊີ້ທີ່ຢູ່ 16-bit ສໍາລັບທີ່ຢູ່ທາງອ້ອມຂອງພື້ນທີ່ຂໍ້ມູນ. ສາມທີ່ຢູ່ທາງອ້ອມລົງທະບຽນ X, Y, ແລະ Z ຖືກກໍານົດຕາມທີ່ໄດ້ອະທິບາຍໄວ້ໃນ ຮູບທີ 4-3.

ລົງທະບຽນ

ໃນ​ຮູບ​ແບບ​ທີ່​ຢູ່​ທີ່​ແຕກ​ຕ່າງ​ກັນ​ການ​ຈົດ​ທະ​ບຽນ​ທີ່​ຢູ່​ເຫຼົ່າ​ນີ້​ມີ​ຫນ້າ​ທີ່​ເປັນ​ການ​ຍ້າຍ​ຄົງ​ທີ່​, ເພີ່ມ​ຂຶ້ນ​ອັດ​ຕະ​ໂນ​ມັດ​, ແລະ​ການ​ຫຼຸດ​ລົງ​ອັດ​ຕະ​ໂນ​ມັດ (ເບິ່ງ​ການ​ອ້າງ​ອີງ​ຊຸດ​ຄໍາ​ແນະ​ນໍາ​ສໍາ​ລັບ​ລາຍ​ລະ​ອຽດ​)​.

Stack Pointer

The Stack ສ່ວນໃຫຍ່ແມ່ນໃຊ້ສໍາລັບການເກັບຮັກສາຂໍ້ມູນຊົ່ວຄາວ, ສໍາລັບການເກັບຮັກສາຕົວແປທ້ອງຖິ່ນແລະສໍາລັບການເກັບຮັກສາທີ່ຢູ່ກັບຄືນຫຼັງຈາກການຂັດຂວາງແລະການໂທ subroutine. Stack Pointer Register ຊີ້ໄປເທິງສຸດຂອງ Stack ສະເໝີ. ໃຫ້ສັງເກດວ່າ Stack ໄດ້ຖືກປະຕິບັດເປັນການຂະຫຍາຍຕົວຈາກສະຖານທີ່ຫນ່ວຍຄວາມຈໍາທີ່ສູງຂຶ້ນໄປຫາສະຖານທີ່ຫນ່ວຍຄວາມຈໍາຕ່ໍາ. ນີ້ຫມາຍຄວາມວ່າຄໍາສັ່ງ Stack PUSH ຫຼຸດລົງ Stack Pointer.

Stack Pointer ຊີ້ໄປຫາພື້ນທີ່ SRAM Stack ຂໍ້ມູນບ່ອນທີ່ Subroutine ແລະ Interrupt Stacks ຕັ້ງຢູ່. ພື້ນທີ່ Stack ນີ້ຢູ່ໃນ SRAM ຂໍ້ມູນຈະຕ້ອງຖືກກໍານົດໂດຍໂຄງການກ່ອນທີ່ຈະດໍາເນີນການໂທຫາ subroutine ຫຼື interrupts ຈະຖືກເປີດໃຊ້. Stack Pointer ຕ້ອງຖືກຕັ້ງເປັນຈຸດສູງກວ່າ 0x60. ຕົວຊີ້ Stack ຖືກຫຼຸດລົງໂດຍຫນຶ່ງເມື່ອຂໍ້ມູນຖືກ pushed ໃສ່ Stack ດ້ວຍຄໍາແນະນໍາ PUSH, ແລະມັນຖືກຫຼຸດລົງສອງຄັ້ງເມື່ອທີ່ຢູ່ກັບຄືນຖືກ pushed ໃສ່ Stack ດ້ວຍການໂທຫາ subroutine ຫຼືຂັດຂວາງ. ຕົວຊີ້ Stack ແມ່ນເພີ່ມຂຶ້ນໂດຍຫນຶ່ງເມື່ອຂໍ້ມູນຖືກ popped ຈາກ Stack ກັບຄໍາແນະນໍາ POP, ແລະມັນເພີ່ມຂຶ້ນໂດຍສອງເມື່ອຂໍ້ມູນຖືກ popped ຈາກ Stack ກັບຜົນຕອບແທນຈາກ subroutine RET ຫຼືກັບຄືນຈາກການລົບກວນ RETI.

AVR Stack Pointer ຖືກປະຕິບັດເປັນສອງທະບຽນ 8-bit ໃນຊ່ອງ I/O. ຈໍານວນບິດທີ່ໃຊ້ຕົວຈິງແມ່ນຂຶ້ນກັບການປະຕິບັດ. ໃຫ້ສັງເກດວ່າພື້ນທີ່ຂໍ້ມູນໃນບາງການປະຕິບັດຂອງສະຖາປັດຕະຍະກໍາ AVR ມີຂະຫນາດນ້ອຍຫຼາຍດັ່ງນັ້ນພຽງແຕ່ SPL ທີ່ຈໍາເປັນ. ໃນກໍລະນີນີ້, ການລົງທະບຽນ SPH ຈະບໍ່ຢູ່.

SPH ແລະ SPL — ການລົງທະບຽນ Stack Pointer

ບິດ 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
ຄ່າເລີ່ມຕົ້ນ RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND
ຄ່າເລີ່ມຕົ້ນ RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND RAMEND

ໄລຍະເວລາການປະຕິບັດຄໍາແນະນໍາ

ພາກນີ້ອະທິບາຍແນວຄວາມຄິດການກໍານົດເວລາການເຂົ້າເຖິງໂດຍທົ່ວໄປສໍາລັບການປະຕິບັດຄໍາແນະນໍາ. CPU AVR ຖືກຂັບເຄື່ອນໂດຍໂມງ CPU clkCPU, ຜະລິດໂດຍກົງຈາກແຫຼ່ງໂມງທີ່ເລືອກສໍາລັບຊິບ. ບໍ່ໄດ້ໃຊ້ການແບ່ງໂມງພາຍໃນ.

ຮູບ4.4

ຮູບທີ 4-4 ສະ​ແດງ​ໃຫ້​ເຫັນ​ການ​ດຶງ​ເອົາ​ຄໍາ​ສັ່ງ​ຂະ​ຫນານ​ແລະ​ການ​ປະ​ຕິ​ບັດ​ຄໍາ​ແນະ​ນໍາ​ທີ່​ເປີດ​ໂດຍ​ສະ​ຖາ​ປັດ​ຕະ Harvard ແລະ​ການ​ເຂົ້າ​ເຖິງ​ໄວ​ຂຶ້ນ​ທະ​ບຽນ File ແນວຄວາມຄິດ. ນີ້ແມ່ນແນວຄວາມຄິດພື້ນຖານຂອງທໍ່ເພື່ອໃຫ້ໄດ້ເຖິງ 1 MIPS ຕໍ່ MHz ດ້ວຍຜົນໄດ້ຮັບທີ່ເປັນເອກະລັກທີ່ສອດຄ້ອງກັນສໍາລັບຟັງຊັນຕໍ່ຄ່າໃຊ້ຈ່າຍ, ຟັງຊັນຕໍ່ໂມງ, ແລະຟັງຊັນຕໍ່ຫນ່ວຍພະລັງງານ.

ຮູບທີ 4-5. ການດໍາເນີນງານ ALU ຮອບດຽວ

ຮູບ4.5

ຣີເຊັດ ແລະ ຂັດຂວາງການຈັດການ

AVR ສະຫນອງແຫຼ່ງລົບກວນທີ່ແຕກຕ່າງກັນຫຼາຍ. ການຂັດຂວາງເຫຼົ່ານີ້ແລະ Reset Vector ແຍກຕ່າງຫາກແຕ່ລະຄົນມີ Program Vector ແຍກຕ່າງຫາກຢູ່ໃນພື້ນທີ່ຫນ່ວຍຄວາມຈໍາຂອງ Program. ການຂັດຈັງຫວະທັງໝົດແມ່ນໄດ້ມອບໝາຍໃຫ້ແຕ່ລະບິດເປີດໃຊ້ງານແຕ່ລະອັນທີ່ຈະຕ້ອງຂຽນຕາມເຫດຜົນຮ່ວມກັນກັບ Global Interrupt Enable bits ໃນ Status Register ເພື່ອເປີດໃຊ້ການລົບກວນ.

ທີ່ຢູ່ຕ່ໍາສຸດໃນພື້ນທີ່ຫນ່ວຍຄວາມຈໍາຂອງໂປລແກລມແມ່ນຖືກກໍານົດໄວ້ໃນຕອນຕົ້ນເປັນ Reset ແລະ Interrupt Vectors. ບັນຊີລາຍຊື່ເຕັມຂອງ vectors ແມ່ນສະແດງຢູ່ໃນ “ຂັດຂວາງ” ໃນໜ້າ 48. ບັນຊີລາຍຊື່ຍັງກໍານົດລະດັບບູລິມະສິດຂອງການຂັດຂວາງທີ່ແຕກຕ່າງກັນ. ທີ່ຢູ່ຕ່ໍາກວ່າແມ່ນລະດັບຄວາມສໍາຄັນ. RESET ມີບູລິມະສິດສູງສຸດ, ແລະຕໍ່ໄປແມ່ນ INT0 - ການຮ້ອງຂໍການຂັດຂວາງພາຍນອກ 0.

ເມື່ອມີການລົບກວນເກີດຂຶ້ນ, Global Interrupt Enable I-bit ຈະຖືກລຶບລ້າງ ແລະ ການລົບກວນທັງໝົດຖືກປິດໃຊ້ງານ. ຊອບແວຜູ້ໃຊ້ສາມາດຂຽນ logic ຫນຶ່ງໄປຫາ I-bit ເພື່ອເປີດໃຊ້ການລົບກວນທີ່ຊ້ອນກັນ. ການຂັດຈັງຫວະທີ່ເປີດໃຊ້ທັງໝົດສາມາດລົບກວນການລົບກວນປົກກະຕິໃນປະຈຸບັນ. I-bit ຈະຖືກຕັ້ງໂດຍອັດຕະໂນມັດເມື່ອການກັບຄືນຈາກການຂັດຂວາງ - RETI - ຖືກປະຕິບັດ.

ໂດຍພື້ນຖານແລ້ວມີສອງປະເພດຂອງການຂັດຂວາງ. ປະເພດທໍາອິດຖືກກະຕຸ້ນໂດຍເຫດການທີ່ກໍານົດ Interrupt Flag. ສໍາລັບການຂັດຂວາງເຫຼົ່ານີ້, Program Counter ແມ່ນ vectored ກັບ Interrupt Vector ຕົວຈິງເພື່ອປະຕິບັດການປົກກະຕິການຈັດການຂັດຂວາງ, ແລະຮາດແວຈະລຶບລ້າງ Interrupt Flag ທີ່ສອດຄ້ອງກັນ. ທຸງຂັດຂວາງຍັງສາມາດຖືກລຶບລ້າງໄດ້ໂດຍການຂຽນເຫດຜົນໃສ່ຕໍາແໜ່ງທຸງທີ່ຈະຖືກລຶບລ້າງ. ຖ້າສະພາບການຂັດຈັງຫວະເກີດຂຶ້ນໃນຂະນະທີ່ບິດເປີດໃຊ້ການຂັດຈັງຫວະທີ່ສອດຄ້ອງກັນຖືກລຶບລ້າງ, ທຸງຂັດຈັງຫວະຈະຖືກຕັ້ງ ແລະຈື່ໄວ້ຈົນກ່ວາການລົບກວນຖືກເປີດໃຊ້ງານ, ຫຼືທຸງຖືກລຶບລ້າງໂດຍຊອບແວ. ເຊັ່ນດຽວກັນ, ຖ້າເງື່ອນໄຂການຂັດຂວາງຫນຶ່ງຫຼືຫຼາຍກວ່ານັ້ນເກີດຂື້ນໃນຂະນະທີ່ບິດເບືອນ Global Interrupt Enable ຖືກລຶບລ້າງ, ທຸງ Interrupt ທີ່ສອດຄ້ອງກັນຈະຖືກຕັ້ງແລະຈື່ໄວ້ຈົນກ່ວາ Global Interrupt Enable bit ຖືກຕັ້ງ, ແລະຈາກນັ້ນຈະຖືກປະຕິບັດໂດຍລໍາດັບຄວາມສໍາຄັນ.

ການຂັດຂວາງປະເພດທີສອງຈະກະຕຸ້ນຕາບໃດທີ່ສະພາບການຂັດຂວາງແມ່ນຢູ່. ການຂັດຂວາງເຫຼົ່ານີ້ບໍ່ຈໍາເປັນຕ້ອງມີ Interrupt Flags. ຖ້າເງື່ອນໄຂຂັດຂວາງຫາຍໄປກ່ອນທີ່ການຂັດຂວາງຈະຖືກເປີດໃຊ້, ການຂັດຂວາງຈະບໍ່ຖືກກະຕຸ້ນ.

ເມື່ອ AVR ອອກຈາກການຂັດຂວາງ, ມັນຈະກັບຄືນໄປຫາໂຄງການຕົ້ນຕໍສະເຫມີແລະດໍາເນີນການຄໍາແນະນໍາເພີ່ມເຕີມຫນຶ່ງກ່ອນທີ່ຈະມີການຂັດຂວາງທີ່ຍັງຄ້າງຢູ່.

ກະລຸນາຮັບຊາບວ່າການລົງທະບຽນສະຖານະບໍ່ໄດ້ຖືກເກັບຮັກສາໄວ້ໂດຍອັດຕະໂນມັດເມື່ອເຂົ້າສູ່ກິດຈະວັດທີ່ຂັດຂວາງ, ຫຼືຖືກຟື້ນຟູຄືນມາເມື່ອກັບມາຈາກກິດຈະວັດທີ່ຂັດຂວາງ. ນີ້ຕ້ອງໄດ້ຮັບການຈັດການໂດຍຊອບແວ.

ເມື່ອນໍາໃຊ້ຄໍາແນະນໍາ CLI ເພື່ອປິດການຂັດຂວາງ, ການຂັດຂວາງຈະຖືກປິດທັນທີ. ບໍ່ມີການຂັດຂວາງຈະຖືກປະຕິບັດຫຼັງຈາກຄໍາແນະນໍາ CLI, ເຖິງແມ່ນວ່າມັນເກີດຂື້ນພ້ອມໆກັນກັບຄໍາແນະນໍາ CLI. ຕໍ່ໄປນີ້ example ສະແດງໃຫ້ເຫັນວິທີການນີ້ສາມາດຖືກນໍາໃຊ້ເພື່ອຫຼີກເວັ້ນການຂັດຂວາງໃນລະຫວ່າງໄລຍະເວລາການຂຽນ EEPROM.

Assembly Code Example
ໃນ r16, SREG ; ເກັບຄ່າ SREG

cli ; ປິດການຂັດຂວາງໃນລະຫວ່າງລໍາດັບທີ່ກໍານົດເວລາ

sbi EECR, EEMPE ; ເລີ່ມຂຽນ EEPROM

sbi EECR, EEPE

ອອກ SREG, r16 ; ຟື້ນຟູຄ່າ SREG (I-bit)

C ລະຫັດ Example
char cSREG;

cSREG = SREG; /* ເກັບ​ຄ່າ SREG */

/* ປິດ​ການ​ທໍາ​ງານ​ການ​ຂັດ​ຂວາງ​ໃນ​ລະ​ຫວ່າງ​ລໍາ​ດັບ​ກໍາ​ນົດ​ເວ​ລາ */

_CLI();

EECR |= (1<

EECR |= (1<

SREG = cSREG; /* ຟື້ນຟູຄ່າ SREG (I-bit) */

ເມື່ອນໍາໃຊ້ຄໍາແນະນໍາ SEI ເພື່ອເປີດໃຊ້ການຂັດຂວາງ, ຄໍາແນະນໍາຕໍ່ໄປນີ້ SEI ຈະຖືກປະຕິບັດກ່ອນທີ່ຈະຂັດຂວາງໃດໆ, ດັ່ງທີ່ສະແດງຢູ່ໃນຕົວຢ່າງນີ້.ampເລ.

Assembly Code Example
ເຊ ; ຕັ້ງຄ່າການຂັດຂວາງທົ່ວໂລກ

ນອນ; ເຂົ້ານອນ, ລໍຖ້າຂັດຂວາງ

; ຫມາຍເຫດ: ຈະເຂົ້າສູ່ການນອນກ່ອນທີ່ຈະລໍຖ້າໃດໆ

; ຂັດຂວາງ

C ລະຫັດ Example
_SEI(); /* ຕັ້ງ Global Interrupt Enable */

_SLEEP(); /* ເຂົ້ານອນ, ລໍຖ້າລົບກວນ */

/* ໝາຍເຫດ: ຈະເຂົ້ານອນກ່ອນການຂັດຈັງຫວະທີ່ຍັງຄ້າງ */

ຂັດຂວາງເວລາຕອບສະຫນອງ

ການຕອບສະ ໜອງ ການປະຕິບັດການຂັດຈັງຫວະ ສຳ ລັບການລົບກວນ AVR ທັງຫມົດທີ່ເປີດໃຊ້ແມ່ນຕໍ່າສຸດສີ່ຮອບວຽນໂມງ. ຫຼັງຈາກຮອບວຽນສີ່ໂມງແລ້ວ, ທີ່ຢູ່ Program Vector ສໍາລັບປົກກະຕິການຈັດການຂັດຂວາງແມ່ນຖືກປະຕິບັດ. ໃນລະຫວ່າງຮອບວຽນສີ່ໂມງນີ້, ຕົວເຄົາເຕີຂອງໂປຣແກຣມຈະຖືກຍູ້ໃສ່ Stack. ໂດຍປົກກະຕິ vector ແມ່ນການກະໂດດໄປສູ່ການຂັດຂວາງ, ແລະການໂດດນີ້ໃຊ້ເວລາສາມຮອບ. ຖ້າການຂັດຂວາງເກີດຂຶ້ນໃນລະຫວ່າງການປະຕິບັດຄໍາສັ່ງຫຼາຍຮອບ, ຄໍາແນະນໍານີ້ຈະສໍາເລັດກ່ອນທີ່ການຂັດຂວາງຈະຖືກຮັບໃຊ້. ຖ້າການຂັດຈັງຫວະເກີດຂຶ້ນເມື່ອ MCU ຢູ່ໃນໂໝດນອນຫຼັບ, ເວລາຕອບສະໜອງການປະຕິບັດການຂັດຂວາງຈະເພີ່ມຂຶ້ນ 4 ຮອບ. ການເພີ່ມຂຶ້ນນີ້ມາພ້ອມກັບເວລາເລີ່ມຕົ້ນຈາກຮູບແບບການນອນທີ່ເລືອກ.

ການກັບຄືນຈາກການປົກກະຕິການຈັດການຂັດຂວາງໃຊ້ເວລາສີ່ຮອບວຽນໂມງ. ໃນ​ລະ​ຫວ່າງ​ສີ່​ຮອບ​ວຽນ​ໂມງ​ເຫຼົ່າ​ນີ້​, ຕົວ​ນັບ​ຂອງ​ໂຄງ​ການ (ສອງ​ໄບ​ຕ​໌​) ແມ່ນ popped ກັບ​ຄືນ​ໄປ​ບ່ອນ​ຈາກ Stack​, ຕົວ​ຊີ້ Stack ແມ່ນ incremented ສອງ​, ແລະ I-bit ໃນ SREG ໄດ້​ຖືກ​ຕັ້ງ​ໄວ້​.

ຄວາມຊົງຈໍາ AVR

ພາກນີ້ອະທິບາຍຄວາມຊົງຈໍາທີ່ແຕກຕ່າງກັນໃນ ATtiny25/45/85. ສະຖາປັດຕະຍະກໍາ AVR ມີສອງພື້ນທີ່ຫນ່ວຍຄວາມຈໍາຕົ້ນຕໍ, ຫນ່ວຍຄວາມຈໍາຂໍ້ມູນແລະພື້ນທີ່ຫນ່ວຍຄວາມຈໍາຂອງໂຄງການ. ນອກຈາກນັ້ນ, ATtiny25/45/85 ມີລັກສະນະ EEPROM Memory ສໍາລັບການເກັບຮັກສາຂໍ້ມູນ. ທັງສາມຊ່ອງຄວາມຊົງຈໍາແມ່ນເປັນເສັ້ນກົງແລະປົກກະຕິ.

In-system re-programmable Flash Program Memory

ATtiny25/45/85 ມີ 2/4/8K bytes On-chip In-System Reprogrammable Flash memory ສໍາລັບການເກັບຮັກສາໂປຣແກຣມ. ເນື່ອງຈາກຄໍາແນະນໍາ AVR ທັງຫມົດແມ່ນກວ້າງ 16 ຫຼື 32 ບິດ, Flash ໄດ້ຖືກຈັດເປັນ 1024/2048/4096 x 16.

ໜ່ວຍຄວາມຈຳ Flash ມີຄວາມອົດທົນຢ່າງໜ້ອຍ 10,000 ຮອບຂຽນ/ລຶບ. ATtiny25/45/85 Program Counter (PC) ແມ່ນກວ້າງ 10/11/12 bits, ດັ່ງນັ້ນຈຶ່ງແກ້ໄຂສະຖານທີ່ຫນ່ວຍຄວາມຈໍາຂອງໂປຣແກຣມ 1024/2048/4096. "ໂຄງການຄວາມຊົງຈໍາ- ming” ໃນໜ້າ 147 ມີຄໍາອະທິບາຍລາຍລະອຽດກ່ຽວກັບການດາວໂຫຼດຂໍ້ມູນ Flash serial ໂດຍໃຊ້ SPI pins.

ຕາຕະລາງຄົງທີ່ສາມາດໄດ້ຮັບການຈັດສັນພາຍໃນພື້ນທີ່ທີ່ຢູ່ຫນ່ວຍຄວາມຈໍາຂອງໂປຣແກຣມທັງຫມົດ (ເບິ່ງ LPM – Load Program memory instruction instruction).

ຮູບ 5-1. ແຜນ​ທີ່​ຄວາມ​ຈໍາ​ຂອງ​ໂຄງ​ການ​ ແຜນທີ່ຄວາມຊົງ ຈຳ

ຫນ່ວຍຄວາມຈໍາຂໍ້ມູນ SRAM

ຮູບທີ 5-2 ສະແດງໃຫ້ເຫັນວິທີການຈັດລຽງ SRAM Memory ATtiny25/45/85.

ຕ່ໍາກວ່າ 224/352/607 ສະຖານທີ່ຫນ່ວຍຄວາມຈໍາຂໍ້ມູນທີ່ຢູ່ທັງສອງ Register File, ຫນ່ວຍຄວາມຈໍາ I/O ແລະ SRAM ຂໍ້ມູນພາຍໃນ. 32 ສະຖານທີ່ທໍາອິດທີ່ຢູ່ລົງທະບຽນ File, ຕໍ່ໄປ 64 ສະຖານທີ່ຂອງຫນ່ວຍຄວາມຈໍາ I/O ມາດຕະຖານ, ແລະສະຖານທີ່ສຸດທ້າຍ 128/256/512 ແກ້ໄຂ SRAM ຂໍ້ມູນພາຍໃນ.

ຫ້າຮູບແບບທີ່ຢູ່ທີ່ແຕກຕ່າງກັນສໍາລັບການປົກຫຸ້ມຂອງຫນ່ວຍຄວາມຈໍາຂໍ້ມູນ: Direct, Indirect with Displacement, Indirect, indirect with pre-decrement, and indirect with Post-increment. ໃນ​ການ​ລົງ​ທະ​ບຽນ​ File, ລົງທະບຽນ R26 ເຖິງ R31 ມີລັກສະນະການລົງທະບຽນຕົວຊີ້ທີ່ຢູ່ທາງອ້ອມ.

ທີ່ຢູ່ໂດຍກົງໄປຮອດພື້ນທີ່ຂໍ້ມູນທັງຫມົດ.

ຮູບແບບ Indirect with Displacement ໄປຮອດ 63 ທີ່ຢູ່ຈາກທີ່ຢູ່ພື້ນຖານທີ່ໃຫ້ໂດຍ Y- ຫຼື Z- register.

ເມື່ອໃຊ້ໂຫມດການລົງທະບຽນທາງອ້ອມດ້ວຍການປັບຕົວກ່ອນ ແລະຫຼັງການເພີ່ມອັດຕະໂນມັດ, ທີ່ຢູ່ລົງທະບຽນ X, Y, ແລະ Z ແມ່ນຫຼຸດລົງ ຫຼືເພີ່ມຂຶ້ນ.

32 ທະບຽນການເຮັດວຽກທີ່ມີຈຸດປະສົງທົ່ວໄປ, 64 I/O Registers, ແລະ 128/256/512 bytes ຂອງຂໍ້ມູນພາຍໃນ SRAM ໃນ ATtiny25/45/85 ແມ່ນສາມາດເຂົ້າເຖິງໄດ້ໂດຍຜ່ານຮູບແບບທີ່ຢູ່ທັງຫມົດເຫຼົ່ານີ້. ລົງທະບຽນ File ຖືກອະທິບາຍໄວ້ໃນ “ທ່ານພົນເອກ- eral ຈຸດປະສົງການລົງທະບຽນ File” ຢູ່ໜ້າ 10.

ຮູບ 5-2. ແຜນທີ່ຄວາມຈໍາຂໍ້ມູນ ແຜນທີ່ຄວາມຈຳ 2

ການເຂົ້າເຖິງຫນ່ວຍຄວາມຈໍາຂໍ້ມູນ ເວລາ

ພາກນີ້ອະທິບາຍແນວຄວາມຄິດການກໍານົດເວລາການເຂົ້າເຖິງທົ່ວໄປສໍາລັບການເຂົ້າເຖິງຫນ່ວຍຄວາມຈໍາພາຍໃນ. ການເຂົ້າເຖິງ SRAM ຂໍ້ມູນພາຍໃນແມ່ນດໍາເນີນຢູ່ໃນສອງວົງຈອນ clkCPU ຕາມທີ່ໄດ້ອະທິບາຍໄວ້ໃນ ຮູບທີ 5-3.

ຮູບ 5-3. On-chip Data SRAM ວົງຈອນການເຂົ້າເຖິງ ກ່ຽວກັບຂໍ້ມູນຊິບ ຫນ່ວຍຄວາມຈໍາຂໍ້ມູນ EEPROM

ATtiny25/45/85 ມີ 128/256/512 bytes ຂອງຂໍ້ມູນ EEPROM memory. ມັນຖືກຈັດເປັນພື້ນທີ່ຂໍ້ມູນແຍກຕ່າງຫາກ, ເຊິ່ງ bytes ດຽວສາມາດອ່ານແລະຂຽນໄດ້. EEPROM ມີຄວາມອົດທົນຢ່າງໜ້ອຍ 100,000 ຮອບຂຽນ/ລຶບ. ການເຂົ້າເຖິງລະຫວ່າງ EEPROM ແລະ CPU ໄດ້ຖືກອະທິບາຍໄວ້ໃນຕໍ່ໄປນີ້, ລະບຸການລົງທະບຽນທີ່ຢູ່ EEPROM, ການລົງທະບຽນຂໍ້ມູນ EEPROM ແລະ EEPROM Control Register. ສໍາລັບລາຍລະອຽດເບິ່ງ “ການ​ດາວ​ໂຫຼດ​ຊຸດ” ຢູ່​ໜ້າ 151.

EEPROM ອ່ານ/ຂຽນການເຂົ້າເຖິງ

ການລົງທະບຽນການເຂົ້າເຖິງ EEPROM ແມ່ນສາມາດເຂົ້າເຖິງໄດ້ໃນພື້ນທີ່ I/O.

ເວລາຂຽນການເຂົ້າເຖິງສໍາລັບ EEPROM ແມ່ນໃຫ້ຢູ່ໃນ ຕາຕະລາງ 5-1 ໃນ ໜ້າ 21. ຢ່າງໃດກໍຕາມ, ຟັງຊັນກໍານົດເວລາດ້ວຍຕົນເອງເຮັດໃຫ້ຊອບແວຜູ້ໃຊ້ສາມາດກວດພົບວ່າ byte ຕໍ່ໄປສາມາດຂຽນໄດ້. ຖ້າລະຫັດຜູ້ໃຊ້ມີຄໍາແນະນໍາທີ່ຂຽນ EEPROM, ບາງຂໍ້ຄວນລະມັດລະວັງ. ໃນການສະຫນອງພະລັງງານທີ່ມີການກັ່ນຕອງຫຼາຍ, VCC ມີແນວໂນ້ມທີ່ຈະເພີ່ມຂຶ້ນຫຼືຫຼຸດລົງຊ້າໆ

ພະລັງງານຂຶ້ນ/ລົງ. ອັນນີ້ເຮັດໃຫ້ອຸປະກອນໃນບາງຊ່ວງເວລາແລ່ນຢູ່ທີ່ voltage ຕ່ໍາກວ່າທີ່ລະບຸໄວ້ເປັນຕໍາ່ສຸດທີ່ສໍາລັບຄວາມຖີ່ຂອງໂມງທີ່ໃຊ້. ເບິ່ງ “ການປ້ອງກັນການສໍ້ລາດບັງຫຼວງຂອງ EEPROM” ໃນໜ້າ 19 ສໍາລັບລາຍລະອຽດກ່ຽວກັບວິທີການຫຼີກເວັ້ນບັນຫາໃນສະຖານະການເຫຼົ່ານີ້.

ເພື່ອປ້ອງກັນການຂຽນ EEPROM ໂດຍບໍ່ໄດ້ຕັ້ງໃຈ, ຕ້ອງປະຕິບັດຕາມຂັ້ນຕອນການຂຽນສະເພາະ. ອ້າງ​ເຖິງ “ປະລໍາມະນູ ການຂຽນໂປລແກລມ Byte” ໃນໜ້າທີ 17 ແລະ “Split Byte Programming” ຢູ່ໜ້າ 17 ສຳ ລັບລາຍລະອຽດກ່ຽວກັບເລື່ອງນີ້.

ເມື່ອ EEPROM ຖືກອ່ານ, CPU ຖືກຢຸດເປັນເວລາສີ່ຮອບວຽນກ່ອນທີ່ຄໍາແນະນໍາຕໍ່ໄປຈະຖືກປະຕິບັດ. ເມື່ອ EEPROM ຖືກຂຽນ, CPU ຖືກຢຸດສໍາລັບສອງຮອບວຽນໂມງກ່ອນທີ່ຄໍາແນະນໍາຕໍ່ໄປຈະຖືກປະຕິບັດ.

ການຂຽນໂປລແກລມ Atomic Byte

ການນໍາໃຊ້ Atomic Byte Programming ແມ່ນຮູບແບບທີ່ງ່າຍດາຍທີ່ສຸດ. ເມື່ອຂຽນ byte ກັບ EEPROM, ຜູ້ໃຊ້ຕ້ອງຂຽນທີ່ຢູ່ເຂົ້າໄປໃນ EEAR Register ແລະຂໍ້ມູນເຂົ້າໄປໃນ EEDR Register. ຖ້າ EEPMn bits ເປັນສູນ, ການຂຽນ EEPE (ພາຍໃນສີ່ຮອບຫຼັງຈາກຂຽນ EEMPE) ຈະກະຕຸ້ນການເຮັດວຽກຂອງ erase/write. ທັງສອງວົງຈອນການລົບແລະການຂຽນແມ່ນເຮັດໃນການດໍາເນີນງານຫນຶ່ງແລະເວລາການຂຽນໂປຼແກຼມທັງຫມົດແມ່ນໃຫ້ຢູ່ໃນ ຕາຕະລາງ 5-1 ໃນ ໜ້າ 21. ບິດ EEPE ຍັງຄົງຖືກຕັ້ງໄວ້ຈົນກ່ວາການລຶບ ແລະການຂຽນສຳເລັດ. ໃນຂະນະທີ່ອຸປະກອນບໍ່ຫວ່າງກັບການຂຽນໂປລແກລມ, ມັນເປັນໄປບໍ່ໄດ້ທີ່ຈະດໍາເນີນການ EEPROM ອື່ນໆ.

ການຂຽນໂປລແກລມ Split Byte

ມັນເປັນໄປໄດ້ທີ່ຈະແບ່ງວົງຈອນການລຶບແລະຂຽນໃນສອງການດໍາເນີນງານທີ່ແຕກຕ່າງກັນ. ນີ້ອາດຈະເປັນປະໂຫຍດຖ້າລະບົບຕ້ອງການເວລາເຂົ້າເຖິງສັ້ນສໍາລັບໄລຍະເວລາຈໍາກັດບາງເວລາ (ໂດຍປົກກະຕິຖ້າການສະຫນອງພະລັງງານ voltage ຕົກ). ເພື່ອ​ເອົາ​ຄວາມ​ກ້າວ​ຫນ້າ tage ຂອງວິທີການນີ້, ມັນຈໍາເປັນຕ້ອງໄດ້ກໍານົດສະຖານທີ່ທີ່ຈະຂຽນໄດ້ຖືກລຶບລ້າງກ່ອນທີ່ຈະດໍາເນີນການຂຽນ. ແຕ່ເນື່ອງຈາກການປະຕິບັດການລຶບແລະການຂຽນຖືກແບ່ງອອກ, ມັນເປັນໄປໄດ້ທີ່ຈະເຮັດການລົບລ້າງໃນເວລາທີ່ລະບົບອະນຸຍາດໃຫ້ດໍາເນີນການທີ່ໃຊ້ເວລາທີ່ສໍາຄັນ (ໂດຍປົກກະຕິຫຼັງຈາກ Power-up).

ລົບ

ເພື່ອລຶບ byte, ທີ່ຢູ່ຈະຕ້ອງຂຽນໃສ່ EEAR. ຖ້າ EEPMn bits ແມ່ນ 0b01, ການຂຽນ EEPE (ພາຍໃນສີ່ຮອບຫຼັງຈາກ EEMPE ຖືກຂຽນ) ຈະກະຕຸ້ນການດໍາເນີນການລົບເທົ່ານັ້ນ (ເວລາການຂຽນໂປຼແກຼມແມ່ນໃຫ້ຢູ່ໃນ ຕາຕະລາງ 5-1 ກ່ຽວກັບ ໜ້າ 21). ບິດ EEPE ຍັງຖືກຕັ້ງໄວ້ຈົນກ່ວາການດໍາເນີນການລຶບສໍາເລັດ. ໃນຂະນະທີ່ອຸປະກອນກໍາລັງດໍາເນີນໂຄງການບໍ່ຫວ່າງ, ມັນເປັນໄປບໍ່ໄດ້ທີ່ຈະດໍາເນີນການ EEPROM ອື່ນໆ.

ຂຽນ

ເພື່ອຂຽນສະຖານທີ່, ຜູ້ໃຊ້ຕ້ອງຂຽນທີ່ຢູ່ເຂົ້າໄປໃນ EEAR ແລະຂໍ້ມູນເຂົ້າໄປໃນ EEDR. ຖ້າ EEPMn bits ແມ່ນ 0b10, ການຂຽນ EEPE (ພາຍໃນສີ່ຮອບວຽນຫຼັງຈາກຂຽນ EEMPE) ຈະກະຕຸ້ນການເຮັດວຽກຂອງການຂຽນເທົ່ານັ້ນ (ເວລາການຂຽນໂປຼແກຼມແມ່ນໃຫ້ຢູ່ໃນ. ຕາຕະລາງ 5-1 ໃນ ໜ້າ 21). ບິດ EEPE ຍັງຖືກຕັ້ງໄວ້ຈົນກ່ວາການດໍາເນີນການຂຽນສໍາເລັດ. ຖ້າສະຖານທີ່ທີ່ຈະຂຽນບໍ່ໄດ້ຖືກລຶບລ້າງກ່ອນທີ່ຈະຂຽນ, ຂໍ້ມູນທີ່ເກັບໄວ້ຕ້ອງຖືວ່າເປັນການສູນເສຍ. ໃນຂະນະທີ່ອຸປະກອນບໍ່ຫວ່າງກັບການຂຽນໂປລແກລມ, ມັນເປັນໄປບໍ່ໄດ້ທີ່ຈະດໍາເນີນການ EEPROM ອື່ນໆ.

Oscillator calibrated ແມ່ນໃຊ້ເພື່ອເວລາທີ່ EEPROM ເຂົ້າເຖິງ. ໃຫ້ແນ່ໃຈວ່າຄວາມຖີ່ Oscillator ຢູ່ໃນຂໍ້ກໍານົດທີ່ອະທິບາຍໄວ້ໃນ “OSCCAL – Oscillator Calibration Register” ໃນໜ້າທີ 31.

ລະຫັດຕໍ່ໄປນີ້ examples ສະແດງການປະກອບຫນຶ່ງແລະຟັງຊັນ C ຫນຶ່ງສໍາລັບການລຶບ, ຂຽນ, ຫຼືການຂຽນປະລໍາມະນູຂອງ EEPROM. ອະດີດamples ສົມມຸດວ່າການຂັດຂວາງຖືກຄວບຄຸມ (ຕົວຢ່າງ, ໂດຍການປິດການຂັດຂວາງທົ່ວໂລກ) ເພື່ອບໍ່ໃຫ້ມີການຂັດຂວາງໃນລະຫວ່າງການປະຕິບັດຫນ້າທີ່ເຫຼົ່ານີ້.

Assembly Code Example
EEPROM_write:

; ລໍຖ້າການສໍາເລັດການຂຽນທີ່ຜ່ານມາ

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

ret

C ລະຫັດ Example
void EEPROM_write(unsigned char ucAddress, unsigned char ucData)

{

/* ລໍ​ຖ້າ​ສໍາ​ລັບ​ການ​ສໍາ​ເລັດ​ຂອງ​ການ​ຂຽນ​ທີ່​ຜ່ານ​ມາ */ ໃນ​ຂະ​ນະ​ທີ່ (EECR & (1<

;

/* ຕັ້ງ​ໂໝດ​ການ​ຂຽນ​ໂປຣ​ແກຣມ */

EECR = (0<

/* ຕັ້ງຄ່າທີ່ຢູ່ແລະຂໍ້ມູນລົງທະບຽນ */ EEAR = ucAddress;

EEDR = ucData;

/* ຂຽນຢ່າງມີເຫດຜົນໃສ່ EEMPE */

EECR |= (1<

/* ເລີ່ມຂຽນ eeprom ໂດຍການຕັ້ງຄ່າ EEPE */

EECR |= (1<

}

ລະຫັດຕໍ່ໄປ examples ສະແດງການປະກອບແລະຟັງຊັນ C ສໍາລັບການອ່ານ EEPROM. ອະດີດamples ສົມມຸດວ່າການຂັດຂວາງຖືກຄວບຄຸມເພື່ອບໍ່ໃຫ້ມີການຂັດຂວາງໃດໆເກີດຂື້ນໃນລະຫວ່າງການປະຕິບັດຫນ້າທີ່ເຫຼົ່ານີ້.

Assembly Code Example
EEPROM_ອ່ານ:

; ລໍຖ້າການສໍາເລັດການຂຽນທີ່ຜ່ານມາ

sbic EECR,EEPE

rjmp EEPROM_read

; ຕັ້ງຄ່າທີ່ຢູ່ (r18:r17) ໃນທະບຽນທີ່ຢູ່

ອອກ EEARH, r18

ອອກ EEARL, r17

; ເລີ່ມ eeprom ອ່ານໂດຍການຂຽນ EERE

sbi EECR, EERE

; ອ່ານຂໍ້ມູນຈາກທະບຽນຂໍ້ມູນ

ໃນ r16,EEDR

ret

C ລະຫັດ Example
unsigned char EEPROM_read(unsigned char ucAddress)

{

/* ລໍ​ຖ້າ​ສໍາ​ລັບ​ການ​ສໍາ​ເລັດ​ຂອງ​ການ​ຂຽນ​ທີ່​ຜ່ານ​ມາ */

ໃນຂະນະທີ່(EECR & (1<

;

/* ຕັ້ງຄ່າລົງທະບຽນທີ່ຢູ່ */ EEAR = ucAddress;

/* ເລີ່ມ eeprom ອ່ານໂດຍການຂຽນ EERE */

EECR |= (1<

/* ກັບຄືນຂໍ້ມູນຈາກການລົງທະບຽນຂໍ້ມູນ */

ກັບຄືນ EEDR;

}

ປ້ອງກັນການສໍ້ລາດບັງຫຼວງ EEPROM

ໃນລະຫວ່າງໄລຍະເວລາຂອງ VCC ຕ່ໍາ, ຂໍ້ມູນ EEPROM ສາມາດເສຍຫາຍໄດ້ເນື່ອງຈາກການສະຫນອງ voltage ແມ່ນຕໍ່າເກີນໄປສໍາລັບ CPU ແລະ EEPROM ທີ່ຈະເຮັດວຽກຢ່າງຖືກຕ້ອງ. ບັນຫາເຫຼົ່ານີ້ແມ່ນຄືກັນກັບລະບົບລະດັບກະດານທີ່ໃຊ້ EEPROM, ແລະວິທີແກ້ໄຂການອອກແບບດຽວກັນຄວນໄດ້ຮັບການນໍາໃຊ້.

ການສໍ້ລາດບັງຫຼວງຂໍ້ມູນ EEPROM ສາມາດເກີດຈາກສອງສະຖານະການເມື່ອ voltage ແມ່ນຕໍ່າເກີນໄປ. ຫນ້າທໍາອິດ, ລໍາດັບການຂຽນແບບປົກກະຕິກັບ EEPROM ຮຽກຮ້ອງໃຫ້ມີຈໍານວນຕໍາ່ສຸດທີ່tage ເພື່ອດໍາເນີນການຢ່າງຖືກຕ້ອງ. ອັນທີສອງ, CPU ຕົວຂອງມັນເອງສາມາດປະຕິບັດຄໍາແນະນໍາທີ່ບໍ່ຖືກຕ້ອງ, ຖ້າການສະຫນອງ voltage ແມ່ນຕໍ່າເກີນໄປ.

ຂໍ້ມູນການສໍ້ລາດບັງຫຼວງຂອງ EEPROM ສາມາດຫຼີກເວັ້ນໄດ້ຢ່າງງ່າຍດາຍໂດຍການປະຕິບັດຕາມຄໍາແນະນໍາການອອກແບບນີ້:

ຮັກສາ AVR RESET ເຄື່ອນໄຫວ (ຕໍ່າ) ໃນລະຫວ່າງໄລຍະເວລາຂອງການສະຫນອງພະລັງງານບໍ່ພຽງພໍ voltage. ອັນນີ້ສາມາດເຮັດໄດ້ໂດຍການເປີດເຄື່ອງກວດຈັບສີນ້ຳຕານອອກພາຍໃນ (BOD). ຖ້າລະດັບການກວດພົບຂອງ BOD ພາຍໃນບໍ່ກົງກັບ

ລະດັບການກວດສອບທີ່ຈໍາເປັນ, ວົງຈອນປ້ອງກັນການຕັ້ງ VCC ຕ່ໍາພາຍນອກສາມາດນໍາໃຊ້ໄດ້. ຖ້າການຕັ້ງຄືນໃຫມ່ເກີດຂື້ນໃນຂະນະທີ່ການດໍາເນີນງານການຂຽນກໍາລັງດໍາເນີນ, ການດໍາເນີນງານການຂຽນຈະສໍາເລັດໂດຍສະຫນອງການສະຫນອງພະລັງງານ voltage ແມ່ນພຽງພໍ.

ໜ່ວຍຄວາມຈຳ I/O

ຄໍານິຍາມຊ່ອງ I/O ຂອງ ATtiny25/45/85 ແມ່ນສະແດງຢູ່ໃນ “ບົດສະຫຼຸບການລົງທະບຽນ” ຢູ່ໜ້າ 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 addresses ຈະຕ້ອງໃຊ້ 0x00 – 0x3F. ເມື່ອທີ່ຢູ່ I/O Registers ເປັນພື້ນທີ່ຂໍ້ມູນໂດຍໃຊ້ຄໍາແນະນໍາ LD ແລະ ST, 0x20 ຕ້ອງຖືກເພີ່ມໃສ່ທີ່ຢູ່ເຫຼົ່ານີ້.

ສໍາລັບຄວາມເຂົ້າກັນໄດ້ກັບອຸປະກອນໃນອະນາຄົດ, bits ສະຫງວນຄວນຈະຖືກຂຽນເປັນສູນຖ້າເຂົ້າເຖິງ. ທີ່ຢູ່ຄວາມຈຳ I/O ທີ່ສະຫງວນໄວ້ບໍ່ຄວນຖືກຂຽນ.

ທຸງສະຖານະບາງອັນຖືກລຶບລ້າງໂດຍການຂຽນອັນສົມເຫດສົມຜົນໃຫ້ກັບພວກມັນ. ໃຫ້ສັງເກດວ່າຄໍາແນະນໍາ CBI ແລະ SBI ຈະດໍາເນີນການພຽງແຕ່ກ່ຽວກັບບິດທີ່ລະບຸໄວ້, ແລະດັ່ງນັ້ນຈຶ່ງສາມາດຖືກນໍາໃຊ້ໃນທະບຽນທີ່ມີທຸງສະຖານະດັ່ງກ່າວ. ຄໍາແນະນໍາ CBI ແລະ SBI ເຮັດວຽກກັບທະບຽນ 0x00 ຫາ 0x1F ເທົ່ານັ້ນ.

ການລົງທະບຽນ I/O ແລະ Peripherals Control Registers ໄດ້ຖືກອະທິບາຍໃນພາກຕໍ່ໄປ.

ລົງທະບຽນລາຍລະອຽດ

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

Bits 7:1 – Res: Reserved Bits

ບິດເຫຼົ່ານີ້ຖືກສະຫງວນໄວ້ເພື່ອນຳໃຊ້ໃນອະນາຄົດ ແລະຈະອ່ານເປັນສູນສະເໝີ.

Bits 0 – EEAR8: ທີ່ຢູ່ EEPROM

ນີ້ແມ່ນຈຸດທີ່ຢູ່ EEPROM ທີ່ສໍາຄັນທີ່ສຸດຂອງ ATtiny85. ໃນອຸປະກອນທີ່ມີ EEPROM ໜ້ອຍ, ເຊັ່ນ: ATtiny25/ATtiny45, ບິດນີ້ຖືກສະຫງວນໄວ້ ແລະຈະອ່ານສູນສະເໝີ. ຄ່າເບື້ອງຕົ້ນຂອງທະບຽນທີ່ຢູ່ EEPROM (EEAR) ແມ່ນບໍ່ໄດ້ກໍານົດໄວ້ ແລະຄ່າທີ່ຖືກຕ້ອງຈະຕ້ອງຖືກຂຽນໄວ້ກ່ອນທີ່ EEPROM ຈະເຂົ້າເຖິງ.

EEARL – EEPROM ລົງທະບຽນທີ່ຢູ່

ບິດ

0x1E EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0 EERL
ດ້ານຫຼັງ/ຂຽນ R/W R/W R/W R/W R/W R/W R/W R/W
ຄ່າເລີ່ມຕົ້ນ X X X X X X X X

Bit 7 – EEAR7: ທີ່ຢູ່ EEPROM

ນີ້ແມ່ນຈຸດທີ່ຢູ່ EEPROM ທີ່ສໍາຄັນທີ່ສຸດຂອງ ATtiny45. ໃນອຸປະກອນທີ່ມີ EEPROM ໜ້ອຍ, ເຊັ່ນ: ATtiny25, ບິດນີ້ຖືກສະຫງວນໄວ້ ແລະຈະອ່ານສູນສະເໝີ. ຄ່າເບື້ອງຕົ້ນຂອງການລົງທະບຽນທີ່ຢູ່ EEPROM (EEAR) ແມ່ນບໍ່ໄດ້ກໍານົດແລະຄ່າທີ່ເຫມາະສົມຕ້ອງໄດ້ຮັບການຂຽນກ່ອນທີ່ຈະເຂົ້າເຖິງ EEPROM.

Bits 6:0 – EEAR[6:0]: ທີ່ຢູ່ EEPROM

ເຫຼົ່ານີ້ແມ່ນ (ຕ່ໍາ) bits ຂອງການລົງທະບຽນທີ່ຢູ່ 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 Register ມີຂໍ້ມູນທີ່ຈະຂຽນໃສ່ EEPROM ໃນທີ່ຢູ່ທີ່ໃຫ້ໂດຍ EEAR Register. ສໍາລັບການດໍາເນີນງານການອ່ານ EEPROM, EEDR ມີຂໍ້ມູນທີ່ອ່ານອອກຈາກ

EEPROM ຢູ່​ທີ່​ຢູ່​ໃຫ້​ໂດຍ EEAR.

 

5.5.4 EECR – EEPROM Control Register

ບິດ 7 6 5 4 3 2 1 0
ຂະ ໜາດ 0x1C        – EEPM1 EEPM0 ເອີ້ຍ 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

Bit 7 - Res: ສະຫງວນບິດ

ບິດນີ້ຖືກສະຫງວນໄວ້ສໍາລັບການນໍາໃຊ້ໃນອະນາຄົດແລະສະເຫມີຈະອ່ານເປັນ 0 ໃນ ATtiny25/45/85. ເພື່ອຄວາມເຂົ້າກັນໄດ້ກັບອຸປະກອນ AVR ໃນອະນາຄົດ, ໃຫ້ຂຽນບິດນີ້ໃຫ້ເປັນສູນສະເໝີ. ຫຼັງ​ຈາກ​ການ​ອ່ານ​, ຫນ້າ​ກາກ​ນີ້​ອອກ​.

Bit 6 - Res: ສະຫງວນບິດ

ບິດນີ້ຖືກສະຫງວນໄວ້ໃນ ATtiny25/45/85 ແລະຈະອ່ານເປັນສູນສະເໝີ.

Bits 5:4 – EEPM[1:0]: EEPROM Programming Mode Bits

ການຕັ້ງຄ່າ EEPROM ບິດເບດຂອງໂໝດການຂຽນໂປຣແກຣມຈະກຳນົດການກະທຳການຂຽນໂປຣແກຣມອັນໃດທີ່ຈະຖືກກະຕຸ້ນເມື່ອຂຽນ EEPE. ມັນເປັນໄປໄດ້ທີ່ຈະດໍາເນີນໂຄງການຂໍ້ມູນໃນການປະຕິບັດປະລໍາມະນູຫນຶ່ງ (ລົບຄ່າເກົ່າແລະຕັ້ງຄ່າໃຫມ່) ຫຼືແບ່ງການດໍາເນີນການ Erase ແລະ Write ໃນສອງການດໍາເນີນງານທີ່ແຕກຕ່າງກັນ. ເວລາການຂຽນໂປຼແກຼມສໍາລັບໂຫມດທີ່ແຕກຕ່າງກັນແມ່ນສະແດງຢູ່ໃນ ຕາຕະລາງ 5-1. ໃນຂະນະທີ່ EEPE ຖືກຕັ້ງ, ການຂຽນໃດໆກັບ EEPMn ຈະຖືກລະເລີຍ. ໃນລະຫວ່າງການຣີເຊັດ, EEPMn bits ຈະຖືກຣີເຊັດເປັນ 0b00 ເວັ້ນເສຍແຕ່ວ່າ EEPROM ຈະບໍ່ຫວ່າງໃນການຂຽນໂປຼແກຼມ.

ຕາຕະລາງ 5-1. EEPROM Mode Bits

EEPM1 EEPM0 ເວລາດໍາເນີນໂຄງການ ການດໍາເນີນງານ
0 0 3.4 ມລ ລຶບ ແລະຂຽນໃນຄຳສັ່ງດຽວ (ການດຳເນີນການປະລໍາມະນູ)
0 1 1.8 ມລ ລຶບເທົ່ານັ້ນ
1 0 1.8 ມລ ຂຽນເທົ່ານັ້ນ
1 1 ສະຫງວນໄວ້ສໍາລັບການນໍາໃຊ້ໃນອະນາຄົດ

Bit 3 – EERIE: EEPROM Ready Interrupt Enable

ການຂຽນ EERIE ໃສ່ອັນຫນຶ່ງເຮັດໃຫ້ EEPROM Ready Interrupt ຖ້າ I-bit ໃນ SREG ຖືກຕັ້ງ. ການຂຽນ EERIE ກັບສູນຈະປິດການລົບກວນ. EEPROM Ready Interrupt ສ້າງການຂັດຈັງຫວະຄົງທີ່ເມື່ອໜ່ວຍຄວາມຈຳທີ່ບໍ່ມີການລະເຫີຍແມ່ນກຽມພ້ອມສໍາລັບການຂຽນໂປຣແກຣມ.

Bit 2 – EEMPE: EEPROM Master Program Enable

ບິດ EEMPE ກໍານົດວ່າການຂຽນ EEPE ໄປຫາຫນຶ່ງຈະມີຜົນຫຼືບໍ່.

ເມື່ອ EEMPE ຖືກຕັ້ງ, ການຕັ້ງຄ່າ EEPE ພາຍໃນສີ່ຮອບວຽນໂມງຈະດໍາເນີນໂຄງການ EEPROM ຢູ່ທີ່ທີ່ຢູ່ທີ່ເລືອກ. ຖ້າ EEMPE ເປັນສູນ, ການຕັ້ງຄ່າ EEPE ຈະບໍ່ມີຜົນກະທົບ. ເມື່ອ EEMPE ໄດ້ຖືກຂຽນໄປຫາຫນຶ່ງໂດຍຊອບແວ, ຮາດແວຈະລ້າງບິດເປັນສູນຫຼັງຈາກສີ່ຮອບວຽນໂມງ.

Bit 1 – EEPE: ໂຄງການ EEPROM ເປີດໃຊ້ງານ

ໂປຣແກມ EEPROM Enable Signal EEPE ແມ່ນໂປຣແກມເປີດໃຊ້ສັນຍານ EEPROM. ເມື່ອ EEPE ຖືກຂຽນ, EEPROM ຈະຖືກດໍາເນີນໂຄງການຕາມການຕັ້ງຄ່າ EEPMn bits. ບິດ EEMPE ຕ້ອງຖືກຂຽນໃສ່ອັນໜຶ່ງກ່ອນທີ່ອັນໜຶ່ງຈະຂຽນເປັນ EEPE, ຖ້າບໍ່ດັ່ງນັ້ນ ບໍ່ມີການຂຽນ EEPROM ເກີດຂຶ້ນ. ເມື່ອເວລາເຂົ້າເຖິງການຂຽນໄດ້ຜ່ານໄປ, ບິດ EEPE ຈະຖືກລຶບລ້າງໂດຍຮາດແວ. ເມື່ອ EEPE ໄດ້ຖືກຕັ້ງ, CPU ຖືກຢຸດເປັນສອງຮອບກ່ອນທີ່ຄໍາແນະນໍາຕໍ່ໄປຈະຖືກປະຕິບັດ.

Bit 0 – EERE: EEPROM Read Enable

The EEPROM Read Enable Signal – EERE – ແມ່ນການອ່ານ strobe ກັບ EEPROM. ເມື່ອທີ່ຢູ່ທີ່ຖືກຕ້ອງຖືກຕັ້ງໄວ້ໃນ EEAR Register, EERE bit ຕ້ອງຖືກຂຽນໃສ່ອັນໜຶ່ງເພື່ອກະຕຸ້ນໃຫ້ EEPROM ອ່ານ. ການເຂົ້າເຖິງການອ່ານ EEPROM ໃຊ້ເວລາຄໍາແນະນໍາຫນຶ່ງ, ແລະຂໍ້ມູນທີ່ຮ້ອງຂໍແມ່ນມີໃຫ້ທັນທີ. ເມື່ອ EEPROM ຖືກອ່ານ, CPU ຖືກຢຸດສໍາລັບສີ່ຮອບກ່ອນທີ່ຈະດໍາເນີນການຄໍາສັ່ງຕໍ່ໄປ. ຜູ້​ໃຊ້​ຄວນ​ຈະ​ສໍາ​ຫຼວດ bit EEPE ກ່ອນ​ທີ່​ຈະ​ເລີ່ມ​ຕົ້ນ​ການ​ດໍາ​ເນີນ​ງານ​ການ​ອ່ານ​. ຖ້າການດໍາເນີນການຂຽນກໍາລັງດໍາເນີນຢູ່, ມັນເປັນໄປບໍ່ໄດ້ທີ່ຈະອ່ານ EEPROM, ຫຼືປ່ຽນທະບຽນ EEAR.

ຕົວເລືອກໂມງລະບົບ ແລະໂມງ

ລະບົບໂມງແລະການແຜ່ກະຈາຍຂອງພວກເຂົາ

ການແຈກຢາຍໂມງ

CPU Clock

ໂມງ CPU ຖືກສົ່ງໄປຫາພາກສ່ວນຕ່າງໆຂອງລະບົບທີ່ກ່ຽວຂ້ອງກັບການເຮັດວຽກຂອງຫຼັກ AVR. ຕົວຢ່າງampຮູບແບບຂອງໂມດູນດັ່ງກ່າວແມ່ນການລົງທະບຽນຈຸດປະສົງທົ່ວໄປ File, ການລົງທະບຽນສະຖານະ ແລະຫນ່ວຍຄວາມຈໍາຂໍ້ມູນຖືຕົວຊີ້ Stack. ການຢຸດໂມງ CPU ຂັດຂວາງຫຼັກຈາກການດໍາເນີນການທົ່ວໄປແລະການຄິດໄລ່.

ໂມງ I/O – clkI/O

ໂມງ I/O ແມ່ນໃຊ້ໂດຍໂມດູນ I/O ສ່ວນໃຫຍ່, ເຊັ່ນໂມງຈັບເວລາ/ຕົວນັບ. ໂມງ I/O ຍັງຖືກໃຊ້ໂດຍໂມດູນການລົບກວນພາຍນອກ, ແຕ່ໃຫ້ສັງເກດວ່າການລົບກວນພາຍນອກບາງອັນຖືກກວດພົບໂດຍເຫດຜົນແບບບໍ່ຊິ້ງ, ອະນຸຍາດໃຫ້ກວດພົບການຂັດຈັງຫວະດັ່ງກ່າວ ເຖິງແມ່ນວ່າໂມງ I/O ຈະຢຸດເຊົາກໍຕາມ.

ໂມງແຟລດ – clkFLASH

ໂມງແຟລດຄວບຄຸມການເຮັດວຽກຂອງອິນເຕີເຟດ Flash. ໂມງແຟລດປົກກະຕິແມ່ນເຮັດວຽກພ້ອມກັນກັບໂມງ CPU.

ໂມງ ADC – clkADC

ADC ແມ່ນໃຫ້ໂດເມນໂມງສະເພາະ. ນີ້ອະນຸຍາດໃຫ້ຢຸດໂມງ CPU ແລະ I/O ເພື່ອຫຼຸດຜ່ອນສິ່ງລົບກວນທີ່ຜະລິດໂດຍວົງຈອນດິຈິຕອນ. ນີ້ເຮັດໃຫ້ຜົນໄດ້ຮັບການແປງ ADC ທີ່ຖືກຕ້ອງກວ່າ.

PLL ພາຍໃນສໍາລັບການຜະລິດໂມງ Peripheral ໄວ – clkPCK

PLL ພາຍໃນໃນ ATtiny25/45/85 ສ້າງຄວາມຖີ່ໂມງທີ່ຄູນ 8x ຈາກແຫຼ່ງທີ່ມາ. ໂດຍຄ່າເລີ່ມຕົ້ນ, PLL ໃຊ້ຜົນຜະລິດພາຍໃນ, 8.0 MHz RC oscillator ເປັນແຫຼ່ງ. ອີກທາງເລືອກ, ຖ້າບິດ LSM ຂອງ PLLCSR ຖືກກໍານົດ PLL ຈະໃຊ້ຜົນຜະລິດຂອງ RC oscillator ແບ່ງອອກດ້ວຍສອງ. ດັ່ງນັ້ນຜົນຜະລິດຂອງ PLL, ໂມງຕໍ່ເນື່ອງໄວແມ່ນ 64 MHz. ໂມງຕໍ່ຂ້າງທີ່ໄວ, ຫຼືໂມງທີ່ກຳນົດໄວ້ລ່ວງໜ້າຈາກນັ້ນ, ສາມາດເລືອກເປັນແຫຼ່ງໂມງສຳລັບໂມງຈັບເວລາ/ໂຕນັບ 1 ຫຼື ເປັນໂມງລະບົບ. ເບິ່ງ ຮູບທີ 6-2. ຄວາມຖີ່ຂອງໂມງຕໍ່ຂ້າງໄວຖືກແບ່ງອອກເປັນສອງເມື່ອ LSM ຂອງ PLLCSR ຖືກຕັ້ງ, ສົ່ງຜົນໃຫ້ຄວາມຖີ່ຂອງໂມງເປັນ 32 MHz. ໝາຍເຫດ, LSM ບໍ່ສາມາດຕັ້ງຄ່າໄດ້ຖ້າ PLLCLK ຖືກໃຊ້ເປັນໂມງລະບົບ.

ຮູບ 6-2. ລະບົບໂມງ PCK. ໂມງ PCK

PLL ຖືກລັອກຢູ່ໃນ RC oscillator ແລະການປັບ RC oscillator ໂດຍຜ່ານການລົງທະບຽນ OSCCAL ຈະປັບໂມງ peripheral ໄວໃນເວລາດຽວກັນ. ຢ່າງໃດກໍຕາມ, ເຖິງແມ່ນວ່າ RC oscillator ຈະຖືກນໍາໄປສູ່ຄວາມຖີ່ທີ່ສູງກວ່າ 8 MHz, ຄວາມຖີ່ຂອງໂມງຕໍ່ຂ້າງໄວອີ່ມຕົວຢູ່ທີ່ 85 MHz (ກໍລະນີທີ່ຮ້າຍແຮງທີ່ສຸດ) ແລະຍັງຄົງສັ່ນຢູ່ໃນຄວາມຖີ່ສູງສຸດ. ຄວນສັງເກດວ່າ PLL ໃນກໍລະນີນີ້ບໍ່ໄດ້ຖືກລັອກອີກຕໍ່ໄປດ້ວຍໂມງ RC oscillator. ດັ່ງນັ້ນ, ມັນແນະນໍາໃຫ້ບໍ່ເອົາການປັບ OSCCAL ໄປສູ່ຄວາມຖີ່ທີ່ສູງກວ່າ 8 MHz ເພື່ອຮັກສາ PLL ໃນລະດັບການປະຕິບັດທີ່ຖືກຕ້ອງ.

PLL ພາຍໃນຖືກເປີດໃຊ້ເມື່ອ:

ບິດ PLLE ໃນທະບຽນ PLLCSR ຖືກກໍານົດ.

ຟິວ CKSEL ຖືກຕັ້ງໂຄງການເປັນ '0001'.

ຟິວ CKSEL ຖືກຕັ້ງໂຄງການເປັນ '0011'.

PLOCK ບິດ PLLCSR ຖືກຕັ້ງເມື່ອ PLL ຖືກລັອກ. ທັງສອງ oscillator RC ພາຍໃນແລະ PLL ຖືກປິດຢູ່ໃນໂຫມດນອນຫຼັບແລະຢືນຢູ່.

PLL ພາຍໃນໃນໂໝດຄວາມເຂົ້າກັນໄດ້ຂອງ ATtiny15

ເນື່ອງຈາກ ATtiny25/45/85 ເປັນອຸປະກອນເຄື່ອນຍ້າຍສໍາລັບຜູ້ໃຊ້ ATtiny15 ມີຮູບແບບການເຂົ້າກັນໄດ້ຂອງ ATtiny15 ສໍາລັບຄວາມເຂົ້າກັນໄດ້ໃນດ້ານຫຼັງ. ໂໝດຄວາມເຂົ້າກັນໄດ້ຂອງ ATtiny15 ຖືກເລືອກໂດຍການຕັ້ງໂປຣແກມ CKSEL fuses ເປັນ '0011'.

ໃນໂຫມດຄວາມເຂົ້າກັນໄດ້ຂອງ ATtiny15 ຄວາມຖີ່ຂອງ RC oscillator ພາຍໃນໄດ້ຖືກປັບລົງເປັນ 6.4 MHz ແລະປັດໄຈຄູນຂອງ PLL ຖືກກໍານົດເປັນ 4x. ເບິ່ງ ຮູບທີ 6-3. ດ້ວຍການປັບຕົວເຫຼົ່ານີ້, ລະບົບໂມງແມ່ນເຂົ້າກັນໄດ້ກັບ ATtiny15 ແລະໂມງຕໍ່ເນື່ອງໄວທີ່ໄດ້ຮັບຜົນມາຈາກຄວາມຖີ່ຂອງ 25.6 MHz (ຄືກັນກັບໃນ ATtiny15).

ຮູບ 6-3. ລະບົບໂມງ PCK ໃນໂໝດເຂົ້າກັນໄດ້ຂອງ ATtiny15. ລະບົບໂມງ

ແຫຼ່ງຂໍ້ມູນໂມງ

ອຸປະກອນມີຕົວເລືອກແຫຼ່ງໂມງຕໍ່ໄປນີ້, ສາມາດເລືອກໄດ້ໂດຍ Flash Fuse bits ຕາມຮູບຂ້າງລຸ່ມນີ້. ໂມງຈາກແຫຼ່ງທີ່ເລືອກແມ່ນປ້ອນໃສ່ເຄື່ອງກຳເນີດໂມງ AVR, ແລະຖືກສົ່ງໄປຫາໂມດູນທີ່ເໝາະສົມ.

ຕາຕະລາງ 6-1. ຕົວເລືອກໂມງອຸປະກອນ ເລືອກ

ຕົວເລືອກໂມງອຸປະກອນ CKSEL[3:0](1)
ໂມງນອກ (ເບິ່ງ ໜ້າ 26) 0000
ໂມງ PLL ຄວາມຖີ່ສູງ (ເບິ່ງ ໜ້າ 26) 0001
Calibrated Oscillator ພາຍໃນ (ເບິ່ງ ໜ້າ 27) 0010(2)
Calibrated Oscillator ພາຍໃນ (ເບິ່ງ ໜ້າ 27) 0011(3)
ພາຍໃນ 128 kHz Oscillator (ເບິ່ງ ໜ້າ 28) 0100
ຄື້ນ Crystal Oscillator ຄວາມຖີ່ຕໍ່າ (ເບິ່ງ ໜ້າ 29) 0110
Crystal Oscillator / Ceramic Resonator (ເບິ່ງ ໜ້າ 29) 1000–1111
ສະຫງວນໄວ້ 0101, 0111

ສໍາລັບ fuses ທັງຫມົດ "1" ຫມາຍຄວາມວ່າ unprogrammed ໃນຂະນະທີ່ "0" ຫມາຍຄວາມວ່າໂຄງການ.

ອຸປະກອນຖືກຈັດສົ່ງໂດຍເລືອກຕົວເລືອກນີ້.

ນີ້ຈະເລືອກຮູບແບບຄວາມເຂົ້າກັນໄດ້ຂອງ ATtiny15, ເຊິ່ງໂມງລະບົບຖືກແບ່ງອອກດ້ວຍສີ່, ສົ່ງຜົນໃຫ້ຄວາມຖີ່ຂອງໂມງ 1.6 MHz. ສໍາລັບ inormation ເພີ່ມເຕີມ, ເບິ່ງ “Calibrated Internal Oscillator” ຢູ່ໜ້າ 27.

ທາງ​ເລືອກ​ຕ່າງໆ​ຂອງ​ແຕ່​ລະ​ຕົວ​ເລືອກ​ໂມງ​ແມ່ນ​ໄດ້​ຮັບ​ໃນ​ພາກ​ສ່ວນ​ຕໍ່​ໄປ​ນີ້​. ເມື່ອ CPU ຕື່ນຈາກປິດເປີດເຄື່ອງ, ແຫຼ່ງໂມງທີ່ເລືອກແມ່ນໃຊ້ເພື່ອຕັ້ງເວລາເລີ່ມຕົ້ນ, ຮັບປະກັນການເຮັດວຽກຂອງ Oscillator ທີ່ໝັ້ນຄົງກ່ອນທີ່ຈະເລີ່ມການສັ່ງສອນ. ເມື່ອ CPU ເລີ່ມຈາກການຣີເຊັດ, ມີການຊັກຊ້າເພີ່ມເຕີມທີ່ອະນຸຍາດໃຫ້ພະລັງງານສາມາດບັນລຸລະດັບຄວາມຫມັ້ນຄົງກ່ອນທີ່ຈະເລີ່ມການເຮັດວຽກປົກກະຕິ. Watchdog Oscillator ຖືກນໍາໃຊ້ສໍາລັບການກໍານົດເວລາທີ່ແທ້ຈິງຂອງເວລາເລີ່ມຕົ້ນ. ຈໍານວນຂອງຮອບວຽນ WDT Oscillator ທີ່ໃຊ້ສໍາລັບການຫມົດເວລາແຕ່ລະຄັ້ງແມ່ນສະແດງຢູ່ໃນ ຕາຕະລາງ 6-2.

ຕາຕະລາງ 6-2. ຈໍາ​ນວນ​ຂອງ Watchdog Oscillator Cycles

ພິມ Time-out ຈໍານວນຮອບວຽນ
4 ມລ 512
64 ມລ 8K (8,192)

ໂມງນອກ

ເພື່ອຂັບອຸປະກອນຈາກແຫຼ່ງໂມງພາຍນອກ, CLKI ຄວນຖືກຂັບເຄື່ອນຕາມທີ່ສະແດງຢູ່ໃນ ຮູບທີ 6-4. ເພື່ອແລ່ນອຸປະກອນຢູ່ໃນໂມງພາຍນອກ, CKSEL Fuses ຕ້ອງຖືກຕັ້ງໂຄງການເປັນ “00”.

ຮູບ 6-4. ການຕັ້ງຄ່າ Drive Clock ພາຍນອກ

ຮູບ6.4

ເມື່ອແຫຼ່ງໂມງນີ້ຖືກເລືອກ, ເວລາເລີ່ມຕົ້ນແມ່ນຖືກກໍານົດໂດຍ SUT Fuses ດັ່ງທີ່ສະແດງຢູ່ໃນ ຕາຕະລາງ 6-3.

ຕາຕະລາງ 6-3. ເວລາເລີ່ມຕົ້ນສໍາລັບການເລືອກໂມງພາຍນອກ

SUT[1:0] ເວລາເລີ່ມຕົ້ນຈາກການປິດເຄື່ອງ ການຊັກຊ້າເພີ່ມເຕີມຈາກຣີເຊັດ ການ​ນໍາ​ໃຊ້​ທີ່​ແນະ​ນໍາ​
00 6 CK 14CK ເປີດໃຊ້ BOD ແລ້ວ
01 6 CK 14CK + 4 ມສ ພະລັງງານເພີ່ມຂຶ້ນໄວ
10 6 CK 14CK + 64 ມສ ກໍາລັງ​ເພີ່ມ​ຂຶ້ນ​ຢ່າງ​ຊ້າໆ
11 ສະຫງວນໄວ້

ເມື່ອ ນຳ ໃຊ້ໂມງພາຍນອກ, ມັນ ຈຳ ເປັນຕ້ອງຫລີກລ້ຽງການປ່ຽນແປງຢ່າງກະທັນຫັນໃນຄວາມຖີ່ຂອງໂມງທີ່ ນຳ ໃຊ້ເພື່ອຮັບປະກັນການເຮັດວຽກທີ່ ໝັ້ນ ຄົງຂອງ MCU. ການປ່ຽນແປງຂອງຄວາມຖີ່ຫຼາຍກ່ວາ 2% ຈາກຮອບວຽນຫນຶ່ງໂມງໄປຫາຕໍ່ໄປສາມາດນໍາໄປສູ່ພຶດຕິກໍາທີ່ບໍ່ສາມາດຄາດເດົາໄດ້. ມັນຈໍາເປັນຕ້ອງຮັບປະກັນວ່າ MCU ຖືກເກັບຮັກສາໄວ້ໃນ Reset ໃນລະຫວ່າງການປ່ຽນແປງດັ່ງກ່າວໃນຄວາມຖີ່ຂອງໂມງ.

ໃຫ້ສັງເກດວ່າ System Clock Presale ສາມາດຖືກນໍາໃຊ້ເພື່ອປະຕິບັດການປ່ຽນແປງເວລາແລ່ນຂອງຄວາມຖີ່ຂອງໂມງພາຍໃນໃນຂະນະທີ່ຍັງຮັບປະກັນການດໍາເນີນງານທີ່ຫມັ້ນຄົງ. ອ້າງ​ເຖິງ “System Clock Prescaler” ຢູ່ໜ້າ 31 ສໍາລັບລາຍລະອຽດ.

ໂມງ PLL ຄວາມຖີ່ສູງ

ມີ PLL ພາຍໃນທີ່ໃຫ້ອັດຕາໂມງ 64 MHz ທີ່ຖືກລັອກໃສ່ RC Oscillator ສໍາລັບການນໍາໃຊ້ Peripheral Timer/Counter1 ແລະສໍາລັບແຫຼ່ງໂມງຂອງລະບົບ. ເມື່ອເລືອກເປັນແຫຼ່ງໂມງຂອງລະບົບ, ໂດຍການຂຽນໂປລແກລມ CKSEL fuses ເປັນ '0001', ມັນຖືກແບ່ງອອກດ້ວຍສີ່ຄືສະແດງຢູ່ໃນ. ຕາຕະລາງ 6-4.

ຕາຕະລາງ 6-4. ໂໝດການໃຊ້ງານໂມງ PLL ຄວາມຖີ່ສູງ

CKSEL[3:0] ຄວາມຖີ່ຂອງນາມ
0001 16 MHz

ເມື່ອແຫຼ່ງໂມງນີ້ຖືກເລືອກ, ເວລາເລີ່ມຕົ້ນແມ່ນຖືກກໍານົດໂດຍ SUT fuses ດັ່ງທີ່ສະແດງຢູ່ໃນ ຕາຕະລາງ 6-5.

ຕາຕະລາງ 6-5. ເວລາເລີ່ມຕົ້ນສໍາລັບໂມງ PLL ຄວາມຖີ່ສູງ

SUT[1:0] ເວລາເລີ່ມຕົ້ນຈາກພະລັງງານລົງ ການຊັກຊ້າເພີ່ມເຕີມຈາກການຣີເຊັດການເປີດປິດ (VCC = 5.0V) ການນໍາໃຊ້ທີ່ແນະນໍາ
00 14CK+1K (1024) CK+ 4 ມສ 4 ມລ ເປີດໃຊ້ BOD ແລ້ວ

ຕາຕະລາງ 6-5. ເວລາເລີ່ມຕົ້ນສໍາລັບໂມງ PLL ຄວາມຖີ່ສູງ

SUT[1:0] ເວລາເລີ່ມຕົ້ນຈາກພະລັງງານລົງ ການຊັກຊ້າເພີ່ມເຕີມຈາກການຣີເຊັດການເປີດປິດ (VCC = 5.0V) ການນໍາໃຊ້ທີ່ແນະນໍາ
01 14CK+16K (16384) CK+ 4 ມສ 4 ມລ ພະລັງງານເພີ່ມຂຶ້ນໄວ
10 14CK+1K (1024) CK+ 64 ມສ 4 ມລ ກໍາລັງ​ເພີ່ມ​ຂຶ້ນ​ຢ່າງ​ຊ້າໆ
11 14CK+16K (16384) CK+ 64 ມສ 4 ມລ ກໍາລັງ​ເພີ່ມ​ຂຶ້ນ​ຢ່າງ​ຊ້າໆ

Calibrated Oscillator ພາຍໃນ

ໂດຍຄ່າເລີ່ມຕົ້ນ, Internal RC Oscillator ໃຫ້ເວລາປະມານ 8.0 MHz. ເຖິງແມ່ນວ່າ voltage ແລະອຸນຫະພູມຂຶ້ນກັບ, ໂມງນີ້ສາມາດປັບໄດ້ຢ່າງຖືກຕ້ອງໂດຍຜູ້ໃຊ້. ເບິ່ງ "ການປັບທຽບພາຍໃນ RC Oscillator Accu- racy” ໃນຫນ້າ 164 ແລະ “ຄວາມໄວຂອງ Oscillator ພາຍໃນ” ໃນໜ້າ 192 ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມ. ອຸປະກອນດັ່ງກ່າວຖືກສົ່ງກັບ CKDIV8 Fuse ທີ່ມີໂຄງການ. ເບິ່ງ “System Clock Prescaler” ຢູ່ໜ້າ 31 ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມ.

ໂມງນີ້ອາດຈະຖືກເລືອກເປັນໂມງລະບົບໂດຍການຕັ້ງໂປຣແກຣມ CKSEL Fuses ດັ່ງທີ່ສະແດງຢູ່ໃນ ຕາຕະລາງ 6-6 ໃນຫນ້າ

27. ຖ້າເລືອກ, ມັນຈະເຮັດວຽກໂດຍບໍ່ມີອົງປະກອບພາຍນອກ. ໃນລະຫວ່າງການຣີເຊັດ, ຮາດແວຈະໂຫຼດຄ່າການປັບຄ່າທີ່ຕັ້ງໄວ້ລ່ວງໜ້າຂອງໂປຣແກຣມເຂົ້າໃນການລົງທະບຽນ OSCCAL ແລະເຮັດໃຫ້ການປັບຄ່າ RC Oscillator ໂດຍອັດຕະໂນມັດ. ຄວາມ​ຖືກ​ຕ້ອງ​ຂອງ​ການ​ສອບ​ທຽບ​ນີ້​ແມ່ນ​ສະ​ແດງ​ໃຫ້​ເຫັນ​ເປັນ​ການ​ປັບ​ໂຮງ​ງານ​ຜະ​ລິດ​ໃນ​ ຕາຕະລາງ 21-2 ໃນ ໜ້າ 164.

ໂດຍການປ່ຽນແປງການລົງທະບຽນ OSCCAL ຈາກ SW, ເບິ່ງ “OSCCAL – Oscillator Calibration Register” ໃນໜ້າທີ 31, ມັນເປັນໄປໄດ້ທີ່ຈະໄດ້ຮັບຄວາມຖືກຕ້ອງຂອງ calibration ສູງກ່ວາການນໍາໃຊ້ການປັບໂຮງງານຜະລິດ. ຄວາມ​ຖືກ​ຕ້ອງ​ຂອງ​ການ​ສອບ​ທຽບ​ນີ້​ແມ່ນ​ສະ​ແດງ​ໃຫ້​ເຫັນ​ເປັນ​ການ​ປັບ​ຕົວ​ຜູ້​ໃຊ້​ໃນ​ ຕາຕະລາງ 21-2 ໃນ ໜ້າ 164.

ເມື່ອ Oscillator ນີ້ຖືກໃຊ້ເປັນໂມງຊິບ, Watchdog Oscillator ຈະຍັງຖືກໃຊ້ສໍາລັບການຈັບເວລາ Watchdog ແລະສໍາລັບການຕັ້ງເວລາອອກໃຫມ່. ສໍາ​ລັບ​ຂໍ້​ມູນ​ເພີ່ມ​ເຕີມ​ກ່ຽວ​ກັບ​ຄ່າ​ການ​ປັບ​ຕົວ​ຂອງ​ໂຄງ​ການ​ກ່ອນ​, ເບິ່ງ​ພາກ​ສ່ວນ​ “ຄາລີ- bration Bytes” ຢູ່ໜ້າ 150.

oscillator ພາຍໃນຍັງສາມາດຖືກກໍານົດໃຫ້ໂມງ 6.4 MHz ໂດຍການຂຽນ CKSEL fuses ກັບ "0011", ດັ່ງທີ່ສະແດງຢູ່ໃນ ຕາຕະລາງ 6-6 ຂ້າງລຸ່ມນີ້. ການຕັ້ງຄ່ານີ້ຖືກກ່າວເຖິງວ່າເປັນໂໝດຄວາມເຂົ້າກັນໄດ້ຂອງ ATtiny15 ແລະມີຈຸດປະສົງເພື່ອສະໜອງແຫຼ່ງໂມງທີ່ມີການປັບທຽບຢູ່ທີ່ 6.4 MHz, ຄືກັບໃນ ATtiny15. ໃນ ATtiny15 Compatibility Mode PLL ໃຊ້ oscillator ພາຍໃນທີ່ແລ່ນຢູ່ທີ່ 6.4 MHz ເພື່ອສ້າງສັນຍານໂມງຕໍ່ຂ້າງ 25.6 MHz ສໍາລັບ Timer/Counter1 (ເບິ່ງ. “8-bit Timer/Counter1 in ATtiny15 Mode” ໃນໜ້າ 95). ໃຫ້ສັງເກດວ່າໃນໂຫມດການເຮັດວຽກນີ້ສັນຍານໂມງ 6.4 MHz ຖືກແບ່ງອອກສະເຫມີໂດຍສີ່, ສະຫນອງໂມງລະບົບ 1.6 MHz.

ຕາຕະລາງ 6-6. ຮູບແບບການເຮັດວຽກຂອງ RC Oscillator Calibrated ພາຍໃນ

CKSEL[3:0] ຄວາມຖີ່ຂອງນາມ
0010(1) 8.0 MHz
0011(2) 6.4 MHz

ອຸປະກອນຖືກຈັດສົ່ງໂດຍເລືອກຕົວເລືອກນີ້.

ການຕັ້ງຄ່ານີ້ຈະເລືອກໂໝດຄວາມເຂົ້າກັນໄດ້ຂອງ ATtiny15, ເຊິ່ງໂມງລະບົບຖືກແບ່ງອອກດ້ວຍສີ່, ສົ່ງຜົນໃຫ້ມີຄວາມຖີ່ໂມງ 1.6 MHz.

ໃນເວລາທີ່ calibrated oscillator ພາຍໃນ 8 MHz ຖືກເລືອກເປັນແຫຼ່ງໂມງ, ເວລາເລີ່ມຕົ້ນແມ່ນຖືກກໍານົດໂດຍ SUT Fuses ດັ່ງທີ່ສະແດງຢູ່ໃນ ຕາຕະລາງ 6-7 ຂ້າງລຸ່ມນີ້.

ຕາຕະລາງ 6-7. ເວລາເລີ່ມຕົ້ນສໍາລັບໂມງ RC Oscillator Calibrated ພາຍໃນ

SUT[1:0] ເວລາເລີ່ມຕົ້ນຈາກການປິດເຄື່ອງ ການຊັກຊ້າເພີ່ມເຕີມຈາກການຣີເຊັດ (VCC = 5.0V) ການ​ນໍາ​ໃຊ້​ທີ່​ແນະ​ນໍາ​
00 6 CK 14CK(1) ເປີດໃຊ້ BOD ແລ້ວ
01 6 CK 14CK + 4 ມສ ພະລັງງານເພີ່ມຂຶ້ນໄວ
10(2) 6 CK 14CK + 64 ມສ ກໍາລັງ​ເພີ່ມ​ຂຶ້ນ​ຢ່າງ​ຊ້າໆ
11 ສະຫງວນໄວ້

1. ຖ້າຟິວ RSTDISBL ຖືກຕັ້ງໂຄງການ, ເວລາເລີ່ມຕົ້ນນີ້ຈະຖືກເພີ່ມເປັນ 14CK + 4 ms ເພື່ອຮັບປະກັນວ່າສາມາດເຂົ້າໂໝດການຂຽນໂປຼແກຼມໄດ້.
2. ອຸປະກອນຖືກສົ່ງກັບທາງເລືອກນີ້ເລືອກ.

ໃນ ATtiny15 Compatibility Mode ເວລາເລີ່ມຕົ້ນແມ່ນຖືກກໍານົດໂດຍ SUT fuses ດັ່ງທີ່ສະແດງຢູ່ໃນ ຕາຕະລາງ 6-8 ຂ້າງລຸ່ມນີ້.

ຕາຕະລາງ 6-8. ເວລາເລີ່ມຕົ້ນສໍາລັບໂມງ RC Oscillator calibrated ພາຍໃນ (ໃນໂຫມດ ATtiny15)

SUT[1:0] ເວລາເລີ່ມຕົ້ນຈາກການປິດເຄື່ອງ ການຊັກຊ້າເພີ່ມເຕີມຈາກການຣີເຊັດ (VCC = 5.0V) ການ​ນໍາ​ໃຊ້​ທີ່​ແນະ​ນໍາ​
00 6 CK 14CK + 64 ມສ
01 6 CK 14CK + 64 ມສ
10 6 CK 14CK + 4 ມສ
11 1 CK 14CK(1)

ໝາຍເຫດ: ຖ້າຟິວ RSTDISBL ຖືກຕັ້ງໂຄງການ, ເວລາເລີ່ມຕົ້ນນີ້ຈະຖືກເພີ່ມເປັນ 14CK + 4 ms ເພື່ອຮັບປະກັນວ່າສາມາດເຂົ້າໂໝດການຂຽນໂປຣແກຣມໄດ້.

ສະຫຼຸບແລ້ວ, ຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບຮູບແບບຄວາມເຂົ້າກັນໄດ້ຂອງ ATtiny15 ສາມາດພົບໄດ້ໃນພາກຕ່າງໆ “ພອດ B (PB5:PB0)” ເປີດ ໜ້າ 2“PLL ພາຍໃນໃນ ATtiny15 Compatibility Mode” ໃນໜ້າທີ 24ເປີດ “8-bit Timer/Counter1 ໃນໂໝດ ATtiny15” ໜ້າ 95“ຂໍ້ຈຳກັດຂອງ debugWIRE” ຢູ່ໜ້າ 140“Calibration Bytes” ໃນໜ້າ 150 ແລະຢູ່ໃນຕາຕະລາງ “ໂມງ Prescaler ເລືອກ” ໃນໜ້າ 33.

ພາຍໃນ 128 kHz Oscillator

Oscillator ພາຍໃນ 128 kHz ເປັນ Oscillator ພະລັງງານຕ່ໍາທີ່ສະຫນອງໂມງຂອງ 128 kHz. ຄວາມຖີ່ແມ່ນຕັ້ງໄວ້ຢູ່ທີ່ 3V ແລະ 25°C. ໂມງນີ້ອາດຈະຖືກເລືອກເປັນໂມງລະບົບໂດຍການຕັ້ງໂປຣແກຣມ CKSEL Fuses ເປັນ “0100”.

ເມື່ອແຫຼ່ງໂມງນີ້ຖືກເລືອກ, ເວລາເລີ່ມຕົ້ນແມ່ນຖືກກໍານົດໂດຍ SUT Fuses ດັ່ງທີ່ສະແດງຢູ່ໃນ ຕາຕະລາງ 6-9.

ຕາຕະລາງ 6-9. ເວລາເລີ່ມຕົ້ນສໍາລັບ Oscillator ພາຍໃນ 128 kHz

SUT[1:0] ເວລາເລີ່ມຕົ້ນຈາກການປິດເຄື່ອງ ການຊັກຊ້າເພີ່ມເຕີມຈາກຣີເຊັດ ການ​ນໍາ​ໃຊ້​ທີ່​ແນະ​ນໍາ​
00 6 CK 14CK(1) ເປີດໃຊ້ BOD ແລ້ວ
01 6 CK 14CK + 4 ມສ ພະລັງງານເພີ່ມຂຶ້ນໄວ
10 6 CK 14CK + 64 ມສ ກໍາລັງ​ເພີ່ມ​ຂຶ້ນ​ຢ່າງ​ຊ້າໆ
11 ສະຫງວນໄວ້

ໝາຍເຫດ: ຖ້າຟິວ RSTDISBL ຖືກຕັ້ງໂຄງການ, ເວລາເລີ່ມຕົ້ນນີ້ຈະຖືກເພີ່ມເປັນ 14CK + 4 ms ເພື່ອຮັບປະກັນວ່າສາມາດເຂົ້າໂໝດການຂຽນໂປຣແກຣມໄດ້.

ຄື້ນ Crystal Oscillator ຄວາມຖີ່ຕໍ່າ

ເພື່ອໃຊ້ໄປເຊຍກັນໂມງ 32.768 kHz ເປັນແຫຼ່ງໂມງສໍາລັບອຸປະກອນ, ຈະຕ້ອງເລືອກ Crystal Oscillator ຄວາມຖີ່ຕໍ່າໂດຍການຕັ້ງຟິວ CKSEL ເປັນ '0110'. ແກ້ວຄວນຖືກເຊື່ອມຕໍ່ດັ່ງທີ່ສະແດງຢູ່ໃນ ຮູບທີ 6-5. ເພື່ອຊອກຫາຄວາມອາດສາມາດໂຫຼດໄດ້ທີ່ເໝາະສົມສໍາລັບ 32.768 kHz crysal, ກະລຸນາປຶກສາກັບແຜ່ນຂໍ້ມູນຂອງຜູ້ຜະລິດ.

ເມື່ອ oscillator ນີ້ຖືກເລືອກ, ເວລາເລີ່ມຕົ້ນແມ່ນຖືກກໍານົດໂດຍ SUT fuses ດັ່ງທີ່ສະແດງຢູ່ໃນ ຕາຕະລາງ 6-10.

ຕາຕະລາງ 6-10. ເວລາເລີ່ມຕົ້ນສໍາລັບການເລືອກໂມງ Crystal Oscillator ຄວາມຖີ່ຕໍ່າ

SUT[1:0] ເວລາເລີ່ມຕົ້ນຈາກພະລັງງານລົງ ການຊັກຊ້າເພີ່ມເຕີມຈາກການຣີເຊັດ (VCC = 5.0V) ການນໍາໃຊ້ທີ່ແນະນໍາ
00 1K (1024) CK(1) 4 ມລ ພະລັງງານເພີ່ມຂຶ້ນໄວຫຼື BOD ເປີດໃຊ້
01 1K (1024) CK(1) 64 ມລ ກໍາລັງ​ເພີ່ມ​ຂຶ້ນ​ຢ່າງ​ຊ້າໆ
10 32K (32768) CK 64 ມລ ຄວາມຖີ່ຄົງທີ່ໃນເວລາເລີ່ມຕົ້ນ
11 ສະຫງວນໄວ້

ຫມາຍເຫດ: ທາງເລືອກເຫຼົ່ານີ້ຄວນຈະຖືກນໍາໃຊ້ພຽງແຕ່ຖ້າຄວາມຫມັ້ນຄົງຂອງຄວາມຖີ່ໃນເວລາເລີ່ມຕົ້ນແມ່ນບໍ່ສໍາຄັນ.

The Low-frequency Crystal Oscillator provides an internal load capacitance, ເບິ່ງ ຕາຕະລາງ 6-11 ຢູ່ແຕ່ລະ pin TOSC.

ຕາຕະລາງ 6-11. ຄວາມຈຸຂອງ Crystal Oscillator ຄວາມຖີ່ຕໍ່າ

ອຸປະກອນ 32 kHz Osc. ປະເພດ Cap (Xtal1/Tosc1) Cap (Xtal2/Tosc2)
ວັນທີ 25/45/85 ລະບົບ Osc. 16 pF 6 pF

Crystal Oscillator / Ceramic Resonator

XTAL1 ແລະ XTAL2 ແມ່ນ input ແລະ output, ຕາມລໍາດັບ, inverting amplifier ທີ່ສາມາດກໍາຫນົດຄ່າສໍາລັບການນໍາໃຊ້ເປັນ On-chip Oscillator, ດັ່ງທີ່ສະແດງຢູ່ໃນ ຮູບທີ 6-5. ອາດຈະໃຊ້ໄປເຊຍກັນ quartz ຫຼື resonator ceramic.

C1 ແລະ C2 ຄວນສະເຫມີເທົ່າທຽມກັນສໍາລັບທັງສອງໄປເຊຍກັນແລະ resonators. ມູນຄ່າທີ່ດີທີ່ສຸດຂອງ capacitors ແມ່ນຂຶ້ນກັບໄປເຊຍກັນຫຼື resonator ໃນການນໍາໃຊ້, ຈໍານວນຂອງ capacitance stray, ແລະສິ່ງລົບກວນໄຟຟ້າຂອງສະພາບແວດລ້ອມ. ບາງຄໍາແນະນໍາເບື້ອງຕົ້ນສໍາລັບການເລືອກ capacitor ສໍາລັບການນໍາໃຊ້ກັບໄປເຊຍກັນໄດ້ຖືກມອບໃຫ້ ຕາຕະລາງ 6-12 ຂ້າງລຸ່ມນີ້. ສໍາລັບ resonators ceramic, ຄ່າ capacitor ທີ່ໃຫ້ໂດຍຜູ້ຜະລິດຄວນຈະຖືກນໍາໃຊ້.

ຕາຕະລາງ 6-12. ຮູບແບບການເຮັດວຽກຂອງ Crystal Oscillator

CKSEL[3:1] ຊ່ວງຄວາມຖີ່ (MHz) ຊ່ວງທີ່ແນະນຳສຳລັບຕົວເກັບປະຈຸ C1 ແລະ C2 ສຳລັບໃຊ້ກັບ Crystals (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

ຫມາຍເຫດ: ທາງເລືອກນີ້ບໍ່ຄວນຖືກນໍາໃຊ້ກັບໄປເຊຍກັນ, ພຽງແຕ່ມີ resonators ceramic.

Oscillator ສາມາດປະຕິບັດການໃນສາມໂຫມດທີ່ແຕກຕ່າງກັນ, ແຕ່ລະ optimized ສໍາລັບຊ່ວງຄວາມຖີ່ສະເພາະໃດຫນຶ່ງ. ຮູບແບບການເຮັດວຽກແມ່ນເລືອກໂດຍຟິວ CKSEL[3:1] ດັ່ງທີ່ສະແດງຢູ່ໃນ ຕາຕະລາງ 6-12.

Fuse CKSEL0 ຮ່ວມກັບ SUT[1:0] Fuses ເລືອກເວລາເລີ່ມຕົ້ນດັ່ງທີ່ສະແດງຢູ່ໃນ ຕາຕະລາງ 6-13.

ຕາຕະລາງ 6-13. ເວລາເລີ່ມຕົ້ນສໍາລັບການເລືອກໂມງ Crystal Oscillator

CKSEL0 SUT[1:0] ເວລາເລີ່ມຕົ້ນຈາກການປິດເຄື່ອງ ການຊັກຊ້າເພີ່ມເຕີມຈາກຣີເຊັດ ການ​ນໍາ​ໃຊ້​ທີ່​ແນະ​ນໍາ​
0 00 258 CK(1) 14CK + 4 ມສ resonator ເຊລາມິກ, ພະລັງງານເພີ່ມຂຶ້ນໄວ
0 01 258 CK(1) 14CK + 64 ມສ resonator ເຊລາມິກ, ພະລັງງານເພີ່ມຂຶ້ນຊ້າ
0 10 1K (1024) CK(2) 14CK Ceramic resonator, BOD ເປີດໃຊ້ງານ
0 11 1K (1024)CK(2) 14CK + 4 ມສ resonator ເຊລາມິກ, ພະລັງງານເພີ່ມຂຶ້ນໄວ
1 00 1K (1024)CK(2) 14CK + 64 ມສ resonator ເຊລາມິກ, ພະລັງງານເພີ່ມຂຶ້ນຊ້າ
1 01 16K (16384) CK 14CK Crystal Oscillator, BOD ຖືກເປີດໃຊ້
1 10 16K (16384) CK 14CK + 4 ມສ Crystal Oscillator, ພະລັງງານເພີ່ມຂຶ້ນໄວ
1 11 16K (16384) CK 14CK + 64 ມສ Crystal Oscillator, ພະລັງງານເພີ່ມຂຶ້ນຢ່າງຊ້າໆ

ບັນທຶກ

ທາງເລືອກເຫຼົ່ານີ້ຄວນຈະຖືກນໍາໃຊ້ພຽງແຕ່ໃນເວລາທີ່ບໍ່ໄດ້ດໍາເນີນການຢູ່ໃກ້ກັບຄວາມຖີ່ສູງສຸດຂອງອຸປະກອນ, ແລະພຽງແຕ່ຖ້າຫາກວ່າສະຖຽນລະພາບຄວາມຖີ່ຂອງການເລີ່ມຕົ້ນແມ່ນບໍ່ສໍາຄັນສໍາລັບຄໍາຮ້ອງສະຫມັກ. ທາງເລືອກເຫຼົ່ານີ້ບໍ່ເຫມາະສົມສໍາລັບໄປເຊຍກັນ.

ທາງເລືອກເຫຼົ່ານີ້ແມ່ນມີຈຸດປະສົງເພື່ອນໍາໃຊ້ກັບ resonators ເຊລາມິກແລະຈະຮັບປະກັນສະຖຽນລະພາບຄວາມຖີ່ຂອງການເລີ່ມຕົ້ນ. ພວກເຂົາເຈົ້າຍັງສາມາດຖືກນໍາໃຊ້ກັບໄປເຊຍກັນໃນເວລາທີ່ບໍ່ໄດ້ດໍາເນີນການຢູ່ໃກ້ກັບຄວາມຖີ່ສູງສຸດຂອງອຸປະກອນ, ແລະຖ້າຫາກວ່າຄວາມຫມັ້ນຄົງຂອງຄວາມຖີ່ຂອງການເລີ່ມຕົ້ນແມ່ນບໍ່ສໍາຄັນສໍາລັບຄໍາຮ້ອງສະຫມັກ.

ແຫຼ່ງໂມງເລີ່ມຕົ້ນ

ອຸປະກອນໄດ້ຖືກຈັດສົ່ງດ້ວຍ CKSEL = “0010”, SUT = “10”, ແລະ CKDIV8 ດໍາເນີນໂຄງການ. ດັ່ງນັ້ນ, ການຕັ້ງຄ່າແຫຼ່ງໂມງເລີ່ມຕົ້ນແມ່ນ Internal RC Oscillator ແລ່ນຢູ່ທີ່ 8 MHz ດ້ວຍເວລາເລີ່ມຕົ້ນທີ່ດົນທີ່ສຸດ ແລະໂມງລະບົບເບື້ອງຕົ້ນແມ່ນ 8, ສົ່ງຜົນໃຫ້ໂມງລະບົບ 1.0 MHz. ການຕັ້ງຄ່າເລີ່ມຕົ້ນນີ້ຮັບປະກັນວ່າຜູ້ໃຊ້ທຸກຄົນສາມາດຕັ້ງແຫຼ່ງໂມງທີ່ຕ້ອງການຂອງເຂົາເຈົ້າໂດຍໃຊ້ In-System ຫຼື High-vol.tage Programmer.

ຕົວຂະຫຍາຍໂມງລະບົບ

ໂມງລະບົບ ATtiny25/45/85 ສາມາດແບ່ງອອກໄດ້ໂດຍການຕັ້ງຄ່າ “CLKPR – Clock Prescale Register” ຢູ່ໜ້າ 32. ຄຸນນະສົມບັດນີ້ສາມາດຖືກນໍາໃຊ້ເພື່ອຫຼຸດຜ່ອນການບໍລິໂພກພະລັງງານໃນເວລາທີ່ຄວາມຕ້ອງການສໍາລັບການພະລັງງານປະມວນຜົນຕ່ໍາ. ອັນນີ້ສາມາດໃຊ້ກັບທຸກຕົວເລືອກແຫຼ່ງໂມງ, ແລະມັນຈະສົ່ງຜົນກະທົບຕໍ່ຄວາມຖີ່ຂອງໂມງຂອງ CPU ແລະອຸປະກອນຕໍ່ພ່ວງ synchronous ທັງໝົດ. clkI/O, clkADC, clkCPU, ແລະ clkFLASH ຖືກແບ່ງອອກໂດຍປັດໃຈດັ່ງທີ່ສະແດງຢູ່ໃນ ຕາຕະລາງ 6-15 ໃນ ໜ້າ 33.

ເວລາປ່ຽນ

ເມື່ອປ່ຽນລະຫວ່າງການຕັ້ງຄ່າ prescaler, System Clock Prescaler ຮັບປະກັນວ່າບໍ່ມີຄວາມຜິດພາດເກີດຂຶ້ນໃນລະບົບໂມງ ແລະບໍ່ມີຄວາມຖີ່ລະດັບປານກາງສູງກວ່າຄວາມຖີ່ໂມງທີ່ກົງກັບການຕັ້ງຄ່າກ່ອນໜ້າ, ຫຼືຄວາມຖີ່ໂມງທີ່ກົງກັບການຕັ້ງຄ່າໃໝ່.

ຕົວນັບ ripple ທີ່ປະຕິບັດ prescaler ແລ່ນຢູ່ທີ່ຄວາມຖີ່ຂອງໂມງບໍ່ໄດ້ແບ່ງ, ເຊິ່ງອາດຈະໄວກວ່າຄວາມຖີ່ຂອງໂມງຂອງ CPU. ດັ່ງນັ້ນ, ມັນບໍ່ສາມາດກໍານົດສະຖານະຂອງ prescaler ໄດ້ - ເຖິງແມ່ນວ່າມັນສາມາດອ່ານໄດ້, ແລະເວລາທີ່ແນ່ນອນທີ່ມັນໃຊ້ເວລາເພື່ອປ່ຽນຈາກການແບ່ງໂມງຫນຶ່ງໄປຫາອີກຫນຶ່ງແມ່ນບໍ່ສາມາດຄາດເດົາໄດ້.

ຈາກເວລາທີ່ຄ່າ CLKPS ຖືກຂຽນ, ມັນໃຊ້ເວລາລະຫວ່າງ T1 + T2 ແລະ T1 + 2*T2 ກ່ອນທີ່ຄວາມຖີ່ຂອງໂມງໃຫມ່ຈະເຮັດວຽກ. ໃນໄລຍະເວລານີ້, 2 ຂອບໂມງທີ່ໃຊ້ວຽກແມ່ນຜະລິດ. ທີ່ນີ້, T1 ແມ່ນໄລຍະເວລາຂອງໂມງທີ່ຜ່ານມາ, ແລະ T2 ແມ່ນໄລຍະເວລາທີ່ສອດຄ່ອງກັບການຕັ້ງຄ່າ prescaler ໃຫມ່.

Clock Output Buffer

ອຸ​ປະ​ກອນ​ສາ​ມາດ​ສົ່ງ​ອອກ​ໂມງ​ລະ​ບົບ​ກ່ຽວ​ກັບ​ການ pin CLKO (ເມື່ອ​ບໍ່​ໄດ້​ນໍາ​ໃຊ້​ເປັນ XTAL2 pin​)​. ເພື່ອເປີດໃຊ້ງານຜົນຜະລິດ, CKOUT Fuse ຕ້ອງຖືກຕັ້ງໂຄງການ. ຮູບແບບນີ້ແມ່ນເຫມາະສົມໃນເວລາທີ່ໂມງຊິບຖືກນໍາໃຊ້ເພື່ອຂັບວົງຈອນອື່ນໆໃນລະບົບ. ຈົ່ງຈື່ໄວ້ວ່າໂມງຈະບໍ່ຖືກສົ່ງອອກໃນລະຫວ່າງການຣີເຊັດ ແລະ ການເຮັດວຽກປົກກະຕິຂອງ PIN I/O ຈະຖືກ overridden ເມື່ອຟິວຖືກຕັ້ງໂປຣແກມ. Internal RC Oscillator, WDT Oscillator, PLL, ແລະໂມງພາຍນອກ (CLKI) ສາມາດເລືອກໄດ້ເມື່ອໂມງອອກໃນ CLKO. Crystal oscillators (XTAL1, XTAL2) ບໍ່ສາມາດໃຊ້ສໍາລັບການອອກໂມງໃນ CLKO. ຖ້າໃຊ້ System Clock Prescaler, ມັນແມ່ນໂມງລະບົບທີ່ແບ່ງອອກເປັນຜົນຜະລິດ.

ລົງທະບຽນລາຍລະອຽດ

OSCCAL – ລົງທະບຽນ Oscillator Calibration

ບິດ 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

Bits 7:0 – CAL[7:0]: ຄ່າ Oscillator Calibration

ລົງທະບຽນ Oscillator Calibration Register ແມ່ນໃຊ້ເພື່ອຕັດເຄື່ອງ Calibrated RC Oscillator ພາຍໃນເພື່ອເອົາການປ່ຽນແປງຂອງຂະບວນການອອກຈາກຄວາມຖີ່ຂອງ oscillator. ຄ່າການປັບຄ່າທີ່ຕັ້ງໄວ້ກ່ອນໂຄງການຈະຖືກຂຽນໃສ່ທະບຽນນີ້ໂດຍອັດຕະໂນມັດໃນລະຫວ່າງການຣີເຊັດຊິບ, ໃຫ້ຄວາມຖີ່ການປັບທຽບກັບໂຮງງານຕາມທີ່ລະບຸໄວ້ໃນ ຕາຕະລາງ 21-2 ໃນ ໜ້າ 164. ຊອບແວຄໍາຮ້ອງສະຫມັກສາມາດຂຽນການລົງທະບຽນນີ້ເພື່ອປ່ຽນຄວາມຖີ່ຂອງ oscillator. oscillator ສາມາດຖືກປັບທຽບກັບຄວາມຖີ່ຕາມທີ່ລະບຸໄວ້ໃນ ຕາຕະລາງ 21-2 ໃນ ໜ້າ 164. ການ​ປັບ​ທຽບ​ນອກ​ຂອບ​ເຂດ​ນັ້ນ​ບໍ່​ໄດ້​ຮັບ​ການ​ຮັບ​ປະ​ກັນ.

ໃຫ້ສັງເກດວ່າ oscillator ນີ້ຖືກນໍາໃຊ້ເພື່ອໃຊ້ເວລາ EEPROM ແລະ Flash ການເຂົ້າເຖິງການຂຽນ, ແລະເວລາຂຽນເຫຼົ່ານີ້ຈະໄດ້ຮັບຜົນກະທົບຕາມຄວາມເຫມາະສົມ. ຖ້າ EEPROM ຫຼື Flash ຖືກຂຽນ, ຢ່າປັບຂະຫນາດໃຫ້ເກີນ 8.8 MHz. ຖ້າບໍ່ດັ່ງນັ້ນ, EEPROM ຫຼື Flash write ອາດຈະລົ້ມເຫລວ.

ບິດ CAL7 ກໍານົດຂອບເຂດຂອງການດໍາເນີນງານສໍາລັບ oscillator. ການຕັ້ງຄ່າບິດນີ້ເປັນ 0 ໃຫ້ຊ່ວງຄວາມຖີ່ຕໍ່າສຸດ, ການຕັ້ງຄ່າບິດນີ້ເປັນ 1 ໃຫ້ຊ່ວງຄວາມຖີ່ສູງສຸດ. ໄລຍະຄວາມຖີ່ທັງສອງແມ່ນທັບຊ້ອນກັນ, ໃນຄໍາສັບຕ່າງໆອື່ນໆ, ການຕັ້ງຄ່າຂອງ OSCCAL = 0x7F ໃຫ້ຄວາມຖີ່ສູງກວ່າ OSCCAL = 0x80.

CAL[6:0] bits ຖືກນໍາໃຊ້ເພື່ອປັບຄວາມຖີ່ພາຍໃນຂອບເຂດທີ່ເລືອກ. ການ​ຕັ້ງ​ຄ່າ 0x00 ໃຫ້​ຄວາມ​ຖີ່​ຕ​່​ໍາ​ສຸດ​ໃນ​ໄລ​ຍະ​ນັ້ນ​, ແລະ​ການ​ຕັ້ງ​ຄ່າ 0x7F ໃຫ້​ຄວາມ​ຖີ່​ທີ່​ສູງ​ທີ່​ສຸດ​ໃນ​ໄລ​ຍະ​.

ເພື່ອຮັບປະກັນການເຮັດວຽກທີ່ຫມັ້ນຄົງຂອງ MCU, ຄ່າການປັບທຽບຄວນຈະຖືກປ່ຽນແປງເປັນຂະຫນາດນ້ອຍ. ການປ່ຽນແປງໃນຄວາມຖີ່ຫຼາຍກ່ວາ 2% ຈາກວົງຈອນຫນຶ່ງໄປຫາຕໍ່ໄປສາມາດນໍາໄປສູ່ພຶດຕິກໍາທີ່ບໍ່ສາມາດຄາດເດົາໄດ້. ການປ່ຽນແປງໃນ OSCCAL ບໍ່ຄວນເກີນ 0x20 ສໍາລັບແຕ່ລະການປັບທຽບ. ມັນຈໍາເປັນຕ້ອງຮັບປະກັນວ່າ MCU ຖືກເກັບຮັກສາໄວ້ໃນ Reset ໃນລະຫວ່າງການປ່ຽນແປງດັ່ງກ່າວໃນຄວາມຖີ່ຂອງໂມງ

ຕາຕະລາງ 6-14. ຊ່ວງຄວາມຖີ່ຂອງ RC Oscillator ພາຍໃນ

ຄ່າ 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 ເບິ່ງລາຍລະອຽດເລັກນ້ອຍ

Bit 7 – CLKPCE: Clock Prescaler Change Enable

ບິດ CLKPCE ຕ້ອງຖືກຂຽນເປັນ logic ຫນຶ່ງເພື່ອເປີດໃຊ້ການປ່ຽນແປງຂອງບິດ CLKPS. ບິດ CLKPCE ພຽງແຕ່ຖືກປັບປຸງເມື່ອບິດອື່ນໆໃນ CLKPR ຖືກຂຽນພ້ອມໆກັນເປັນສູນ. CLKPCE ຖືກລຶບລ້າງໂດຍຮາດແວສີ່ຮອບວຽນຫຼັງຈາກມັນຖືກຂຽນຫຼືເມື່ອບິດ CLKPS ຖືກຂຽນ. ການຂຽນຄືນບິດ CLKPCE ພາຍໃນໄລຍະເວລາຫມົດເວລານີ້ບໍ່ໄດ້ຂະຫຍາຍໄລຍະເວລາຫມົດເວລາ, ຫຼືລຶບບິດ CLKPCE.

Bits 6:4 – Res: Reserved Bits

ບິດເຫຼົ່ານີ້ແມ່ນສະຫງວນໄວ້ຢູ່ໃນ ATtiny25/45/85 ແລະຈະອ່ານເປັນສູນສະເໝີ.

Bits 3:0 – CLKPS[3:0]: Clock Prescaler ເລືອກ Bits 3 – 0

ບິດເຫຼົ່ານີ້ກໍານົດປັດໄຈການແບ່ງລະຫວ່າງແຫຼ່ງໂມງທີ່ເລືອກແລະໂມງລະບົບພາຍໃນ. ບິດເຫຼົ່ານີ້ສາມາດຂຽນເວລາແລ່ນເພື່ອປ່ຽນຄວາມຖີ່ຂອງໂມງໃຫ້ເໝາະສົມກັບຄວາມຕ້ອງການຂອງແອັບພລິເຄຊັນ. ຍ້ອນວ່າຕົວແບ່ງແຍກການປ້ອນຂໍ້ມູນໂມງຫຼັກໄປຫາ MCU, ຄວາມໄວຂອງອຸປະກອນຕໍ່ພ່ວງ synchronous ທັງຫມົດຈະຫຼຸດລົງເມື່ອປັດໄຈການແບ່ງຖືກໃຊ້. ປັດໃຈການແບ່ງແມ່ນໃຫ້ຢູ່ໃນ ຕາຕະລາງ 6-15.

ເພື່ອຫຼີກເວັ້ນການປ່ຽນແປງຄວາມຖີ່ຂອງໂມງໂດຍບໍ່ຕັ້ງໃຈ, ຕ້ອງປະຕິບັດຕາມຂັ້ນຕອນການຂຽນພິເສດເພື່ອປ່ຽນບິດ CLKPS:

ຂຽນ Clock Prescaler Change Enable (CLKPCE) bit to one and all other bits in CLKPR to zero.

ພາຍໃນສີ່ຮອບວຽນ, ຂຽນຄ່າທີ່ຕ້ອງການເປັນ CLKPS ໃນຂະນະທີ່ຂຽນສູນເປັນ CLKPCE.

ການຂັດຂວາງຕ້ອງຖືກປິດການໃຊ້ງານເມື່ອປ່ຽນການຕັ້ງຄ່າ prescaler ເພື່ອໃຫ້ແນ່ໃຈວ່າຂັ້ນຕອນການຂຽນຈະບໍ່ຖືກລົບກວນ.

Fuse CKDIV8 ກໍານົດຄ່າເບື້ອງຕົ້ນຂອງບິດ CLKPS. ຖ້າ CKDIV8 ບໍ່ໄດ້ຕັ້ງໂຄງການ, ບິດ CLKPS ຈະຖືກຣີເຊັດເປັນ “0000”. ຖ້າ CKDIV8 ຖືກຕັ້ງໂຄງການ, CLKPS bits ຖືກຕັ້ງຄືນໃຫມ່ເປັນ "0011", ໃຫ້ປັດໄຈການແບ່ງແປດໃນເວລາເລີ່ມຕົ້ນ. ຄຸນສົມບັດນີ້ຄວນຈະຖືກໃຊ້ຖ້າແຫຼ່ງໂມງທີ່ເລືອກມີຄວາມຖີ່ສູງກວ່າຄວາມຖີ່ສູງສຸດຂອງອຸປະກອນໃນສະພາບການເຮັດວຽກໃນປະຈຸບັນ. ໃຫ້ສັງເກດວ່າຄ່າໃດໆສາມາດຖືກຂຽນໃສ່ບິດ CLKPS ໂດຍບໍ່ຄໍານຶງເຖິງການຕັ້ງຄ່າ CKDIV8 Fuse. ຊອບແວແອັບພລິເຄຊັນຕ້ອງຮັບປະກັນວ່າປັດໃຈການແບ່ງທີ່ພຽງພໍແມ່ນ

ເລືອກຖ້າແຫຼ່ງໂມງທີ່ເລືອກມີຄວາມຖີ່ສູງກວ່າຄວາມຖີ່ສູງສຸດຂອງອຸປະກອນໃນສະພາບການເຮັດວຽກໃນປະຈຸບັນ. ອຸປະກອນດັ່ງກ່າວຖືກສົ່ງກັບ CKDIV8 Fuse ທີ່ມີໂຄງການ.

ຕາຕະລາງ 6-15. Clock Prescaler ເລືອກ

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 ສະຫງວນໄວ້

ຫມາຍເຫດ: prescaler ຖືກປິດໃຊ້ງານຢູ່ໃນໂຫມດຄວາມເຂົ້າກັນໄດ້ຂອງ ATtiny15 ແລະບໍ່ໄດ້ຂຽນໃສ່ CLKPR, ຫຼືການຂຽນໂປລແກລມຟິວ CKDIV8 ມີຜົນກະທົບໃດໆກັບໂມງລະບົບ (ເຊິ່ງຈະເປັນ 1.6 MHz ຕະຫຼອດ).

ການຈັດການພະລັງງານ ແລະໂໝດການນອນ

ປະສິດທິພາບສູງ ແລະປະສິດທິພາບລະຫັດຊັ້ນນໍາຂອງອຸດສາຫະກໍາເຮັດໃຫ້ AVR microcontrollers ເປັນທາງເລືອກທີ່ເຫມາະສົມສໍາລັບຄໍາຮ້ອງສະຫມັກພະລັງງານຕ່ໍາ. ນອກຈາກນັ້ນ, ຮູບແບບການນອນເຮັດໃຫ້ແອັບພລິເຄຊັນປິດໂມດູນທີ່ບໍ່ໄດ້ໃຊ້ໃນ MCU, ດັ່ງນັ້ນການປະຫຍັດພະລັງງານ. AVR ສະຫນອງຮູບແບບການນອນຕ່າງໆໃຫ້ຜູ້ໃຊ້ສາມາດປັບແຕ່ງການບໍລິໂພກພະລັງງານໃຫ້ເຫມາະສົມກັບຄວາມຕ້ອງການຂອງແອັບພລິເຄຊັນ.

ຮູບແບບການນອນ

ຮູບທີ 6-1 ຢູ່ ໜ້າ 23 ນໍາສະເຫນີລະບົບໂມງທີ່ແຕກຕ່າງກັນແລະການແຈກຢາຍຂອງພວກເຂົາໃນ ATtiny25/45/85. ຕົວເລກແມ່ນເປັນປະໂຫຍດໃນການເລືອກຮູບແບບການນອນທີ່ເຫມາະສົມ. ຕາຕະລາງ 7-1 ສະ​ແດງ​ໃຫ້​ເຫັນ​ຮູບ​ແບບ​ການ​ນອນ​ທີ່​ແຕກ​ຕ່າງ​ກັນ​ແລະ​ແຫຼ່ງ​ການ​ປຸກ​ຂອງ​ເຂົາ​ເຈົ້າ​.

ຕາຕະລາງ 7-1. Active Clock Domains ແລະ Wake-up Sources ໃນໂໝດການນອນທີ່ແຕກຕ່າງກັນ

Active Clock Domains Oscillators ແຫຼ່ງປຸກ
ໂໝດນອນ clkCPU clkFLASH clkIO clkADC clkPCK ເປີດການນຳໃຊ້ແຫຼ່ງໂມງຫຼັກແລ້ວ INT0 ແລະປ່ຽນ PIN 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, ພຽງແຕ່ລະດັບ interrupt.

ເພື່ອເຂົ້າໄປໃນຮູບແບບການນອນໃດໆຂອງສາມ, SE bit ໃນ MCUCR ຕ້ອງໄດ້ຮັບການຂຽນເປັນ logic ຫນຶ່ງແລະຄໍາສັ່ງ SLEEP ຕ້ອງໄດ້ຮັບການປະຕິບັດ. SM[1:0] bits ໃນ MCUCR Register ເລືອກວ່າໂໝດນອນໃດ (Idle, ADC Noise Reduction ຫຼື Power-down) ຈະຖືກເປີດໃຊ້ໂດຍຄຳສັ່ງ SLEEP. ເບິ່ງ ຕາຕະລາງ 7-2 ສຳ ລັບບົດສະຫຼຸບ.

ຖ້າການລົບກວນທີ່ເປີດໃຊ້ໄດ້ເກີດຂຶ້ນໃນຂະນະທີ່ MCU ຢູ່ໃນໂໝດນອນ, MCU ຈະຕື່ນຂຶ້ນ. ຫຼັງຈາກນັ້ນ MCU ໄດ້ຖືກຢຸດເປັນເວລາສີ່ຮອບນອກ ເໜືອ ຈາກເວລາເລີ່ມຕົ້ນ, ປະຕິບັດການຂັດຂວາງ, ແລະສືບຕໍ່ການປະຕິບັດຈາກຄໍາແນະນໍາຕໍ່ໄປນີ້ SLEEP. ເນື້ອໃນຂອງການລົງທະບຽນ File ແລະ SRAM ບໍ່ປ່ຽນແປງເມື່ອອຸປະກອນຕື່ນຈາກການນອນ. ຖ້າການຣີເຊັດເກີດຂຶ້ນໃນລະຫວ່າງໂໝດນອນ, MCU ຈະຕື່ນຂຶ້ນ ແລະດຳເນີນການຈາກ Reset Vector.

ໝາຍເຫດ: ຖ້າລະດັບທີ່ກະຕຸ້ນການລົບກວນຖືກໃຊ້ສຳລັບການປຸກ, ລະດັບການປ່ຽນແປງຈະຕ້ອງຖືກຈັດໄວ້ເປັນບາງເວລາເພື່ອປຸກ MCU (ແລະເພື່ອໃຫ້ MCU ເຂົ້າສູ່ການຂັດຂວາງການບໍລິການປົກກະຕິ). ເບິ່ງ “ການຂັດຂວາງພາຍນອກ” ໃນໜ້າ 49 ສໍາລັບລາຍລະອຽດ.

ແບບບໍ່ເຮັດວຽກ

ເມື່ອ SM [1:0] bits ຖືກຂຽນເປັນ 00, SLEEP instruction ເຮັດໃຫ້ MCU ເຂົ້າສູ່ໂໝດ Idle, ຢຸດ CPU ແຕ່ອະນຸຍາດໃຫ້ Analog Comparator, ADC, USI, Timer/Counter, Watchdog, ແລະລະບົບ interrupt ດຳເນີນການຕໍ່. ການກິນ. ຮູບແບບການນອນນີ້ໂດຍພື້ນຖານແລ້ວຢຸດ clkCPU ແລະ clkFLASH, ໃນຂະນະທີ່ອະນຸຍາດໃຫ້ໂມງອື່ນໆເຮັດວຽກ.

ໂໝດບໍ່ເຮັດວຽກເຮັດໃຫ້ MCU ຕື່ນຈາກການລົບກວນທີ່ກະຕຸ້ນຈາກພາຍນອກ ເຊັ່ນດຽວກັນກັບພາຍໃນເຊັ່ນ Timer Overflow. ຖ້າການປຸກຈາກ Analog Comparator interrupt ແມ່ນບໍ່ຈໍາເປັນ, Analog Comparator ສາມາດໄດ້ຮັບການ power down ໂດຍການຕັ້ງຄ່າ ACD bit ໃນ. “ACSR – ການ​ຄວບ​ຄຸມ​ການ​ປຽບ​ທຽບ​ອະ​ນາ​ລັອກ ແລະ​ການ​ລົງ​ທະ​ບຽນ​ສະ​ຖາ​ນະ​ພາບ” ໃນ​ຫນ້າ 120. ນີ້ຈະຫຼຸດຜ່ອນການໃຊ້ພະລັງງານໃນໂໝດ Idle. ຖ້າ ADC ຖືກເປີດໃຊ້, ການປ່ຽນໃຈເຫລື້ອມໃສຈະເລີ່ມຕົ້ນໂດຍອັດຕະໂນມັດເມື່ອເຂົ້າໄປໃນໂຫມດນີ້.

ໂໝດຫຼຸດສຽງລົບກວນ ADC

ເມື່ອ SM[1:0] bits ຖືກຂຽນເປັນ 01, SLEEP instruction ເຮັດໃຫ້ MCU ເຂົ້າສູ່ໂໝດ ADC Noise Reduction, ຢຸດ CPU ແຕ່ອະນຸຍາດໃຫ້ ADC, ລົບກວນພາຍນອກ, ແລະ Watchdog ສືບຕໍ່ເຮັດວຽກ (ຖ້າເປີດໃຊ້). ໂໝດການນອນນີ້ຢຸດ clKI/O, clkCPU, ແລະ clkFLASH, ໃນຂະນະທີ່ອະນຸຍາດໃຫ້ໂມງອື່ນໆເຮັດວຽກ.

ນີ້ປັບປຸງສະພາບແວດລ້ອມສິ່ງລົບກວນສໍາລັບ ADC, ເຮັດໃຫ້ການວັດແທກຄວາມລະອຽດສູງຂຶ້ນ. ຖ້າ ADC ຖືກເປີດໃຊ້, ການປ່ຽນໃຈເຫລື້ອມໃສຈະເລີ່ມຕົ້ນໂດຍອັດຕະໂນມັດເມື່ອເຂົ້າໄປໃນໂຫມດນີ້. ນອກເຫນືອຈາກການຂັດຂວາງການແປງ ADC ສໍາເລັດ, ພຽງແຕ່ການປັບພາຍນອກ, ການຕັ້ງຄ່າ Watchdog, ຣີເຊັດເປັນສີນໍ້າຕານ, ການຂັດຂວາງພ້ອມ SPM / EEPROM, ການຂັດຂວາງລະດັບພາຍນອກໃນ INT0 ຫຼືການຂັດຂວາງການປ່ຽນແປງ pin ສາມາດປຸກ MCU ຈາກ ADC Noise Reduction. ໂໝດ.

ໂໝດປິດເຄື່ອງ

ເມື່ອ SM[1:0] ບິດຖືກຂຽນເປັນ 10, ຄຳສັ່ງ SLEEP ເຮັດໃຫ້ MCU ເຂົ້າສູ່ໂໝດປິດເຄື່ອງ. ໃນໂຫມດນີ້, Oscillator ຖືກຢຸດ, ໃນຂະນະທີ່ພາຍນອກຂັດຂວາງ, USI ເລີ່ມຕົ້ນການກວດສອບສະພາບແລະ Watchdog ສືບຕໍ່ດໍາເນີນການ (ຖ້າເປີດໃຊ້). ພຽງແຕ່ການຣີເຊັດພາຍນອກ, ການຣີເຊັດ Watchdog, ຣີເຊັດສີນ້ຳຕານອອກ, ສະພາບເລີ່ມຕົ້ນຂອງ USI ລົບກວນ, ການລົບກວນລະດັບພາຍນອກໃນ INT0 ຫຼື ການຂັດຂວາງການປ່ຽນແປງ PIN ສາມາດປຸກ MCU ໄດ້. ໂໝດນອນນີ້ຢຸດໂມງທີ່ສ້າງຂຶ້ນທັງໝົດ, ອະນຸຍາດໃຫ້ເຮັດວຽກຂອງໂມດູນບໍ່ຊິ້ງໂຄນໄດ້ເທົ່ານັ້ນ.

ຊອບແວ BOD ປິດໃຊ້ງານ

ເມື່ອເຄື່ອງກວດຈັບສີນ້ຳຕານອອກ (BOD) ຖືກເປີດໃຊ້ໂດຍ BODLEVEL fuses (ເບິ່ງ ຕາຕະລາງ 20-4 ໃນ ໜ້າ 148), BOD ກໍາລັງຕິດຕາມການສະຫນອງ voltage ໃນໄລຍະເວລານອນ. ໃນບາງອຸປະກອນສາມາດປະຫຍັດພະລັງງານໄດ້ໂດຍການປິດ BOD ໂດຍຊອບແວໃນໂໝດ Power-Down ນອນ. ຫຼັງຈາກນັ້ນ, ການບໍລິໂພກພະລັງງານຂອງຮູບແບບການນອນຈະຢູ່ໃນລະດັບດຽວກັນກັບເວລາທີ່ BOD ຖືກປິດໃຊ້ງານທົ່ວໂລກໂດຍຟິວ.

ຖ້າ BOD ຖືກປິດໂດຍຊອບແວ, ຟັງຊັນ BOD ຈະຖືກປິດທັນທີຫຼັງຈາກເຂົ້າສູ່ໂໝດນອນ. ເມື່ອຕື່ນຈາກການນອນ, BOD ຈະຖືກເປີດໃຊ້ໂດຍອັດຕະໂນມັດອີກເທື່ອຫນຶ່ງ. ນີ້ຮັບປະກັນການປະຕິບັດທີ່ປອດໄພໃນກໍລະນີທີ່ລະດັບ VCC ໄດ້ຫຼຸດລົງໃນລະຫວ່າງໄລຍະເວລານອນ.

ເມື່ອ BOD ຖືກປິດໃຊ້ງານ, ເວລາຕື່ນຈາກໂໝດນອນຈະຄືກັນກັບເວລາຕື່ນຈາກ RESET. ຜູ້ໃຊ້ຕ້ອງກໍານົດເວລາຕື່ນນອນດ້ວຍຕົນເອງເພື່ອໃຫ້ການອ້າງອິງ bandgap ມີເວລາເລີ່ມຕົ້ນແລະ BOD ເຮັດວຽກຢ່າງຖືກຕ້ອງກ່ອນທີ່ MCU ສືບຕໍ່ປະຕິບັດລະຫັດ. ເບິ່ງ SUT[1:0] ແລະ CKSEL[3:0] fuse bits ໃນຕາຕະລາງ “Fuse Low Byte” ໃນໜ້າ 149

ການປິດການໃຊ້ງານ BOD ຖືກຄວບຄຸມໂດຍ BODS (BOD Sleep) bit ຂອງ MCU Control Register, ເບິ່ງ “MCUCR – ການ​ຄວບ​ຄຸມ MCU ລົງທະບຽນ” ໃນໜ້າທີ 37. ການຂຽນບິດນີ້ໄປຫາຫນຶ່ງຈະປິດ BOD ໃນ Power-Down, ໃນຂະນະທີ່ການຂຽນສູນເຮັດໃຫ້ BOD ເຮັດວຽກ. ການຕັ້ງຄ່າເລີ່ມຕົ້ນແມ່ນສູນ, ie BOD active.

ການຂຽນໃສ່ບິດ BODS ຖືກຄວບຄຸມໂດຍລໍາດັບເວລາແລະບິດເປີດ, ເບິ່ງ "MCUCR - ທະບຽນຄວບຄຸມ MCU- ter” ໃນໜ້າທີ 37.

ຂໍ້ຈໍາກັດ

ການທໍາງານປິດການທໍາງານຂອງ BOD ໄດ້ຖືກປະຕິບັດຢູ່ໃນອຸປະກອນຕໍ່ໄປນີ້, ພຽງແຕ່:

ATtiny25, ດັດແກ້ E, ແລະໃໝ່ກວ່າ

ATtiny45, ດັດແກ້ D, ແລະໃໝ່ກວ່າ

ATtiny85, ດັດແກ້ C, ແລະໃໝ່ກວ່າ

ການແກ້ໄຂຖືກໝາຍໄວ້ໃນຊຸດອຸປະກອນ ແລະສາມາດຕັ້ງໄດ້ດັ່ງນີ້:

ດ້ານລຸ່ມຂອງແພັກເກດ 8P3 ແລະ 8S2

ດ້ານເທິງຂອງຊຸດ 20M1

ລົງທະບຽນການຫຼຸດຜ່ອນພະລັງງານ

ການລົງທະບຽນການຫຼຸດຜ່ອນພະລັງງານ (PRR), ເບິ່ງ “PRR – ການລົງທະບຽນການຫຼຸດຜ່ອນພະລັງງານ” ຢູ່ໜ້າ 38, ສະຫນອງວິທີການຫຼຸດຜ່ອນການບໍລິໂພກພະລັງງານໂດຍການຢຸດໂມງກັບອຸປະກອນຕໍ່ພ່ວງບຸກຄົນ. ສະຖານະປັດຈຸບັນຂອງອຸປະກອນຂ້າງຄຽງຖືກແຊ່ແຂງ ແລະທະບຽນ I/O ບໍ່ສາມາດອ່ານ ຫຼື ຂຽນໄດ້. ຊັບ​ພະ​ຍາ​ກອນ​ທີ່​ນໍາ​ໃຊ້​ໂດຍ​ການ​ຕໍ່​ຂ້າງ​ໃນ​ເວ​ລາ​ທີ່​ການ​ຢຸດ​ໂມງ​ຈະ​ຍັງ​ຄົງ​ຖືກ​ຄອບ​ຄອງ, ສະ​ນັ້ນ​ໃນ​ກໍ​ລະ​ນີ​ສ່ວນ​ຫຼາຍ​ຄວນ​ຈະ​ໄດ້​ຮັບ​ການ​ພິ​ການ​ກ່ອນ​ທີ່​ຈະ​ຢຸດ​ໂມງ. ການປຸກໂມດູນ, ເຊິ່ງເຮັດໄດ້ໂດຍການລ້າງບິດໃນ PRR, ເຮັດໃຫ້ໂມດູນຢູ່ໃນສະຖານະດຽວກັນກັບກ່ອນທີ່ຈະປິດ.

ການປິດໂມດູນສາມາດຖືກນໍາໃຊ້ໃນໂຫມດ Idle ແລະໂຫມດ Active ເພື່ອຫຼຸດຜ່ອນການໃຊ້ພະລັງງານໂດຍລວມຢ່າງຫຼວງຫຼາຍ. ໃນໂໝດນອນອື່ນທັງໝົດ, ໂມງຖືກຢຸດແລ້ວ. ເບິ່ງ “ການສະໜອງກະແສໄຟຟ້າຂອງໂມດູນ I/O” ໃນໜ້າທີ 177 ຕົວຢ່າງamples.

ຫຼຸດຜ່ອນການບໍລິໂພກພະລັງງານ

ມີຫຼາຍບັນຫາທີ່ຈະພິຈາລະນາໃນເວລາທີ່ພະຍາຍາມຫຼຸດຜ່ອນການໃຊ້ພະລັງງານໃນລະບົບຄວບຄຸມ AVR. ໂດຍທົ່ວໄປແລ້ວ, ໂໝດນອນຄວນຖືກໃຊ້ຫຼາຍເທົ່າທີ່ເປັນໄປໄດ້, ແລະ ໂໝດການນອນຄວນຖືກເລືອກເພື່ອໃຫ້ຟັງຊັນຂອງອຸປະກອນໜ້ອຍເທົ່າທີ່ຈະເປັນໄປໄດ້. ຟັງຊັນທັງໝົດທີ່ບໍ່ຈໍາເປັນຄວນຈະຖືກປິດໃຊ້ງານ. ໂດຍສະເພາະ, ໂມດູນຕໍ່ໄປນີ້ອາດຈະຕ້ອງການພິຈາລະນາພິເສດໃນເວລາທີ່ພະຍາຍາມບັນລຸການບໍລິໂພກພະລັງງານຕ່ໍາສຸດ.

ອະນາລັອກເປັນຕົວແປງດິຈິຕອນ

ຖ້າເປີດໃຊ້, ADC ຈະຖືກເປີດໃຊ້ໃນທຸກໂໝດນອນ. ເພື່ອປະຢັດພະລັງງານ, ADC ຄວນຖືກປິດການນຳໃຊ້ກ່ອນທີ່ຈະເຂົ້າສູ່ໂໝດນອນໃດໆ. ເມື່ອ ADC ຖືກປິດແລະເປີດອີກເທື່ອຫນຶ່ງ, ການແປງຕໍ່ໄປຈະເປັນການປ່ຽນແປງຂະຫຍາຍ. ອ້າງ​ເຖິງ “ອະນາລັອກເປັນຕົວແປງດິຈິຕອນ” ໃນໜ້າ 122 ສໍາລັບລາຍລະອຽດກ່ຽວກັບການດໍາເນີນງານ ADC.

ຕົວປຽບທຽບອະນາລັອກ

ເມື່ອເຂົ້າສູ່ໂໝດ Idle, ຕົວປຽບທຽບອະນາລັອກຄວນຖືກປິດໃຊ້ງານ ຖ້າບໍ່ໄດ້ໃຊ້. ເມື່ອເຂົ້າສູ່ໂໝດຫຼຸດສຽງລົບກວນ ADC, ຕົວປຽບທຽບອະນາລັອກຄວນຖືກປິດໃຊ້ງານ. ໃນໂໝດນອນອື່ນ, ຕົວປຽບທຽບອະນາລັອກຖືກປິດໃຊ້ງານໂດຍອັດຕະໂນມັດ. ຢ່າງໃດກໍຕາມ, ຖ້າ Analog Comparator ຖືກຕັ້ງຄ່າໃຫ້ໃຊ້ Internal Voltage ການອ້າງອີງເປັນການປ້ອນຂໍ້ມູນ, ຕົວປຽບທຽບອະນາລັອກຄວນຖືກປິດໃຊ້ງານໃນທຸກໂໝດການນອນ. ຖ້າບໍ່ດັ່ງນັ້ນ, ສະບັບພາຍໃນtage ການອ້າງອິງຈະຖືກເປີດໃຊ້, ບໍ່ຂຶ້ນກັບໂໝດການນອນ. ອ້າງ​ເຖິງ “ຕົວປຽບທຽບອະນາລັອກ” ໃນໜ້າ 119 ສໍາລັບລາຍລະອຽດກ່ຽວກັບວິທີການຕັ້ງຄ່າຕົວປຽບທຽບອະນາລັອກ.

ເຄື່ອງກວດຈັບສີນ້ຳຕານ

ຖ້າເຄື່ອງກວດຈັບສີນ້ໍາຕານບໍ່ຈໍາເປັນໃນແອັບພລິເຄຊັນ, ໂມດູນນີ້ຄວນຈະຖືກປິດ. ຖ້າເຄື່ອງກວດຈັບສີນ້ໍາຕານຖືກເປີດໃຊ້ໂດຍ BODLEVEL Fuses, ມັນຈະຖືກເປີດໃຊ້ໃນທຸກໂໝດການນອນ, ແລະດ້ວຍເຫດນີ້, ການໃຊ້ພະລັງງານຕະຫຼອດເວລາ. ໃນຮູບແບບການນອນທີ່ເລິກເຊິ່ງ, ນີ້ຈະປະກອບສ່ວນຢ່າງຫຼວງຫຼາຍຕໍ່ການບໍລິໂພກໃນປະຈຸບັນທັງຫມົດ. ເບິ່ງ "ການ​ກວດ​ສອບ​ສີ​ຕານ​ອອກ​- tion” ໃນໜ້າ 41 ແລະ “Software BOD Disable” ໃນໜ້າ 35 ສຳລັບລາຍລະອຽດກ່ຽວກັບວິທີການກຳນົດຄ່າເຄື່ອງກວດຈັບສີນ້ຳຕານອອກ.

ສະບັບພາຍໃນtage ເອກະສານອ້າງອີງ

ສະບັບພາຍໃນtage ການອ້າງອິງຈະຖືກເປີດໃຊ້ເມື່ອຕ້ອງການໂດຍການກວດສອບ Brown-out, ຕົວປຽບທຽບ Analog ຫຼື ADC. ຖ້າໂມດູນເຫຼົ່ານີ້ຖືກປິດການໃຊ້ງານຕາມທີ່ອະທິບາຍໄວ້ໃນສ່ວນຂ້າງເທິງ, ພາຍໃນ voltage ການອ້າງອິງຈະຖືກປິດໃຊ້ງານແລະມັນຈະບໍ່ບໍລິໂພກພະລັງງານ. ເມື່ອເປີດອີກເທື່ອຫນຶ່ງ, ຜູ້ໃຊ້ຕ້ອງອະນຸຍາດໃຫ້ການອ້າງອິງເລີ່ມຕົ້ນກ່ອນທີ່ຜົນຜະລິດຈະຖືກນໍາໃຊ້. ຖ້າການອ້າງອິງຖືກເກັບໄວ້ໃນໂຫມດນອນ, ຜົນຜະລິດສາມາດຖືກນໍາໃຊ້ທັນທີ. ອ້າງ​ເຖິງ “ສະບັບພາຍໃນtage ເອກະສານອ້າງອີງ” ໃນໜ້າ 42 ສໍາລັບລາຍລະອຽດກ່ຽວກັບເວລາເລີ່ມຕົ້ນ.

ຈັບເວລາເຝົ້າລະວັງ

ຖ້າບໍ່ຈໍາເປັນ Watchdog Timer ໃນແອັບພລິເຄຊັນ, ໂມດູນນີ້ຄວນຈະຖືກປິດ. ຖ້າໂມງຈັບເວລາ Watchdog ຖືກເປີດໃຊ້, ມັນຈະຖືກເປີດໃຊ້ໃນທຸກຮູບແບບການນອນ, ແລະດ້ວຍເຫດນີ້, ໃຊ້ພະລັງງານຕະຫຼອດເວລາ. ໃນຮູບແບບການນອນທີ່ເລິກເຊິ່ງ, ນີ້ຈະປະກອບສ່ວນຢ່າງຫຼວງຫຼາຍຕໍ່ການບໍລິໂພກໃນປະຈຸບັນທັງຫມົດ. ອ້າງ​ເຖິງ “ໂມງຈັບເວລາ” ໃນໜ້າ 42 ສໍາລັບລາຍລະອຽດກ່ຽວກັບວິທີການກໍານົດເວລາ Watchdog.

ພອດ Pins

ເມື່ອເຂົ້າສູ່ໂໝດນອນຫຼັບ, ປັກໝຸດພອດທັງໝົດຄວນຖືກກຳນົດຄ່າເພື່ອໃຊ້ພະລັງງານຕໍ່າສຸດ. ສິ່ງທີ່ສໍາຄັນທີ່ສຸດແມ່ນຫຼັງຈາກນັ້ນເພື່ອຮັບປະກັນວ່າບໍ່ມີ pins ຂັບການໂຫຼດຕ້ານທານ. ໃນໂໝດນອນທີ່ທັງໂມງ I/O (clkI/O) ແລະໂມງ ADC (clkADC) ຖືກຢຸດ, ບັຟເຟີການປ້ອນຂໍ້ມູນຂອງອຸປະກອນຈະຖືກປິດໃຊ້ງານ. ນີ້ຮັບປະກັນວ່າບໍ່ມີການບໍລິໂພກພະລັງງານ

ໂດຍເຫດຜົນການປ້ອນຂໍ້ມູນໃນເວລາທີ່ບໍ່ຈໍາເປັນ. ໃນ​ບາງ​ກໍ​ລະ​ນີ​, ເຫດ​ຜົນ​ການ​ປ້ອນ​ຂໍ້​ມູນ​ແມ່ນ​ຈໍາ​ເປັນ​ສໍາ​ລັບ​ການ​ກວດ​ສອບ​ສະ​ພາບ​ການ​ປຸກ​, ແລະ​

ຫຼັງຈາກນັ້ນມັນຈະຖືກເປີດໃຊ້. ອ້າງເຖິງພາກສ່ວນ “Digital Input Enable and Sleep Modes” ໃນໜ້າ 57 ສໍາລັບລາຍລະອຽດກ່ຽວກັບ pins ໃດຖືກເປີດໃຊ້. ຖ້າແບັກອັບອິນພຸດຖືກເປີດໃຊ້ງານ ແລະສັນຍານເຂົ້າຖືກປະໄວ້ແບບລອຍ ຫຼືມີລະດັບສັນຍານອະນາລັອກໃກ້ກັບ VCC/2, ບັຟເຟີອິນພຸດຈະໃຊ້ພະລັງງານຫຼາຍເກີນໄປ.

ສໍາລັບ pins ການປ້ອນຂໍ້ມູນແບບອະນາລັອກ, ບັຟເຟີການປ້ອນຂໍ້ມູນດິຈິຕອນຄວນຈະຖືກປິດໃຊ້ງານຕະຫຼອດເວລາ. ລະດັບສັນຍານອະນາລັອກທີ່ໃກ້ກັບ VCC/2 ຢູ່ໃນ PIN ປ້ອນຂໍ້ມູນສາມາດເຮັດໃຫ້ເກີດກະແສໄຟຟ້າໄດ້ເຖິງແມ່ນວ່າຢູ່ໃນໂໝດເຄື່ອນໄຫວກໍຕາມ. ບັຟເຟີການປ້ອນຂໍ້ມູນແບບດິຈິຕອລສາມາດຖືກປິດໃຊ້ງານໄດ້ໂດຍການຂຽນໄປທີ່ Digital Input Disable Register (DIDR0). ອ້າງ​ເຖິງ “DIDR0 – Digital Input Disable Register 0” ຢູ່ໜ້າ 121 ສໍາລັບລາຍລະອຽດ.

ລົງທະບຽນລາຍລະອຽດ

MCUCR - ລົງທະບຽນຄວບຄຸມ MCU

ການລົງທະບຽນການຄວບຄຸມ MCU ມີບິດຄວບຄຸມສໍາລັບການຄຸ້ມຄອງພະລັງງານ.

ບິດ 7 6 5 4 3 2 1 0
0x35 BODS PUD SE SM1 SM0 BODSE 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

Bit 7 – BODS: BOD ນອນ

ຟັງຊັນປິດການໃຊ້ງານ BOD ແມ່ນມີຢູ່ໃນບາງອຸປະກອນ, ເທົ່ານັ້ນ. ເບິ່ງ “ຂໍ້ຈຳກັດ” ໃນໜ້າ 36.

ເພື່ອປິດການໃຊ້ງານ BOD ໃນເວລານອນ (ເບິ່ງ ຕາຕະລາງ 7-1 ໃນ ໜ້າ 34) bit BODS ຕ້ອງໄດ້ຮັບການຂຽນເປັນ logic ຫນຶ່ງ. ອັນນີ້ຖືກຄວບຄຸມໂດຍລຳດັບທີ່ກຳນົດເວລາ ແລະ ບິດເປີດ, BODSE ໃນ MCUCR. ກ່ອນອື່ນ ໝົດ, ທັງ BODS ແລະ BODSE ຕ້ອງຖືກຕັ້ງເປັນອັນດຽວ. ອັນທີສອງ, ພາຍໃນສີ່ຮອບວຽນ, BODS ຕ້ອງຖືກຕັ້ງເປັນຫນຶ່ງແລະ BODSE ຕ້ອງຖືກຕັ້ງເປັນສູນ. ບິດ BODS ແມ່ນການເຄື່ອນໄຫວສາມຮອບວຽນຫຼັງຈາກມັນຖືກຕັ້ງ. ການສັ່ງການນອນຕ້ອງໄດ້ຮັບການປະຕິບັດໃນຂະນະທີ່ BODS ເຮັດວຽກເພື່ອປິດ BOD ສໍາລັບຮູບແບບການນອນຕົວຈິງ. ບິດ BODS ຈະຖືກລຶບລ້າງໂດຍອັດຕະໂນມັດຫຼັງຈາກສາມຮອບໂມງ.

ໃນອຸປະກອນທີ່ Sleeping BOD ບໍ່ໄດ້ຖືກປະຕິບັດ bit ນີ້ແມ່ນບໍ່ໄດ້ໃຊ້ແລະຈະອ່ານສູນສະເຫມີ.

Bit 5 – SE: Sleep Enable

SE bit ຕ້ອງໄດ້ຮັບການຂຽນເປັນ logic ຫນຶ່ງເພື່ອເຮັດໃຫ້ MCU ເຂົ້າໄປໃນຮູບແບບການນອນໃນເວລາທີ່ຄໍາແນະນໍາ SLEEP ຖືກປະຕິບັດ. ເພື່ອຫຼີກເວັ້ນການ MCU ເຂົ້າສູ່ໂຫມດການນອນເວັ້ນເສຍແຕ່ວ່າມັນເປັນຈຸດປະສົງຂອງນັກຂຽນໂປລແກລມ, ແນະນໍາໃຫ້ຂຽນ Sleep Enable (SE) bit ໄປຫາຫນຶ່ງກ່ອນການປະຕິບັດຄໍາແນະນໍາຂອງ SLEEP ແລະລ້າງມັນທັນທີຫຼັງຈາກຕື່ນນອນ.

Bits 4:3 – SM[1:0]: Sleep Mode ເລືອກ Bits 1 ແລະ 0

ບິດເຫຼົ່ານີ້ເລືອກລະຫວ່າງສາມຮູບແບບການນອນທີ່ມີຢູ່ດັ່ງທີ່ສະແດງຢູ່ໃນ ຕາຕະລາງ 7-2.

ຕາຕະລາງ 7-2. ເລືອກໂໝດນອນ

SM1 SM0 ໂໝດນອນ
0 0 ບໍ່ເຮັດວຽກ
0 1 ຫຼຸດສຽງລົບກວນ ADC
1 0 ພະລັງງານລົງ
1 1 ສະຫງວນໄວ້

Bit 2 – BODSE: BOD Sleep Enable

ຟັງຊັນປິດການໃຊ້ງານ BOD ແມ່ນມີຢູ່ໃນບາງອຸປະກອນ, ເທົ່ານັ້ນ. ເບິ່ງ “ຂໍ້ຈຳກັດ” ໃນໜ້າ 36.

ບິດ BODSE ເປີດໃຊ້ການຕັ້ງຄ່າບິດຄວບຄຸມ BODS, ດັ່ງທີ່ໄດ້ອະທິບາຍໄວ້ໃນຄໍາອະທິບາຍບິດ BODS. ການປິດການໃຊ້ງານ BOD ຖືກຄວບຄຸມໂດຍລໍາດັບທີ່ກໍານົດເວລາ.

ບິດນີ້ບໍ່ໄດ້ຖືກນໍາໃຊ້ໃນອຸປະກອນທີ່ຊອບແວ BOD ປິດການໃຊ້ງານບໍ່ໄດ້ປະຕິບັດແລະຈະອ່ານເປັນສູນໃນອຸປະກອນເຫຼົ່ານັ້ນ.

PRR - ລົງທະບຽນການຫຼຸດຜ່ອນພະລັງງານ

ທະບຽນການຫຼຸດຜ່ອນພະລັງງານໃຫ້ວິທີການຫຼຸດຜ່ອນການໃຊ້ພະລັງງານໂດຍການອະນຸຍາດໃຫ້ສັນຍານໂມງຕໍ່ຂ້າງຖືກປິດໃຊ້ງານ.

ບິດ 7 6 5 4 3 2 1 0
0x20 PRTIM1 PRTIM0 PRUSI PRADC PRR
ອ່ານ/ຂຽນ R R R R R/W R/W R/W R/W
ຄ່າເລີ່ມຕົ້ນ 0 0 0 0 0 0 0 0

Bits 7:4 – Res: Reserved Bits

ບິດເຫຼົ່ານີ້ແມ່ນສະຫງວນໄວ້ຢູ່ໃນ ATtiny25/45/85 ແລະຈະອ່ານເປັນສູນສະເໝີ.

Bit 3 – PRTIM1: ຕົວຈັບເວລາຫຼຸດພະລັງງານ/ຕົວນັບ1

ການ​ຂຽນ​ເຫດຜົນ​ຕໍ່​ບິດ​ນີ້​ຈະ​ປິດ​ໂມ​ດູນ Timer/Counter1. ເມື່ອເຄື່ອງຈັບເວລາ / ໂຕນັບ 1 ຖືກເປີດໃຊ້, ການດໍາເນີນງານຈະສືບຕໍ່ຄືກັບກ່ອນການປິດເຄື່ອງ.

Bit 2 – PRTIM0: ຕົວຈັບເວລາຫຼຸດພະລັງງານ/ຕົວນັບ0

ການ​ຂຽນ​ເຫດຜົນ​ຕໍ່​ບິດ​ນີ້​ຈະ​ປິດ​ໂມ​ດູນ Timer/Counter0. ເມື່ອເຄື່ອງຈັບເວລາ / ໂຕນັບ 0 ຖືກເປີດໃຊ້, ການດໍາເນີນງານຈະສືບຕໍ່ຄືກັບກ່ອນການປິດເຄື່ອງ.

Bit 1 – PRUSI: ການຫຼຸດຜ່ອນພະລັງງານ USI

ການຂຽນເຫດຜົນອັນໜຶ່ງຕໍ່ກັບບິດນີ້ປິດ USI ໂດຍການຢຸດໂມງໃສ່ໂມດູນ. ເມື່ອປຸກ USI ອີກເທື່ອຫນຶ່ງ, USI ຄວນໄດ້ຮັບການເລີ່ມຕົ້ນໃຫມ່ເພື່ອຮັບປະກັນການປະຕິບັດງານທີ່ເຫມາະສົມ.

Bit 0 – PRADC: ການຫຼຸດພະລັງງານ ADC

ການ​ຂຽນ​ເຫດຜົນ​ຕໍ່​ຂໍ້​ມູນ​ນີ້​ຈະ​ປິດ ADC. ADC ຕ້ອງຖືກປິດໃຊ້ງານກ່ອນທີ່ຈະປິດ. ໃຫ້ສັງເກດວ່າໂມງ ADC ຍັງຖືກໃຊ້ໂດຍບາງສ່ວນຂອງຕົວປຽບທຽບການປຽບທຽບ, ຊຶ່ງຫມາຍຄວາມວ່າຕົວປຽບທຽບການປຽບທຽບບໍ່ສາມາດນໍາໃຊ້ໄດ້ໃນເວລາທີ່ບິດນີ້ສູງ.

ການ​ຄວບ​ຄຸມ​ແລະ​ປັບ​ລະ​ບົບ​

ຣີເຊັດ AVR

ໃນ​ລະ​ຫວ່າງ​ການ​ຕັ້ງ​ຄ່າ​ໃຫມ່​, ການ​ລົງ​ທະ​ບຽນ I/O ທັງ​ຫມົດ​ໄດ້​ຖືກ​ຕັ້ງ​ຄ່າ​ເບື້ອງ​ຕົ້ນ​ຂອງ​ຕົນ​, ແລະ​ໂຄງ​ການ​ຈະ​ເລີ່ມ​ຕົ້ນ​ການ​ປະ​ຕິ​ບັດ​ຈາກ Reset Vector​. ຄໍາແນະນໍາທີ່ວາງໄວ້ໃນ Reset Vector ຈະຕ້ອງເປັນ RJMP – Relative Jump – ຄໍາແນະນໍາຕໍ່ກັບການຕັ້ງການຈັດການຄືນໃຫມ່. ຖ້າໂປຣແກຣມບໍ່ເຄີຍເປີດໃຊ້ແຫຼ່ງທີ່ມາລົບກວນ, Interrupt Vectors ບໍ່ໄດ້ໃຊ້, ແລະລະຫັດໂປຣແກຣມປົກກະຕິສາມາດຖືກວາງໄວ້ໃນສະຖານທີ່ເຫຼົ່ານີ້. ແຜນວາດວົງຈອນໃນ ຮູບທີ 8-1 ສະແດງໃຫ້ເຫັນເຫດຜົນການປັບ. ຕົວກໍານົດການໄຟຟ້າຂອງວົງຈອນການປັບແມ່ນໃຫ້ຢູ່ໃນ “ລະບົບ ແລະ ປັບລັກສະນະໃໝ່” ໃນໜ້າ 165.

ຮູບທີ 8-1 Reset Logic ຣີເຊັດ-ເຫດຜົນ

ຜອດ I/O ຂອງ AVR ຈະຖືກຣີເຊັດເປັນສະຖານະເບື້ອງຕົ້ນໃນທັນທີ ເມື່ອແຫຼ່ງຣີເຊັດມີການເຄື່ອນໄຫວ. ນີ້ບໍ່ຕ້ອງການແຫຼ່ງໂມງໃດໆທີ່ຈະເຮັດວຽກ.

ຫຼັງຈາກແຫຼ່ງການຣີເຊັດທັງໝົດບໍ່ມີການເຄື່ອນໄຫວ, ຕົວນັບການຊັກຊ້າຈະຖືກເອີ້ນ, ຂະຫຍາຍການຣີເຊັດພາຍໃນ. ນີ້ອະນຸຍາດໃຫ້ພະລັງງານສາມາດບັນລຸລະດັບຄວາມຫມັ້ນຄົງກ່ອນທີ່ຈະດໍາເນີນການປົກກະຕິເລີ່ມຕົ້ນ. ໄລຍະເວລາຫມົດເວລາຂອງເຄື່ອງນັບການຊັກຊ້າແມ່ນຖືກກໍານົດໂດຍຜູ້ໃຊ້ໂດຍຜ່ານ SUT ແລະ CKSEL Fuses. ການຄັດເລືອກທີ່ແຕກຕ່າງກັນສໍາລັບໄລຍະເວລາຊັກຊ້າແມ່ນນໍາສະເຫນີໃນ “ໂມງ ແຫຼ່ງທີ່ມາ” ຢູ່ໜ້າ 25.

ປັບແຫຼ່ງຂໍ້ມູນ

ATtiny25/45/85 ມີສີ່ແຫຼ່ງຂອງການຕັ້ງໃຫມ່:

ຣີເຊັດເປີດເຄື່ອງ. MCU ຖືກຕັ້ງຄືນໃຫມ່ເມື່ອການສະຫນອງ voltage ແມ່ນຕ່ຳກວ່າເກນກຳນົດການເປີດເປີດຄືນໃໝ່ (VPOT).

ຣີເຊັດພາຍນອກ. MCU ຖືກຕັ້ງຄືນໃໝ່ເມື່ອມີລະດັບຕໍ່າຢູ່ໃນ RESET pin ດົນກວ່າຄວາມຍາວຂອງກຳມະຈອນຂັ້ນຕ່ຳ.

ຣີເຊັດ Watchdog. MCU ຖືກຕັ້ງຄືນໃໝ່ເມື່ອໄລຍະເວລາ Watchdog Timer ໝົດອາຍຸ ແລະ Watchdog ຖືກເປີດໃຊ້.

ຣີເຊັດເປັນສີນ້ຳຕານ. MCU ຖືກຕັ້ງຄືນໃຫມ່ເມື່ອການສະຫນອງ voltage VCC ຕ່ຳກວ່າຈຸດກຳນົດການຣີເຊັດສີນ້ຳຕານອອກ (VBOT) ແລະເຄື່ອງກວດຈັບສີນ້ຳຕານຖືກເປີດໃຊ້ງານ.

ຕັ້ງຄ່າໄຟຟ້າຄືນ ໃໝ່

Pulse ການເປີດປິດເປີດຄືນໃໝ່ (POR) ແມ່ນສ້າງຂຶ້ນໂດຍວົງຈອນກວດຈັບ On-chip. ລະດັບການກວດພົບແມ່ນຖືກກໍານົດໄວ້ໃນ “Sys- tem and reset characteristics” ໃນໜ້າ 165. POR ຖືກເປີດໃຊ້ທຸກຄັ້ງທີ່ VCC ຕ່ຳກວ່າລະດັບການກວດຫາ. ວົງຈອນ POR ສາມາດຖືກນໍາໃຊ້ເພື່ອກະຕຸ້ນການເລີ່ມຕົ້ນໃຫມ່, ເຊັ່ນດຽວກັນກັບການກວດສອບຄວາມລົ້ມເຫຼວຂອງການສະຫນອງ vol.tage.

ວົງຈອນເປີດປິດເປີດຄືນໃໝ່ (POR) ຮັບປະກັນວ່າອຸປະກອນຖືກຣີເຊັດຈາກການເປີດເຄື່ອງ. ຮອດເກນກຳນົດການເປີດປິດເປີດຄືນໃໝ່ voltage ຮຽກຮ້ອງຕົວນັບການຊັກຊ້າ, ເຊິ່ງກໍານົດໄລຍະເວລາທີ່ອຸປະກອນຖືກເກັບຮັກສາໄວ້ໃນ RESET ຫຼັງຈາກ VCC ເພີ່ມຂຶ້ນ. ສັນຍານ RESET ຖືກເປີດໃຊ້ອີກຄັ້ງ, ໂດຍບໍ່ມີການຊັກຊ້າ, ເມື່ອ VCC ຫຼຸດລົງຕໍ່າກວ່າລະດັບການກວດພົບ.

ຮູບ 8-2. ການເລີ່ມຕົ້ນ MCU, RESET Tied ກັບ VCC

ຣີເຊັດພາຍໃນ

ຮູບ 8-3. ການເລີ່ມຕົ້ນ MCU, RESET ຂະຫຍາຍພາຍນອກ

ການຕັ້ງຄ່າພາຍນອກ

ການຣີເຊັດພາຍນອກແມ່ນສ້າງຂຶ້ນໂດຍລະດັບຕໍ່າຢູ່ໃນ RESET PIN ຖ້າເປີດໃຊ້ງານ. ຣີເຊັດກຳມະຈອນທີ່ຍາວກວ່າຄວາມກວ້າງຂອງກຳມະຈອນຂັ້ນຕ່ຳ (ເບິ່ງ “ລະບົບ ແລະ ປັບລັກສະນະໃໝ່” ໃນໜ້າ 165) ຈະສ້າງການຕັ້ງໃຫມ່, ເຖິງແມ່ນວ່າໂມງບໍ່ໄດ້ເຮັດວຽກ. ຈັງຫວະທີ່ສັ້ນກວ່າແມ່ນບໍ່ໄດ້ຮັບການຮັບປະກັນທີ່ຈະສ້າງການຣີເຊັດ. ເມື່ອສັນຍານທີ່ນຳໃຊ້ໄປຮອດຈຸດເລີ່ມຕົ້ນໃໝ່tage – VRST – ໃນດ້ານບວກຂອງມັນ, ຕົວຕ້ານການຊັກຊ້າຈະເລີ່ມ MCU ຫຼັງຈາກໄລຍະເວລາຫມົດເວລາ.

ຮູບ 8-4. ຣີເຊັດພາຍນອກໃນລະຫວ່າງການປະຕິບັດງານ ຮູບ8.4

ການກວດຫາສີອອກນ້ຳຕານ

ATtiny25/45/85 ມີ On-chip Brown-out Detection (BOD) circuit ສໍາລັບການກວດສອບລະດັບ VCC ໃນລະຫວ່າງການປະຕິບັດງານໂດຍການປຽບທຽບມັນກັບລະດັບ trigger ຄົງທີ່. ລະດັບການກະຕຸ້ນສໍາລັບ BOD ສາມາດເລືອກໄດ້ໂດຍ BODLEVEL Fuses. ລະດັບຕົວກະຕຸ້ນມີ hysteresis ເພື່ອຮັບປະກັນການກວດຫາສີນ້ໍາຕານບໍ່ເປັນຮວງຕັ້ງແຈບ. hysteresis ໃນ​ລະ​ດັບ​ການ​ກວດ​ສອບ​ຄວນ​ຈະ​ໄດ້​ຮັບ​ການ​ຕີ​ລາ​ຄາ​ເປັນ VBOT+ = VBOT + VHYST/2 ແລະ VBOT- = VBOT – VHYST/2.

ເມື່ອ BOD ຖືກເປີດໃຊ້, ແລະ VCC ຫຼຸດລົງເປັນຄ່າຕ່ໍາກວ່າລະດັບ trigger (VBOT- in ຮູບທີ 8-5), ການ Reset ສີນ້ໍາຕານອອກແມ່ນ activated ທັນທີ. ເມື່ອ VCC ເພີ່ມຂຶ້ນສູງກວ່າລະດັບຕົວກະຕຸ້ນ (VBOT+ ໃນ ຮູບທີ 8-5), ເຄື່ອງນັບການຊັກຊ້າຈະເລີ່ມ MCU ຫຼັງຈາກໄລຍະເວລາອອກ tTOUT ໄດ້ຫມົດອາຍຸ.

ວົງຈອນ BOD ຈະກວດພົບພຽງແຕ່ການຫຼຸດລົງຂອງ VCC ຖ້າ voltage ຢູ່ໃນລະດັບຕໍ່າກວ່າລະດັບ trigger ດົນກວ່າ tBOD ທີ່ໄດ້ມອບໃຫ້ “ລະບົບ ແລະ ປັບລັກສະນະໃໝ່” ໃນໜ້າ 165. ຮູບ8.5

ຣີເຊັດ Watchdog

ເມື່ອໂມງ Watchdog ໝົດເວລາ, ມັນຈະສ້າງກໍາມະຈອນການປັບສັ້ນຂອງໄລຍະເວລາ CK ຫນຶ່ງ. ໃນຂອບທີ່ຫຼຸດລົງຂອງກໍາມະຈອນນີ້, ເຄື່ອງຈັບເວລາຊັກຊ້າຈະເລີ່ມນັບໄລຍະເວລາຫມົດເວລາ tTOUT. ອ້າງ​ເຖິງ “ໂມງຈັບເວລາ” ໃນໜ້າ 42 ສໍາລັບລາຍລະອຽດກ່ຽວກັບການດໍາເນີນງານຂອງ Watchdog Timer.

ສະບັບtage ການອ້າງອີງເປີດໃຊ້ສັນຍານແລະເວລາເລີ່ມຕົ້ນ

ປະລິມານtage ການອ້າງອີງມີເວລາເລີ່ມຕົ້ນທີ່ອາດມີອິດທິພົນຕໍ່ວິທີທີ່ມັນຄວນຈະຖືກນໍາໃຊ້. ເວລາເລີ່ມຕົ້ນແມ່ນໃຫ້ຢູ່ໃນ “ລະບົບ ແລະ ປັບລັກສະນະໃໝ່” ໃນໜ້າ 165. ເພື່ອປະຢັດພະລັງງານ, ການອ້າງອີງບໍ່ໄດ້ເປີດຢູ່ສະເໝີ. ການອ້າງອິງແມ່ນຢູ່ໃນສະຖານະການດັ່ງຕໍ່ໄປນີ້:

ເມື່ອ BOD ຖືກເປີດໃຊ້ (ໂດຍການຂຽນໂປລແກລມ BODLEVEL[2:0] Fuse Bits).

ເມື່ອການອ້າງອິງ bandgap ແມ່ນເຊື່ອມຕໍ່ກັບ Analog Comparator (ໂດຍການຕັ້ງຄ່າ ACBG bit ໃນ ACSR).

ເມື່ອ ADC ຖືກເປີດໃຊ້.

ດັ່ງນັ້ນ, ເມື່ອ BOD ບໍ່ໄດ້ເປີດໃຊ້, ຫຼັງຈາກການຕັ້ງຄ່າ ACBG bit ຫຼືເປີດໃຊ້ ADC, ຜູ້ໃຊ້ຕ້ອງອະນຸຍາດໃຫ້ການອ້າງອີງເລີ່ມຕົ້ນສະເຫມີກ່ອນທີ່ຜົນຜະລິດຈາກ Analog Comparator ຫຼື ADC ຈະຖືກນໍາໃຊ້. ເພື່ອຫຼຸດຜ່ອນການບໍລິໂພກພະລັງງານໃນໂຫມດປິດເຄື່ອງ, ຜູ້ໃຊ້ສາມາດຫລີກລ່ຽງສາມເງື່ອນໄຂຂ້າງເທິງເພື່ອໃຫ້ແນ່ໃຈວ່າການອ້າງອີງຖືກປິດກ່ອນທີ່ຈະເຂົ້າສູ່ໂຫມດປິດເຄື່ອງ.

ຈັບເວລາເຝົ້າລະວັງ

ໂມງຈັບເວລາ Watchdog ແມ່ນໂມງຈາກ On-chip Oscillator ທີ່ແລ່ນຢູ່ທີ່ 128 kHz. ໂດຍການຄວບຄຸມຕົວກໍານົດເວລາ Watchdog prescaler, ໄລຍະການ Reset Watchdog ສາມາດປັບໄດ້ດັ່ງທີ່ສະແດງຢູ່ໃນ ຕາຕະລາງ 8-3 ໃນ ໜ້າ 46. WDR – Watchdog Reset – instruction reset the Watchdog timer. ໂມງຈັບເວລາ Watchdog ຍັງຖືກຣີເຊັດເມື່ອມັນຖືກປິດໃຊ້ງານ ແລະເມື່ອມີການຣີເຊັດຊິບ. ສິບຮອບວຽນໂມງທີ່ແຕກຕ່າງກັນສາມາດເລືອກໄດ້ເພື່ອກໍານົດໄລຍະເວລາການຣີເຊັດ. ຖ້າໄລຍະເວລາການຣີເຊັດໝົດອາຍຸໂດຍບໍ່ມີການຕັ້ງ Watchdog ໃໝ່, ATtiny25/45/85 ຣີເຊັດ ແລະດຳເນີນການຈາກ Reset Vector. ສໍາລັບລາຍລະອຽດກ່ຽວກັບເວລາໃນ Watchdog Reset, ເບິ່ງ ຕາຕະລາງ 8-3 ໃນ ໜ້າ 46.

ຕົວຈັບເວລາ Watchdog ຍັງສາມາດຖືກຕັ້ງຄ່າເພື່ອສ້າງການຂັດຂວາງແທນທີ່ຈະຕັ້ງໃຫມ່. ນີ້ສາມາດເປັນປະໂຫຍດຫຼາຍເມື່ອໃຊ້ Watchdog ເພື່ອປຸກຈາກພະລັງງານລົງ.

ເພື່ອປ້ອງກັນການປິດການໃຊ້ງານຂອງ Watchdog ໂດຍບໍ່ຕັ້ງໃຈຫຼືການປ່ຽນແປງໄລຍະເວລາທີ່ບໍ່ໄດ້ຕັ້ງໃຈ, ສອງລະດັບຄວາມປອດໄພທີ່ແຕກຕ່າງກັນແມ່ນເລືອກໂດຍຟິວ WDTON ດັ່ງທີ່ສະແດງຢູ່ໃນ ຕາຕະລາງ 8-1 ອ້າງເຖິງ "ລໍາດັບເວລາສໍາລັບການປ່ຽນແປງ Con- ການ​ຄິດ​ໄລ່​ໂມງ​ຈັບ​ເວລາ” ໃນ​ໜ້າ 43 ສໍາລັບລາຍລະອຽດ.

ຕາຕະລາງ 8-1. ການຕັ້ງຄ່າ WDT ເປັນຫນ້າທີ່ຂອງການຕັ້ງຄ່າ Fuse ຂອງ WDTON

WDTON ລະດັບຄວາມປອດໄພ ສະຖານະເບື້ອງຕົ້ນ WDT ວິທີການປິດການໃຊ້ງານ WDT ວິທີການປ່ຽນເວລາອອກ
ບໍ່ໄດ້ວາງແຜນ 1 ຄົນພິການ ລໍາດັບເວລາ ບໍ່ມີຂໍ້ຈໍາກັດ
ດໍາເນີນໂຄງການ 2 ເປີດໃຊ້ແລ້ວ ເປີດໃຊ້ງານສະເໝີ ລໍາດັບເວລາ

ຮູບ 8-7. ຈັບເວລາເຝົ້າລະວັງ ເຝົ້າລະວັງ

ລໍາດັບເວລາສໍາລັບການປ່ຽນການຕັ້ງຄ່າຂອງໂມງຈັບເວລາ

ລໍາດັບການປ່ຽນແປງການຕັ້ງຄ່າແຕກຕ່າງກັນເລັກນ້ອຍລະຫວ່າງສອງລະດັບຄວາມປອດໄພ. ຂັ້ນຕອນການແຍກຕ່າງຫາກແມ່ນອະທິບາຍສໍາລັບແຕ່ລະຂັ້ນ.

ຄວາມປອດໄພລະດັບ 1: ໃນໂຫມດນີ້, ຕົວຈັບເວລາ Watchdog ຖືກປິດໃຊ້ງານໃນເບື້ອງຕົ້ນ, ແຕ່ສາມາດເປີດໃຊ້ງານໄດ້ໂດຍການຂຽນ WDE bit ໄປຫາອັນໜຶ່ງໂດຍບໍ່ມີຂໍ້ຈຳກັດໃດໆ. ລຳດັບທີ່ກຳນົດເວລາແມ່ນຕ້ອງການເມື່ອປິດການໃຊ້ງານໂມງຈັບເວລາທີ່ເປີດໃຊ້ໄວ້. ເພື່ອປິດການເປີດໃຊ້ໂມງຈັບເວລາ Watchdog, ຕ້ອງປະຕິບັດຕາມຂັ້ນຕອນຕໍ່ໄປນີ້:

ໃນການດໍາເນີນງານດຽວກັນ, ຂຽນ logic ຫນຶ່ງໄປຫາ WDCE ແລະ WDE. ເຫດຜົນອັນນຶ່ງຈະຕ້ອງຖືກຂຽນໃສ່ WDE ໂດຍບໍ່ຄໍານຶງເຖິງຄ່າທີ່ຜ່ານມາຂອງບິດ WDE.

ພາຍໃນສີ່ຮອບວຽນຕໍ່ໄປ, ໃນການດໍາເນີນງານດຽວກັນ, ຂຽນ WDE ແລະ WDP bits ຕາມທີ່ຕ້ອງການ, ແຕ່ມີບິດ WDCE ຖືກລຶບລ້າງ.

ຄວາມປອດໄພລະດັບ 2: ໃນໂຫມດນີ້, ຕົວຈັບເວລາ Watchdog ຖືກເປີດໃຊ້ສະເໝີ, ແລະ WDE bit ຈະອ່ານເປັນອັນດຽວສະເໝີ. ລຳດັບທີ່ກຳນົດເວລາແມ່ນຕ້ອງການເມື່ອປ່ຽນໄລຍະເວລາ Watchdog Time-out. ເພື່ອປ່ຽນເວລາອອກ Watchdog, ຕ້ອງປະຕິບັດຕາມຂັ້ນຕອນຕໍ່ໄປນີ້:

ໃນການດໍາເນີນງານດຽວກັນ, ຂຽນຢ່າງມີເຫດຜົນກັບ WDCE ແລະ WDE. ເຖິງແມ່ນວ່າ WDE ຈະຖືກຕັ້ງໄວ້ສະເໝີ, WDE ຈະຕ້ອງຖືກຂຽນໃສ່ອັນໜຶ່ງເພື່ອເລີ່ມລໍາດັບເວລາ.

ພາຍໃນສີ່ຮອບວຽນຕໍ່ໄປ, ໃນການດໍາເນີນງານດຽວກັນ, ຂຽນ WDP bits ຕາມທີ່ຕ້ອງການ, ແຕ່ດ້ວຍ bit WDCE ຖືກລຶບລ້າງ. ຄ່າທີ່ຂຽນໃສ່ບິດ WDE ແມ່ນບໍ່ກ່ຽວຂ້ອງ.

ລະຫັດ Example

ລະຫັດຕໍ່ໄປນີ້ example ສະແດງການປະກອບຫນຶ່ງແລະຟັງຊັນ C ຫນຶ່ງສໍາລັບການປິດ WDT. ອະດີດample ສົມມຸດວ່າການຂັດຂວາງຖືກຄວບຄຸມ (ຕົວຢ່າງ, ໂດຍການປິດການຂັດຂວາງທົ່ວໂລກ) ເພື່ອບໍ່ໃຫ້ມີການຂັດຂວາງໃນລະຫວ່າງການປະຕິບັດຫນ້າທີ່ເຫຼົ່ານີ້.

Assembly Code Example(1)
WDT_off:

wdr

; ລຶບລ້າງ WDRF ໃນ MCUSR

ldi r16, (0<

ອອກ MCUSR, r16

; ຂຽນຢ່າງມີເຫດຜົນໃສ່ WDCE ແລະ WDE

; ຮັກສາການຕັ້ງຄ່າ prescaler ເກົ່າເພື່ອປ້ອງກັນການຣີເຊັດ Watchdog ໂດຍບໍ່ຕັ້ງໃຈ

ໃນ r16, WDTCR

ຫຼື r16, (1<

ອອກ WDTCR, r16

; ປິດ WDT

ldi r16, (0<

ອອກ WDTCR, r16

ret

C ລະຫັດ Example(1)
void WDT_off(void)

{

_WDR();

/* ລ້າງ WDRF ໃນ MCUSR */ MCUSR = 0x00

/* ຂຽນຢ່າງມີເຫດຜົນໃສ່ WDCE ແລະ WDE */ WDTCR |= (1<

/* ປິດ WDT */ WDTCR = 0x00;

}

ຫມາຍເຫດ: 1. ເບິ່ງ “ລະຫັດ Examples” ຢູ່ໃນ ໜ້າ ທີ 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 ເບິ່ງລາຍລະອຽດເລັກນ້ອຍ

Bits 7:4 – Res: Reserved Bits

ບິດເຫຼົ່ານີ້ແມ່ນສະຫງວນໄວ້ຢູ່ໃນ ATtiny25/45/85 ແລະຈະອ່ານເປັນສູນສະເໝີ.

Bit 3 – WDRF: Watchdog Reset Flag

ບິດນີ້ຖືກກໍານົດຖ້າການປັບ Watchdog ເກີດຂຶ້ນ. ບິດຖືກຣີເຊັດໂດຍການຣີເຊັດການເປີດເຄື່ອງ, ຫຼືໂດຍການຂຽນເລກສູນໃສ່ທຸງ.

Bit 2 – BORF: Brown-out Reset Flag

ບິດນີ້ຖືກຕັ້ງຄ່າຖ້າການຕັ້ງຄືນສີນ້ໍາຕານເກີດຂຶ້ນ. ບິດຖືກຣີເຊັດໂດຍການຣີເຊັດການເປີດເຄື່ອງ, ຫຼືໂດຍການຂຽນເລກສູນໃສ່ທຸງ.

Bit 1 – EXTRF: External Reset Flag

ບິດນີ້ຖືກຕັ້ງຖ້າການຣີເຊັດພາຍນອກເກີດຂຶ້ນ. ບິດຖືກຣີເຊັດໂດຍການຣີເຊັດການເປີດເຄື່ອງ, ຫຼືໂດຍການຂຽນເລກສູນໃສ່ທຸງ.

Bit 0 – PORF: Power-on Reset Flag

ບິດນີ້ຖືກຕັ້ງຖ້າການຣີເຊັດການເປີດປິດເກີດຂຶ້ນ. ບິດຖືກຣີເຊັດໂດຍການຂຽນຄ່າສູນຕາມເຫດຜົນໃສ່ທຸງເທົ່ານັ້ນ.

ເພື່ອໃຊ້ Reset Flags ເພື່ອກໍານົດເງື່ອນໄຂການຕັ້ງໃຫມ່, ຜູ້ໃຊ້ຄວນອ່ານແລະຫຼັງຈາກນັ້ນປັບ MCUSR ໄວເທົ່າທີ່ຈະໄວໄດ້ໃນໂຄງການ. ຖ້າການລົງທະບຽນຖືກລຶບລ້າງກ່ອນທີ່ການຕັ້ງໃຫມ່ຈະເກີດຂື້ນ, ແຫຼ່ງຂອງການຕັ້ງໃຫມ່ສາມາດພົບໄດ້ໂດຍການກວດເບິ່ງທຸງ Reset.

WDTCR – ລົງທະບຽນຄວບຄຸມໂມງຈັບເວລາ Watchdog

ບິດ 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

Bit 7 – WDIF: Watchdog Timeout Interrupt Flag

ບິດນີ້ຖືກກໍານົດເມື່ອເວລາຫມົດເວລາເກີດຂຶ້ນຢູ່ໃນໂມງຈັບເວລາ Watchdog ແລະໂມງຈັບເວລາ Watchdog ຖືກຕັ້ງຄ່າສໍາລັບການຂັດຂວາງ. WDIF ຈະຖືກລຶບລ້າງໂດຍຮາດແວໃນເວລາທີ່ປະຕິບັດ vector ການຈັດການຂັດຂວາງທີ່ສອດຄ້ອງກັນ. ອີກທາງເລືອກ, WDIF ຖືກລຶບລ້າງໂດຍການຂຽນເຫດຜົນໃສ່ທຸງ. ເມື່ອ I-bit ໃນ SREG ແລະ WDIE ຖືກຕັ້ງ, Watchdog Time-out Interrupt ຈະຖືກປະຕິບັດ.

Bit 6 – WDIE: Watchdog Timeout Interrupt Enable

ເມື່ອບິດນີ້ຖືກຂຽນໃສ່ອັນຫນຶ່ງ, WDE ຈະຖືກລຶບລ້າງ, ແລະ I-bit ໃນການລົງທະບຽນສະຖານະຖືກຕັ້ງ, Watchdog Time-out Interrupt ຖືກເປີດໃຊ້. ໃນໂຫມດນີ້, ການຂັດຈັງຫວະທີ່ສອດຄ້ອງກັນຈະຖືກປະຕິບັດແທນທີ່ຈະເປັນການຕັ້ງຄ່າໃຫມ່ຖ້າເວລາຫມົດເວລາໃນ Watchdog Timer ເກີດຂຶ້ນ.

ຖ້າ WDE ຖືກຕັ້ງ, WDIE ຈະຖືກລຶບລ້າງອັດຕະໂນມັດໂດຍຮາດແວເມື່ອເວລາຫມົດເວລາ. ນີ້ແມ່ນເປັນປະໂຫຍດສໍາລັບການຮັກສາຄວາມປອດໄພ Watchdog Reset ໃນຂະນະທີ່ໃຊ້ການຂັດຂວາງ. ຫຼັງຈາກບິດ WDIE ຖືກລຶບລ້າງ, ເວລາອອກຄັ້ງຕໍ່ໄປຈະສ້າງການຣີເຊັດ. ເພື່ອຫຼີກລ້ຽງການຣີເຊັດ Watchdog, WDIE ຕ້ອງຖືກຕັ້ງຫຼັງຈາກການຂັດຂວາງແຕ່ລະຄັ້ງ.

ຕາຕະລາງ 8-2. ການຕັ້ງຄ່າໂມງຈັບເວລາ

WDE WDIE Watchdog ລັດ Timer ການປະຕິບັດກ່ຽວກັບການຫມົດເວລາ
0 0 ຢຸດເຊົາ ບໍ່ມີ
0 1 ແລ່ນ ຂັດຂວາງ
1 0 ແລ່ນ ຣີເຊັດ
1 1 ແລ່ນ ຂັດຂວາງ

Bit 4 – WDCE: ການປ່ຽນແປງ Watchdog ເປີດໃຊ້

ບິດນີ້ຕ້ອງຖືກຕັ້ງເມື່ອບິດ WDE ຖືກຂຽນເປັນສູນ logic. ຖ້າບໍ່ດັ່ງນັ້ນ, Watchdog ຈະບໍ່ຖືກປິດໃຊ້ງານ. ເມື່ອຂຽນໃສ່ອັນໜຶ່ງ, ຮາດແວຈະລຶບຂໍ້ມູນນີ້ອອກຫຼັງຈາກສີ່ຮອບວຽນໂມງ. ອ້າງອີງເຖິງລາຍລະອຽດຂອງ WDE bit ສໍາລັບຂັ້ນຕອນການປິດການໃຊ້ງານ Watchdog. ບິດນີ້ຍັງຕ້ອງຖືກຕັ້ງຄ່າເມື່ອປ່ຽນບິດກ່ອນຂະຫນາດ. ເບິ່ງ “ ລໍາດັບຕາມເວລາ ສໍາລັບການປ່ຽນແປງການຕັ້ງຄ່າໂມງຈັບເວລາ” ໃນໜ້າ 43.

Bit 3 – WDE: Watchdog ເປີດໃຊ້ງານ

ເມື່ອ WDE ຖືກຂຽນເປັນ logic ຫນຶ່ງ, Watchdog Timer ຖືກເປີດໃຊ້, ແລະຖ້າ WDE ຖືກຂຽນເປັນ logic zero, ຟັງຊັນ Watchdog Timer ຈະຖືກປິດໃຊ້ງານ. WDE ສາມາດຖືກລຶບລ້າງໄດ້ພຽງແຕ່ຖ້າບິດ WDCE ມີ logic ລະດັບຫນຶ່ງ. ເພື່ອປິດການເປີດໃຊ້ໂມງຈັບເວລາ Watchdog, ຕ້ອງປະຕິບັດຕາມຂັ້ນຕອນຕໍ່ໄປນີ້:

ໃນການດໍາເນີນງານດຽວກັນ, ຂຽນ logic ຫນຶ່ງໄປຫາ WDCE ແລະ WDE. ເຫດຜົນອັນໜຶ່ງຈະຕ້ອງຖືກຂຽນໃສ່ WDE ເຖິງແມ່ນວ່າມັນຖືກຕັ້ງເປັນອັນໜຶ່ງກ່ອນທີ່ການປິດການໃຊ້ງານຈະເລີ່ມຂຶ້ນ.

ພາຍໃນສີ່ຮອບວຽນຕໍ່ໄປ, ຂຽນ logic 0 ເປັນ WDE. ອັນນີ້ປິດການໃຊ້ງານ Watchdog.

ໃນລະດັບຄວາມປອດໄພ 2, ມັນເປັນໄປບໍ່ໄດ້ທີ່ຈະປິດການຈັບເວລາ Watchdog, ເຖິງແມ່ນວ່າມີ algorithm ທີ່ອະທິບາຍຂ້າງເທິງ. ເບິ່ງ “ລຳດັບການກຳນົດເວລາສຳລັບການປ່ຽນແປງການກຳນົດຄ່າໂມງຈັບເວລາ” ໃນໜ້າ 43.

ໃນລະດັບຄວາມປອດໄພ 1, WDE ແມ່ນ overridden ໂດຍ WDRF ໃນ MCUSR. ເບິ່ງ “MCUSR – ການລົງທະບຽນສະຖານະ MCU” ຢູ່ໜ້າ 44 ສໍາລັບລາຍລະອຽດຂອງ WDRF. ນີ້ຫມາຍຄວາມວ່າ WDE ຖືກຕັ້ງສະເຫມີເມື່ອ WDRF ຖືກຕັ້ງ. ເພື່ອລຶບ WDE, WDRF ຕ້ອງຖືກລຶບລ້າງກ່ອນທີ່ຈະປິດການໃຊ້ງານ Watchdog ດ້ວຍຂັ້ນຕອນທີ່ໄດ້ອະທິບາຍຂ້າງເທິງ. ຄຸນສົມບັດນີ້ຮັບປະກັນການຣີເຊັດຫຼາຍຄັ້ງໃນລະຫວ່າງເງື່ອນໄຂທີ່ເຮັດໃຫ້ເກີດຄວາມລົ້ມເຫລວ, ແລະການເລີ່ມຕົ້ນທີ່ປອດໄພຫຼັງຈາກຄວາມລົ້ມເຫຼວ.

ຫມາຍເຫດ: ຖ້າໂມງຈັບເວລາ watchdog ບໍ່ໄດ້ຖືກນໍາໃຊ້ໃນແອັບພລິເຄຊັນ, ມັນເປັນສິ່ງສໍາຄັນທີ່ຈະຕ້ອງຜ່ານຂັ້ນຕອນການປິດການໃຊ້ງານ watchdog ໃນການເລີ່ມຕົ້ນຂອງອຸປະກອນ. ຖ້າ Watchdog ຖືກເປີດໃຊ້ໂດຍບັງເອີນ, ຕົວຢ່າງເຊັ່ນample ໂດຍຕົວຊີ້ runaway ຫຼືສະພາບສີອອກສີນ້ໍາຕານ, ອຸປະກອນຈະຖືກຕັ້ງຄ່າໃຫມ່, ຊຶ່ງໃນນັ້ນຈະນໍາໄປສູ່ການປັບ watchdog ໃຫມ່. ເພື່ອຫຼີກເວັ້ນສະຖານະການນີ້, ຊອບແວແອັບພລິເຄຊັນຄວນລ້າງທຸງ WDRF ແລະບິດຄວບຄຸມ WDE ຢູ່ໃນຂັ້ນຕອນການເລີ່ມຕົ້ນ.

Bits 5, 2:0 – WDP[3:0]: Watchdog Timer Prescaler 3, 2, 1, ແລະ 0

WDP[3:0] bits ກໍານົດການກໍານົດເວລາ Watchdog prescaling ເມື່ອໂມງຈັບເວລາ Watchdog ຖືກເປີດໃຊ້. ຄ່າ prescaling ທີ່ແຕກຕ່າງກັນແລະໄລຍະເວລາ Timeout ທີ່ສອດຄ້ອງກັນຂອງພວກມັນຖືກສະແດງຢູ່ໃນ ຕາຕະລາງ 8-3.

ຕາຕະລາງ 8-3. Watchdog Timer Prescale ເລືອກ

WDP3 WDP2 WDP1 WDP0 ຈໍາ​ນວນ WDT Oscillator Cycles ປົກກະຕິເວລາອອກທີ່ VCC = 5.0V
0 0 0 0 2K (2048) ຮອບວຽນ 16 ມລ
0 0 0 1 4K (4096) ຮອບວຽນ 32 ມລ
0 0 1 0 8K (8192) ຮອບວຽນ 64 ມລ
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 ເລືອກ (ຕໍ່)

WDP3 WDP2 WDP1 WDP0 ຈໍາ​ນວນ WDT Oscillator Cycles ປົກກະຕິເວລາອອກທີ່ 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.

ຂັດຂວາງ vectors ໃນ ATtiny25/45/85

vectors ຂັດຂວາງຂອງ ATtiny25/45/85 ຖືກອະທິບາຍໄວ້ໃນ ຕາຕະລາງ 9-1ຂ້າງລຸ່ມນີ້.

ຕາຕະລາງ 9-1. ຣີເຊັດ ແລະ ລົບກວນ vectors

vector No. ທີ່ຢູ່ໂຄງການ ທີ່ມາ ຄໍານິຍາມຂັດຂວາງ
1 0x0000 ຣີເຊັດ Pin ພາຍນອກ, ຣີເຊັດການເປີດເຄື່ອງ, ຣີເຊັດສີນ້ຳຕານອອກ, ຣີເຊັດ Watchdog
2 0x0001 INT0 ການຮ້ອງຂໍການຂັດຂວາງພາຍນອກ 0
3 0x0002 PCINT0 Pin Change Interrupt Request 0
4 0x0003 TIMER1_COMPA Timer/Counter1 ປຽບທຽບການຈັບຄູ່ A
5 0x0004 TIMER1_OVF Timer/Counter1 Overflow
6 0x0005 TIMER0_OVF Timer/Counter0 Overflow
7 0x0006 EE_RDY EEPROM ພ້ອມແລ້ວ
8 0x0007 ANA_COMP ຕົວປຽບທຽບອະນາລັອກ
9 0x0008 ADC ສຳເລັດການແປງ ADC
10 0x0009 TIMER1_COMPB Timer/Counter1 ປຽບທຽບການຈັບຄູ່ B
11 0x000A TIMER0_COMPA Timer/Counter0 ປຽບທຽບການຈັບຄູ່ A
12 0x000B TIMER0_COMPB Timer/Counter0 ປຽບທຽບການຈັບຄູ່ B
13 ຂະ ໜາດ 0x000C WDT Watchdog ໝົດເວລາ
14 0x000D USI_START USI ເລີ່ມ
15 0x000E USI_OVF USI ລົ້ນ

ຖ້າໂປຣແກຣມບໍ່ເຄີຍເປີດໃຊ້ແຫຼ່ງທີ່ມາລົບກວນ, Interrupt Vectors ບໍ່ໄດ້ໃຊ້, ແລະລະຫັດໂປຣແກຣມປົກກະຕິສາມາດຖືກວາງໄວ້ໃນສະຖານທີ່ເຫຼົ່ານີ້.

ການຕັ້ງຄ່າປົກກະຕິແລະທົ່ວໄປສໍາລັບການຂັດຂວາງທີ່ຢູ່ vector ໃນ ATtiny25/45/85 ແມ່ນສະແດງຢູ່ໃນໂຄງການ example ຂ້າງລຸ່ມນີ້.

Assembly Code Example
.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

ຫມາຍເຫດ: ເບິ່ງ “ລະຫັດ Examples” ຢູ່ໃນ ໜ້າ ທີ 6.

ການຂັດຂວາງພາຍນອກ

ການຂັດຂວາງພາຍນອກແມ່ນກະຕຸ້ນໂດຍ PIN INT0 ຫຼືໃດໆຂອງ PIN PCINT[5:0]. ສັງເກດເຫັນວ່າ, ຖ້າເປີດໃຊ້, ການຂັດຂວາງຈະເກີດຂື້ນເຖິງແມ່ນວ່າ pins INT0 ຫຼື PCINT[5:0] ຈະຖືກຕັ້ງຄ່າເປັນຜົນຜະລິດ. ຄຸນນະສົມບັດນີ້ສະຫນອງວິທີການສ້າງການຂັດຂວາງຊອບແວ. ການປ່ຽນແປງ PIN ຂັດຈັງຫວະ PCI ຈະກະຕຸ້ນຖ້າມີການປິດລັບ PIN ທີ່ເປີດການນຳໃຊ້ PCINT[5:0]. ການຄວບຄຸມການລົງທະບຽນ PCMSK ທີ່ pins ປະກອບສ່ວນເຮັດໃຫ້ການປ່ຽນແປງ PIN ຂັດຂວາງ. ການຂັດຈັງຫວະການປ່ຽນແປງ PIN ໃນ PCINT[5:0] ແມ່ນຖືກກວດພົບແບບບໍ່ກົງກັນ. ນີ້ຫມາຍຄວາມວ່າການຂັດຂວາງເຫຼົ່ານີ້ສາມາດຖືກໃຊ້ສໍາລັບການຕື່ນນອນຈາກໂຫມດການນອນອື່ນນອກເຫນືອຈາກໂຫມດ Idle.

ການຂັດຂວາງ INT0 ສາມາດຖືກກະຕຸ້ນໂດຍການຫຼຸດລົງຫຼືເພີ່ມຂຶ້ນຫຼືລະດັບຕ່ໍາ. ອັນນີ້ຖືກຕັ້ງຂຶ້ນຕາມທີ່ລະບຸໄວ້ໃນສະເພາະສຳລັບທະບຽນຄວບຄຸມ MCU – MCUCR. ເມື່ອການຂັດຈັງຫວະ INT0 ຖືກເປີດໃຊ້ ແລະຖືກຕັ້ງຄ່າເປັນລະດັບທີ່ກະຕຸ້ນ, ການຂັດຈັງຫວະຈະກະຕຸ້ນຕາບໃດທີ່ປັກໝຸດໄວ້ຕໍ່າ. ໃຫ້ສັງເກດວ່າການຮັບຮູ້ຂອງການຫຼຸດລົງຫຼືການເພີ່ມຂຶ້ນຂັດຂວາງຢູ່ໃນ INT0 ຮຽກຮ້ອງໃຫ້ມີການປະກົດຕົວຂອງໂມງ I/O, ອະທິບາຍໄວ້ໃນ "ລະບົບໂມງແລະການແຈກຢາຍຂອງພວກເຂົາ" ຢູ່ໃນ ໜ້າ 23.

ການຂັດຂວາງລະດັບຕໍ່າ

ການຂັດຈັງຫວະລະດັບຕໍ່າໃນ INT0 ຖືກກວດພົບແບບບໍ່ຊິ້ງໂຄນ. ນີ້ຫມາຍຄວາມວ່າການຂັດຂວາງນີ້ສາມາດຖືກນໍາໃຊ້ສໍາລັບການຕື່ນນອນຈາກໂຫມດການນອນອື່ນນອກເຫນືອຈາກໂຫມດ Idle. ໂມງ I/O ຖືກຢຸດຢູ່ໃນໂໝດນອນທັງໝົດ ຍົກເວັ້ນໂໝດ Idle.

ຈື່ໄວ້ວ່າຖ້າລະດັບທີ່ກະຕຸ້ນການລົບກວນຖືກໃຊ້ສໍາລັບການປຸກຈາກພະລັງງານລົງ, ລະດັບທີ່ກໍານົດໄວ້ຈະຕ້ອງຖືກຮັກສາໄວ້ດົນພໍສໍາລັບ MCU ເພື່ອເຮັດສໍາເລັດການປຸກເພື່ອກະຕຸ້ນລະດັບລົບກວນ. ຖ້າລະດັບຫາຍໄປກ່ອນທີ່ຈະສິ້ນສຸດເວລາເລີ່ມຕົ້ນ, MCU ຈະຍັງຕື່ນຂຶ້ນ, ແຕ່ບໍ່ມີການລົບກວນຈະຖືກສ້າງຂຶ້ນ. ເວລາເລີ່ມຕົ້ນແມ່ນຖືກກໍານົດໂດຍ SUT ແລະ CKSEL Fuses ຕາມທີ່ໄດ້ອະທິບາຍໄວ້ໃນ “ໂມງລະບົບ ແລະຕົວເລືອກໂມງ” ໃນໜ້າ 23.

ຖ້າລະດັບຕ່ໍາສຸດຂອງ pin interrupt ໄດ້ຖືກໂຍກຍ້າຍອອກກ່ອນທີ່ອຸປະກອນຈະຕື່ນຂຶ້ນຫຼັງຈາກນັ້ນການປະຕິບັດໂຄງການຈະບໍ່ຖືກຫັນໄປສູ່ການຂັດຂວາງການບໍລິການປົກກະຕິແຕ່ສືບຕໍ່ຈາກຄໍາແນະນໍາດັ່ງຕໍ່ໄປນີ້ຄໍາສັ່ງ SLEEP.

ປັກໝຸດປ່ຽນເວລາຂັດຈັງຫວະ

ອະດີດample ຂອງໄລຍະເວລາຂອງການປ່ຽນແປງ PIN ຂັດຂວາງແມ່ນສະແດງຢູ່ໃນ ຮູບທີ 9-1.

ລົງທະບຽນລາຍລະອຽດ

MCUCR - ລົງທະບຽນຄວບຄຸມ MCU

ການລົງທະບຽນການຄວບຄຸມການລົບກວນພາຍນອກ A ປະກອບດ້ວຍບິດຄວບຄຸມສໍາລັບການຄວບຄຸມຄວາມຮູ້ສຶກຂັດຂວາງ.

ບິດ 7 6 5 4 3 2 1 0
0x35 BODS PUD SE SM1 SM0 BODSE 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

Bits 1:0 – ISC0[1:0]: Interrupt Sense Control 0 Bit 1 ແລະ Bit 0

External Interrupt 0 ຖືກເປີດໃຊ້ໂດຍ PIN ພາຍນອກ INT0 ຖ້າ SREG I-flag ແລະຫນ້າກາກລົບກວນທີ່ສອດຄ້ອງກັນຖືກຕັ້ງ. ລະດັບແລະຂອບຂອງ PIN INT0 ພາຍນອກທີ່ກະຕຸ້ນການຂັດຂວາງແມ່ນຖືກກໍານົດໄວ້ໃນ ຕາຕະລາງ 9-2. ຄ່າໃນ INT0 pin ແມ່ນ sampນໍາພາກ່ອນທີ່ຈະກວດພົບແຄມ. ຖ້າເລືອກຂອບ ຫຼືສະຫຼັບການຂັດຈັງຫວະ, ຈັງຫວະທີ່ດົນກວ່າໜຶ່ງໂມງຈະເກີດການຂັດຈັງຫວະ. ຈັງຫວະທີ່ສັ້ນກວ່າແມ່ນບໍ່ຮັບປະກັນທີ່ຈະສ້າງການຂັດຂວາງ. ຖ້າການລົບກວນລະດັບຕໍ່າຖືກເລືອກ, ລະດັບຕ່ໍາຈະຕ້ອງຖືກຈັດໃສ່ຈົນກ່ວາການສໍາເລັດຂອງຄໍາແນະນໍາທີ່ກໍາລັງປະຕິບັດໃນປັດຈຸບັນເພື່ອສ້າງການຂັດຂວາງ.

ຕາຕະລາງ 9-2. ຂັດຂວາງ 0 Sense Control

ISC01 ISC00 ລາຍລະອຽດ
0 0 ລະດັບຕໍ່າຂອງ INT0 ສ້າງການຮ້ອງຂໍຂັດຂວາງ.
0 1 ການປ່ຽນແປງຢ່າງມີເຫດຜົນໃນ INT0 ສ້າງການຮ້ອງຂໍຂັດຂວາງ.
1 0 ຂອບຕົກຂອງ INT0 ສ້າງການຮ້ອງຂໍຂັດຂວາງ.
1 1 ຂອບທີ່ເພີ່ມຂຶ້ນຂອງ INT0 ສ້າງການຮ້ອງຂໍຂັດຂວາງ.

GIMSK - ລົງທະບຽນໜ້າກາກລົບກວນທົ່ວໄປ

ບິດ 7 6 5 4 3 2 1 0
0x3B INT0 PCIe GIMSK
ອ່ານ/ຂຽນ R R/W R/W R R R R R
ຄ່າເລີ່ມຕົ້ນ 0 0 0 0 0 0 0 0

Bits 7, 4:0 – Res: Reserved Bits

ບິດເຫຼົ່ານີ້ແມ່ນສະຫງວນໄວ້ຢູ່ໃນ ATtiny25/45/85 ແລະຈະອ່ານເປັນສູນສະເໝີ.

Bit 6 – INT0: External Interrupt Request 0 ເປີດໃຊ້ງານ

ເມື່ອ INT0 bit ຖືກຕັ້ງ (ຫນຶ່ງ) ແລະ I-bit ໃນ Status Register (SREG) ຖືກຕັ້ງ (ຫນຶ່ງ), pin ພາຍນອກ interrupt ຖືກເປີດໃຊ້. Interrupt Sense Control0 bits 1/0 (ISC01 ແລະ ISC00) ໃນ MCU Control Register (MCUCR) ກໍານົດວ່າການລົບກວນພາຍນອກຖືກເປີດໃຊ້ງານຢູ່ໃນການເພີ່ມຂຶ້ນແລະ / ຫຼືການຫຼຸດລົງຂອງຂອບ INT0 ຫຼືລະດັບຄວາມຮູ້ສຶກ. ການເຄື່ອນໄຫວຢູ່ໃນເຂັມປັກໝຸດຈະເຮັດໃຫ້ເກີດການຮ້ອງຂໍຂັດຂວາງເຖິງແມ່ນວ່າ INT0 ຈະຖືກຕັ້ງຄ່າເປັນຜົນຜະລິດ. ການຂັດຂວາງທີ່ສອດຄ້ອງກັນຂອງ Exter- nal Interrupt Request 0 ຖືກປະຕິບັດຈາກ INT0 Interrupt Vector.

Bit 5 – PCIE: Pin Change Interrupt Enable

ເມື່ອບິດ PCIE ຖືກຕັ້ງ (ຫນຶ່ງ) ແລະ I-bit ໃນ Status Register (SREG) ຖືກຕັ້ງ (ຫນຶ່ງ), pin change interrupt ຖືກເປີດໃຊ້. ການ​ປ່ຽນ​ແປງ​ໃດໆ​ກ່ຽວ​ກັບ​ການ​ເປີດ​ໃຊ້​ງານ PCINT[5:0] pin ຈະ​ເຮັດ​ໃຫ້​ເກີດ​ການ​ຂັດ​ຂວາງ. ການຂັດຂວາງທີ່ສອດຄ້ອງກັນຂອງ Pin Change Interrupt Request ຖືກປະຕິບັດຈາກ PCI Interrupt Vector. PCINT[5:0] pins ຖືກເປີດໃຊ້ເປັນສ່ວນບຸກຄົນໂດຍການລົງທະບຽນ 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

Bits 7, 4:0 – Res: Reserved Bits

ບິດເຫຼົ່ານີ້ແມ່ນສະຫງວນໄວ້ຢູ່ໃນ ATtiny25/45/85 ແລະຈະອ່ານເປັນສູນສະເໝີ.

Bit 6 – INTF0: External Interrupt Flag 0

ເມື່ອການປ່ຽນຂອບ ຫຼື logic ຢູ່ໃນ PIN INT0 ເຮັດໃຫ້ເກີດການຮ້ອງຂໍຂັດຂວາງ, INTF0 ກາຍເປັນຊຸດ (ຫນຶ່ງ). ຖ້າ I-bit ໃນ SREG ແລະ INT0 bit ໃນ GIMSK ຖືກຕັ້ງ (ຫນຶ່ງ), MCU ຈະໂດດໄປຫາ Interrupt Vector ທີ່ສອດຄ້ອງກັນ. ທຸງຖືກລຶບລ້າງເມື່ອສິ່ງທີ່ເຮັດປະຈຳການຂັດຂວາງຖືກປະຕິບັດ. ອີກທາງເລືອກ, ທຸງສາມາດຖືກລຶບລ້າງໂດຍການຂຽນຢ່າງມີເຫດຜົນກັບມັນ. ທຸງນີ້ຈະຖືກລຶບລ້າງສະເໝີເມື່ອ INT0 ຖືກຕັ້ງຄ່າເປັນການລົບກວນລະດັບ.

Bit 5 – PCIF: Pin ປ່ຽນ Interrupt Flag

ເມື່ອການປ່ຽນແປງຕາມເຫດຜົນໃນ PIN PCINT[5:0] ເຮັດໃຫ້ເກີດການຮ້ອງຂໍຂັດຂວາງ, PCIF ກາຍເປັນຊຸດ (ອັນດຽວ). ຖ້າ I-bit ໃນ SREG ແລະ PCIE bit ໃນ GIMSK ຖືກຕັ້ງ (ຫນຶ່ງ), MCU ຈະໂດດໄປຫາ Interrupt Vector ທີ່ສອດຄ້ອງກັນ. ທຸງຖືກລຶບລ້າງເມື່ອສິ່ງທີ່ເຮັດປະຈຳການຂັດຂວາງຖືກປະຕິບັດ. ອີກທາງເລືອກ, ທຸງສາມາດຖືກລຶບລ້າງໂດຍການຂຽນຢ່າງມີເຫດຜົນກັບມັນ.

PCMSK – PIN ປ່ຽນໜ້າກາກ ລົງທະບຽນ

ບິດ 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

Bits 7:6 – Res: Reserved Bits

ບິດເຫຼົ່ານີ້ແມ່ນສະຫງວນໄວ້ຢູ່ໃນ ATtiny25/45/85 ແລະຈະອ່ານເປັນສູນສະເໝີ.

Bits 5:0 – PCINT[5:0]: Pin Change Enable Mask 5:0

ແຕ່ລະ PCINT[5:0] ບິດຈະເລືອກວ່າການປ່ຽນແປງ pin interrupt ຖືກເປີດໃຊ້ຢູ່ໃນ I/O pin ທີ່ສອດຄ້ອງກັນຫຼືບໍ່. ຖ້າຕັ້ງ PCINT[5:0] ແລະ PCIE bit ໃນ GIMSK ຖືກຕັ້ງ, ການປ່ຽນແປງ pin interrupt ຈະຖືກເປີດໃຊ້ໃນ I/O pin ທີ່ສອດຄ້ອງກັນ. ຖ້າ PCINT[5:0] ຖືກລຶບລ້າງ, ການປ່ຽນປັກໝຸດຂັດຈັງຫວະຢູ່ໃນ PIN I/O ທີ່ສອດຄ້ອງກັນຖືກປິດໃຊ້ງານ.

ຜອດ I/O

ແນະນຳ

ຜອດ AVR ທັງໝົດມີຟັງຊັນ Read-Modify-Write ທີ່ແທ້ຈິງເມື່ອໃຊ້ເປັນຜອດ I/O ດິຈິຕອນທົ່ວໄປ. ນີ້ຫມາຍຄວາມວ່າທິດທາງຂອງ pin port ຫນຶ່ງສາມາດປ່ຽນແປງໄດ້ໂດຍບໍ່ໄດ້ຕັ້ງໃຈປ່ຽນທິດທາງຂອງ pin ອື່ນໆທີ່ມີຄໍາແນະນໍາ SBI ແລະ CBI. ດຽວກັນໃຊ້ໄດ້ໃນເວລາທີ່ປ່ຽນຄ່າໄດ (ຖ້າກໍາຫນົດຄ່າເປັນຜົນຜະລິດ) ຫຼືເປີດ / ປິດການທໍາງານຂອງ resistors ດຶງຂຶ້ນ (ຖ້າ configured ເປັນ input). ແຕ່ລະ output buffer ມີລັກສະນະ drive symmetrical ມີທັງ sink ສູງແລະຄວາມສາມາດແຫຼ່ງ. ໄດເວີ pin ມີຄວາມເຂັ້ມແຂງພຽງພໍທີ່ຈະຂັບການສະແດງ LED ໂດຍກົງ. ປັກສຽບພອດທັງໝົດມີຕົວຕ້ານທານແບບດຶງແບບທີ່ສາມາດເລືອກໄດ້ສະເພາະຕົວພ້ອມອຸປະກອນສະໜອງtage ການຕໍ່ຕ້ານ invariant. pin I/O ທັງໝົດມີ diodes ປ້ອງກັນທັງ VCC ແລະ Ground ຕາມທີ່ລະບຸໄວ້ໃນ ຮູບທີ 10-1. ອ້າງເຖິງ “ຄຸນລັກສະນະທາງໄຟຟ້າ” ໃນໜ້າ 161 ສໍາລັບບັນຊີລາຍຊື່ເຕັມຂອງຕົວກໍານົດການ.

ຮູບທີ 10-1. I/O Pin Equivalent Schematic

ຮູບ10

ທຸກໆການລົງທະບຽນແລະການອ້າງອິງ bit ໃນພາກນີ້ແມ່ນຂຽນໃນຮູບແບບທົ່ວໄປ. ໂຕພິມນ້ອຍ “x” ສະແດງເຖິງຕົວພິມເລກສຳລັບພອດ, ແລະຕົວພິມນ້ອຍ “n” ສະແດງເຖິງຕົວເລກນ້ອຍ. ຢ່າງໃດກໍຕາມ, ເມື່ອນໍາໃຊ້ທະບຽນຫຼືບິດກໍານົດໃນໂຄງການ, ແບບຟອມທີ່ຊັດເຈນຕ້ອງຖືກນໍາໃຊ້. ຕົວຢ່າງample, PORTB3 ສໍາລັບ bit no. 3 ໃນພອດ B, ໂດຍທົ່ວໄປແລ້ວເອກະສານນີ້ແມ່ນ PORTxn. ການລົງທະບຽນ I/O ທາງກາຍຍະພາບ ແລະສະຖານທີ່ບິດແມ່ນຖືກລະບຸໄວ້ໃນ "ລົງທະບຽນລາຍລະອຽດ" ຢູ່ໃນ ໜ້າ 64.

ສາມສະຖານທີ່ທີ່ຢູ່ຫນ່ວຍຄວາມຈໍາ I/O ຖືກຈັດສັນໃຫ້ແຕ່ລະພອດ, ແຕ່ລະບ່ອນສໍາລັບການລົງທະບຽນຂໍ້ມູນ – PORTx, Data Direction Register – DDRx, ແລະ Port Input Pins – PINx. Port Input Pins I/O ສະຖານທີ່ແມ່ນອ່ານໄດ້ເທົ່ານັ້ນ, ໃນຂະນະທີ່ການລົງທະບຽນຂໍ້ມູນ ແລະທະບຽນທິດທາງຂໍ້ມູນຖືກອ່ານ/ຂຽນ. ຢ່າງໃດກໍຕາມ, ການຂຽນ logic ຫນຶ່ງຫາເລັກນ້ອຍໃນທະບຽນ PINx, ຈະສົ່ງຜົນໃຫ້ມີການສະຫຼັບໃນ bit ທີ່ສອດຄ້ອງກັນໃນ Data Register. ນອກຈາກນັ້ນ, Pull-up Disable – PUD bit ໃນ MCUCR ປິດການທໍາງານຂອງ pull-up ສໍາລັບ pins ທັງຫມົດໃນ ports ທັງຫມົດໃນເວລາທີ່ຕັ້ງ.

ການນໍາໃຊ້ພອດ I/O ເປັນ General Digital I/O ຖືກອະທິບາຍໄວ້ໃນ “ພອດເປັນ Digital I/O ທົ່ວໄປ” ໃນໜ້າ 53. ປັກໝຸດພອດສ່ວນໃຫຍ່ຈະຖືກຄູນດ້ວຍຟັງຊັນສະລັບກັນສຳລັບຄຸນສົມບັດອຸປະກອນຕໍ່ພອດໃນອຸປະກອນ. ແຕ່ລະຟັງຊັນສະຫຼັບ interferes ກັບ pin ພອດໄດ້ຖືກອະທິບາຍໄວ້ໃນ “ຟັງຊັນພອດສຳຮອງ” ໃນໜ້າ 57. ອ້າງອີງໃສ່ພາກສ່ວນໂມດູນແຕ່ລະອັນສໍາລັບລາຍລະອຽດເຕັມຂອງຫນ້າທີ່ຈັບສະຫຼັບ.

ກະລຸນາຮັບຊາບວ່າການເປີດໃຊ້ງານສະຫຼັບຂອງບາງພອດພອດບໍ່ສົ່ງຜົນກະທົບຕໍ່ການໃຊ້ປັກໝຸດອື່ນໃນພອດຄືກັບ I/O ດິຈິຕອລທົ່ວໄປ.

Ports ເປັນ General Digital I/O

ພອດແມ່ນພອດ I/O ສອງທິດທາງທີ່ມີການດຶງພາຍໃນທາງເລືອກ. ຮູບທີ 10-2 ສະແດງລາຍລະອຽດທີ່ເປັນປະໂຫຍດຂອງ I/O-port pin, ໃນທີ່ນີ້ເອີ້ນວ່າ Pxn.

ຮູບທີ 10-2. Digital I/O ທົ່ວໄປ(1)

ຮູບ10

ການຕັ້ງຄ່າ Pin

ແຕ່ລະພອດພອດປະກອບດ້ວຍສາມບິດລົງທະບຽນ: DDxn, PORTxn, ແລະ PINxn. ດັ່ງທີ່ສະແດງຢູ່ໃນ "ລົງທະບຽນລາຍລະອຽດ" ຢູ່ໃນ ໜ້າ 64, ບິດ DDxn ແມ່ນເຂົ້າເຖິງໄດ້ທີ່ທີ່ຢູ່ DDRx I/O, ບິດ PORTxn ຢູ່ທີ່ທີ່ຢູ່ PORTx I/O, ແລະບິດ PINxn ຢູ່ PINx I/O address.

ບິດ DDxn ໃນ DDRx Register ເລືອກທິດທາງຂອງ PIN ນີ້. ຖ້າ DDxn ຖືກຂຽນເປັນ logic ຫນຶ່ງ, Pxn ຖືກຕັ້ງຄ່າເປັນ pin ຜົນຜະລິດ. ຖ້າ DDxn ຖືກຂຽນເປັນ logic zero, Pxn ຖືກຕັ້ງຄ່າເປັນ PIN ປ້ອນເຂົ້າ.

ຖ້າ PORTxn ຖືກຂຽນເປັນ logic one ເມື່ອ pin ຖືກຕັ້ງຄ່າເປັນ pin input, ຕົວຕ້ານທານແບບດຶງຂຶ້ນຈະຖືກເປີດໃຊ້. ເພື່ອປິດຕົວຕ້ານທານແບບດຶງຂຶ້ນ, PORTxn ຈະຕ້ອງຂຽນ logic zero ຫຼື pin ຕ້ອງຖືກຕັ້ງຄ່າເປັນ pin ຜົນຜະລິດ. ເຂັມປັກໝຸດພອດຈະລະບຸໄວ້ສາມຄັ້ງເມື່ອການຣີເຊັດສະພາບກາຍເປັນການເຄື່ອນໄຫວ, ເຖິງແມ່ນວ່າບໍ່ມີໂມງເຮັດວຽກຢູ່ກໍຕາມ.

ຖ້າ PORTxn ຖືກຂຽນເປັນ logic one ເມື່ອ pin ຖືກຕັ້ງຄ່າເປັນ pin ຜົນຜະລິດ, pin port ຈະຖືກຂັບເຄື່ອນສູງ (ຫນຶ່ງ). ຖ້າ PORTxn ຖືກຂຽນເປັນ logic zero ເມື່ອ pin ຖືກຕັ້ງຄ່າເປັນ pin output, pin port ຈະຖືກຂັບເຄື່ອນຕໍ່າ (ສູນ).

ການສະຫຼັບ PIN

ການຂຽນ logic one to PINxn ສະຫຼັບຄ່າຂອງ PORTxn, ເອກະລາດກັບຄ່າຂອງ DDRxn. ໃຫ້ສັງເກດວ່າຄໍາແນະນໍາ SBI ສາມາດຖືກນໍາໃຊ້ເພື່ອສະຫຼັບຫນຶ່ງບິດດຽວໃນພອດ.

ສະຫຼັບລະຫວ່າງການປ້ອນຂໍ້ມູນ ແລະ ຜົນຜະລິດ

ເມື່ອປ່ຽນລະຫວ່າງ tri-state ({DDxn, PORTxn} = 0b00) ແລະ output high ({DDxn, PORTxn} = 0b11), inter-mediate state ທີ່ມີທັງ pull-up enabled {DDxn, PORTxn} = 0b01) ຫຼື output low ({DDxn, PORTxn} = 0b10) ຕ້ອງເກີດຂຶ້ນ. ໂດຍປົກກະຕິ, ສະຖານະທີ່ເປີດໃຊ້ງານດຶງຂຶ້ນແມ່ນເປັນທີ່ຍອມຮັບໄດ້ຢ່າງເຕັມສ່ວນ, ຍ້ອນວ່າສະພາບແວດລ້ອມທີ່ຂັດຂວາງສູງຈະບໍ່ສັງເກດເຫັນຄວາມແຕກຕ່າງລະຫວ່າງຄົນຂັບລົດສູງທີ່ເຂັ້ມແຂງແລະການດຶງຂຶ້ນ. ຖ້ານີ້ບໍ່ແມ່ນກໍລະນີ, ບິດ PUD ໃນ MCUCR Register ສາມາດຖືກຕັ້ງໃຫ້ປິດການດຶງລົງໃນທຸກພອດ.

ການສະຫຼັບລະຫວ່າງອິນພຸດດ້ວຍການດຶງຂຶ້ນ ແລະ ຜົນຜະລິດຕໍ່າຈະສ້າງບັນຫາດຽວກັນ. ຜູ້ໃຊ້ຈະຕ້ອງໃຊ້ສະຖານະ tri- ({DDxn, PORTxn} = 0b00) ຫຼືສະຖານະສູງຂອງຜົນຜະລິດ ({DDxn, PORTxn} = 0b10) ເປັນຂັ້ນຕອນກາງ.

ຕາຕະລາງ 10-1 ສະຫຼຸບສັນຍານຄວບຄຸມສໍາລັບຄ່າ PIN.

ຕາຕະລາງ 10-1. ການຕັ້ງຄ່າ Port Pin

DDxn PORTxn PUD

(ໃນ MCUCR)

I/O ດຶງຂຶ້ນ ຄໍາເຫັນ
0 0 X ປ້ອນຂໍ້ມູນ ບໍ່ ສາມລັດ (Hi-Z)
0 1 0 ປ້ອນຂໍ້ມູນ ແມ່ນແລ້ວ Pxn ຈະແຫຼ່ງປັດຈຸບັນຖ້າ ext. ດຶງຕ່ໍາ.
0 1 1 ປ້ອນຂໍ້ມູນ ບໍ່ ສາມລັດ (Hi-Z)
1 0 X ຜົນຜະລິດ ບໍ່ ຜົນຜະລິດຕໍ່າ (Sink)
1 1 X ຜົນຜະລິດ ບໍ່ ຜົນຜະລິດສູງ (ແຫຼ່ງຂໍ້ມູນ)

ການອ່ານຄ່າ PIN

ເປັນເອກະລາດຂອງການຕັ້ງຄ່າຂໍ້ມູນທິດທາງບິດ DDxn, PIN ຂອງພອດສາມາດອ່ານຜ່ານ PINxn Register bit. ດັ່ງທີ່ສະແດງຢູ່ໃນ ຮູບທີ 10-2, PINxn ລົງທະບຽນ bit ແລະ latch ກ່ອນຫນ້າປະກອບເປັນ synchronizer. ນີ້ແມ່ນຈໍາເປັນເພື່ອຫຼີກເວັ້ນການ metastability ຖ້າ pin ທາງດ້ານຮ່າງກາຍມີການປ່ຽນແປງມູນຄ່າຢູ່ໃກ້ກັບຂອບຂອງໂມງພາຍໃນ, ແຕ່ວ່າມັນຍັງແນະນໍາການຊັກຊ້າ. ຮູບທີ 10-3 ສະ​ແດງ​ແຜນ​ວາດ​ກໍາ​ນົດ​ເວ​ລາ​ຂອງ synchronization ໃນ​ເວ​ລາ​ທີ່​ອ່ານ​ຄ່າ pin ທີ່​ນໍາ​ໃຊ້​ພາຍ​ນອກ. ຄວາມລ່າຊ້າການຂະຫຍາຍພັນສູງສຸດ ແລະຕໍ່າສຸດແມ່ນໝາຍເຖິງ tpd,max ແລະ tpd,min ຕາມລໍາດັບ.

ພິ​ຈາ​ລະ​ນາ​ໄລ​ຍະ​ໂມງ​ເລີ່ມ​ຕົ້ນ​ບໍ່​ດົນ​ຫຼັງ​ຈາກ​ການ​ຫຼຸດ​ລົງ​ຂອບ​ເຂດ​ທໍາ​ອິດ​ຂອງ​ໂມງ​ລະ​ບົບ​. ລັອດຈະປິດເມື່ອໂມງຕ່ຳ, ແລະມີຄວາມໂປ່ງໃສເມື່ອໂມງສູງ, ຕາມທີ່ຊີ້ບອກໂດຍພື້ນທີ່ຮົ່ມຂອງສັນຍານ “SYNC LATCH”. ຄ່າສັນຍານຖືກຈັບເມື່ອໂມງລະບົບຕໍ່າລົງ. ມັນໄດ້ຖືກ clocked ເຂົ້າໄປໃນ PINxn Register ຢູ່ຂອບໂມງບວກທີ່ສໍາເລັດຜົນ. ດັ່ງທີ່ລະບຸໄວ້ໂດຍສອງລູກສອນ tpd, ສູງສຸດແລະ tpd, min, ການຫັນປ່ຽນສັນຍານດຽວໃນ PIN ຈະຖືກຊັກຊ້າລະຫວ່າງ ½ ແລະ 1½ ໄລຍະເວລາໂມງລະບົບຂຶ້ນກັບເວລາຂອງການຢືນຢັນ.

ເມື່ອອ່ານຄືນຄ່າຂອງລະຫັດ PIN ຂອງຊອບແວ, ຄໍາສັ່ງ nop ຕ້ອງຖືກໃສ່ຕາມທີ່ລະບຸໄວ້ໃນ ຮູບທີ 10-4. ຄໍາແນະນໍາອອກກໍານົດສັນຍານ "SYNC LATCH" ຢູ່ຂອບທາງບວກຂອງໂມງ. ໃນກໍລະນີນີ້, ການຊັກຊ້າ tpd ຜ່ານ synchronizer ແມ່ນໄລຍະເວລາຫນຶ່ງຂອງລະບົບໂມງ.

ລະຫັດຕໍ່ໄປນີ້ example ສະແດງໃຫ້ເຫັນວິທີການຕັ້ງພອດ B pins 0 ແລະ 1 ສູງ, 2 ແລະ 3 ຕ່ໍາ, ແລະກໍານົດ pins ຂອງພອດຈາກ 4 ຫາ 5 ເປັນການປ້ອນຂໍ້ມູນດ້ວຍການດຶງຂຶ້ນມອບຫມາຍໃສ່ພອດ 4. ຄ່າ PIN ຜົນໄດ້ຮັບແມ່ນອ່ານອີກເທື່ອຫນຶ່ງ, ແຕ່. ດັ່ງທີ່ໄດ້ສົນທະນາກ່ອນຫນ້ານີ້, ຄໍາແນະນໍາ nop ໄດ້ຖືກລວມເຂົ້າເພື່ອໃຫ້ສາມາດອ່ານຄືນຄ່າທີ່ຖືກມອບຫມາຍໃຫ້ກັບບາງ pins ເມື່ອໄວໆມານີ້.

Assembly Code Example(1)

; ກໍານົດການດຶງຂຶ້ນແລະກໍານົດຜົນໄດ້ຮັບສູງ

; ກໍານົດທິດທາງສໍາລັບ pins ພອດ

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

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

ອອກ PORTB,r16

ອອກ DDRB,r17

; ໃສ່ nop ເພື່ອ synchronization

ບໍ່

; ອ່ານ pins ພອດ

ໃນ r16, PINB

ຫມາຍເຫດ: ສໍາລັບໂຄງການປະກອບ, ສອງທະບຽນຊົ່ວຄາວຖືກນໍາໃຊ້ເພື່ອຫຼຸດຜ່ອນເວລາຈາກການດຶງຂຶ້ນແມ່ນຕັ້ງຢູ່ໃນ pins 0, 1 ແລະ 4, ຈົນກ່ວາບິດທິດທາງຖືກຕັ້ງຢ່າງຖືກຕ້ອງ, ກໍານົດ bit 2 ແລະ 3 ຕ່ໍາແລະ redefining bits 0 ແລະ. 1 ເປັນ​ຄົນ​ຂັບ​ສູງ​ທີ່​ເຂັ້ມ​ແຂງ​.

C ລະຫັດ Example
unsigned char i;

/* ກໍາ​ນົດ​ການ​ດຶງ​ຂຶ້ນ​ແລະ​ກໍາ​ນົດ​ຜົນ​ໄດ້​ຮັບ​ສູງ */

/* ກຳນົດທິດທາງສຳລັບພອດພອດ */ PORTB = (1<

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

/* ໃສ່ nop ເພື່ອ synchronization*/

_NOP();

/* ອ່ານ port pins */ i = PINB;

ການປ້ອນຂໍ້ມູນແບບດິຈິຕອລ ເປີດໃຊ້ ແລະ ໂໝດນອນ

ດັ່ງທີ່ສະແດງຢູ່ໃນ ຮູບທີ 10-2, ສັນຍານເຂົ້າດິຈິຕອນສາມາດ clamped ກັບດິນຢູ່ທີ່ວັດສະດຸປ້ອນຂອງ schmitt-trigger. ສັນຍານທີ່ສະແດງເຖິງ SLEEP ໃນຮູບ, ຖືກກໍານົດໂດຍ MCU Sleep Controller ໃນໂໝດປິດເຄື່ອງເພື່ອຫຼີກເວັ້ນການໃຊ້ພະລັງງານສູງຖ້າສັນຍານ input ບາງອັນຖືກປະໄວ້, ຫຼືມີລະດັບສັນຍານອະນາລັອກຢູ່ໃກ້ກັບ VCC/2.

SLEEP ແມ່ນ overridden ສໍາລັບ pins ຜອດເປີດເປັນ pin interrupt ພາຍນອກ. ຖ້າການຮ້ອງຂໍການຂັດຂວາງພາຍນອກບໍ່ໄດ້ເປີດໃຊ້ງານ, SLEEP ຍັງເຮັດວຽກສໍາລັບ pins ເຫຼົ່ານີ້. SLEEP ຍັງຖືກ overridden ໂດຍຫນ້າທີ່ສະຫຼັບອື່ນໆທີ່ອະທິບາຍໄວ້ໃນ “ຟັງຊັນພອດສຳຮອງ” ໃນໜ້າ 57.

ຖ້າມີ logic ລະດັບສູງ ("ຫນຶ່ງ") ຢູ່ໃນ pin interrupt ພາຍນອກ asynchronous ທີ່ກໍາຫນົດຄ່າເປັນ "Interrupt on Rising Edge, Falling Edge, ຫຼື Logic Change on Pin" ໃນຂະນະທີ່ການຂັດຂວາງພາຍນອກບໍ່ໄດ້ເປີດໃຊ້, ທຸງ Interrupt ພາຍນອກທີ່ສອດຄ້ອງກັນຈະ ຈະຖືກຕັ້ງເມື່ອສືບຕໍ່ຈາກໂໝດການນອນທີ່ກ່າວມາຂ້າງເທິງ, ເປັນ clampຢູ່ໃນຮູບແບບການນອນເຫຼົ່ານີ້ຜະລິດການປ່ຽນແປງຕາມເຫດຜົນທີ່ຮ້ອງຂໍ.

ປັກໝຸດທີ່ບໍ່ໄດ້ເຊື່ອມຕໍ່

ຖ້າບາງ pins ບໍ່ໄດ້ໃຊ້, ມັນແນະນໍາໃຫ້ຮັບປະກັນວ່າ pins ເຫຼົ່ານີ້ມີລະດັບທີ່ກໍານົດໄວ້. ເຖິງແມ່ນວ່າວັດສະດຸປ້ອນດິຈິຕອລສ່ວນໃຫຍ່ຖືກປິດໃຊ້ງານຢູ່ໃນໂໝດນອນເລິກຕາມທີ່ອະທິບາຍໄວ້ຂ້າງເທິງ, ການປ້ອນຂໍ້ມູນແບບເລື່ອນຄວນຖືກຫຼີກລ່ຽງເພື່ອຫຼຸດຜ່ອນການບໍລິໂພກປັດຈຸບັນໃນທຸກໂໝດອື່ນໆທີ່ເປີດໃຊ້ການປ້ອນຂໍ້ມູນດິຈິຕອນ (ຣີເຊັດ, ໂໝດເຄື່ອນໄຫວ ແລະໂໝດບໍ່ເຮັດວຽກ).

ວິ​ທີ​ທີ່​ງ່າຍ​ທີ່​ສຸດ​ເພື່ອ​ຮັບ​ປະ​ກັນ​ລະ​ດັບ​ທີ່​ກໍາ​ນົດ​ໄວ້​ຂອງ pin ທີ່​ບໍ່​ໄດ້​ນໍາ​ໃຊ້​, ແມ່ນ​ເພື່ອ​ເຮັດ​ໃຫ້​ການ​ດຶງ​ຂຶ້ນ​ພາຍ​ໃນ​. ໃນກໍລະນີນີ້, ການດຶງຂຶ້ນຈະຖືກປິດໃຊ້ງານໃນລະຫວ່າງການຕັ້ງໃຫມ່. ຖ້າການໃຊ້ພະລັງງານຕ່ໍາໃນລະຫວ່າງການຕັ້ງໃຫມ່ແມ່ນມີຄວາມສໍາຄັນ, ມັນແນະນໍາໃຫ້ໃຊ້ການດຶງອອກຈາກພາຍນອກຫຼືດຶງລົງ. ການເຊື່ອມຕໍ່ pins ທີ່ບໍ່ໄດ້ໃຊ້ໂດຍກົງກັບ VCC ຫຼື GND ແມ່ນບໍ່ແນະນໍາ, ເນື່ອງຈາກວ່ານີ້ອາດຈະເຮັດໃຫ້ກະແສໄຟຟ້າຫຼາຍເກີນໄປຖ້າຫາກວ່າ pin ໄດ້ຖືກກໍາຫນົດໂດຍບໍ່ໄດ້ຕັ້ງໃຈເປັນຜົນຜະລິດ.

ຟັງຊັນພອດສຳຮອງ

ປັກໝຸດພອດສ່ວນໃຫຍ່ມີໜ້າທີ່ສະຫຼັບກັນ ນອກຈາກຈະເປັນ I/Os ດິຈິຕອນທົ່ວໄປ. ຮູບທີ 10-5 ສະແດງໃຫ້ເຫັນວິທີການຄວບຄຸມ PIN ຂອງພອດສັນຍານຈາກ simplified ຮູບທີ 10-2 ສາ​ມາດ overridden ໂດຍ​ຫນ້າ​ທີ່​ສະ​ຫຼັບ​. ສັນຍານ overriding ອາດຈະບໍ່ມີຢູ່ໃນທຸກຜອດພອດ, ແຕ່ຕົວເລກດັ່ງກ່າວເຮັດຫນ້າທີ່ເປັນຄໍາອະທິບາຍທົ່ວໄປທີ່ໃຊ້ໄດ້ກັບທຸກຜອດພອດໃນຄອບຄົວ AVR microcontroller.

ຕາຕະລາງ 10-2. ຄໍາອະທິບາຍທົ່ວໄປຂອງສັນຍານ overriding ສໍາລັບຫນ້າທີ່ທາງເລືອກ

ຊື່ສັນຍານ ຊື່ເຕັມ ລາຍລະອຽດ
PUOE Pull-up Override ເປີດໃຊ້ງານ ຖ້າສັນຍານນີ້ຖືກຕັ້ງ, ການເປີດໃຊ້ງານດຶງຂຶ້ນຈະຖືກຄວບຄຸມໂດຍສັນຍານ PUOV. ຖ້າສັນຍານນີ້ຖືກລຶບລ້າງ, ການດຶງຂຶ້ນຈະຖືກເປີດໃຊ້ເມື່ອ

{DDxn, PORTxn, PUD} = 0b010.

PUOV Pull-up Override ຄ່າ ຖ້າ PUOE ຖືກຕັ້ງ, ການດຶງຂຶ້ນຈະຖືກເປີດໃຊ້ / ປິດໃຊ້ງານເມື່ອ PUOV ຖືກຕັ້ງ / ລ້າງ, ໂດຍບໍ່ຄໍານຶງເຖິງການຕັ້ງຄ່າຂອງ DDxn, PORTxn, ແລະ PUD Register bits.
DDOE ເປີດໃຊ້ການຍົກເລີກທິດທາງຂໍ້ມູນ ຖ້າສັນຍານນີ້ຖືກຕັ້ງ, Output Driver Enable ຖືກຄວບຄຸມໂດຍສັນຍານ DDOV. ຖ້າສັນຍານນີ້ຖືກລຶບລ້າງ, Output Driver ຖືກເປີດໃຊ້ໂດຍ DDxn Register bit.
DDOV ຄ່າ Override ທິດທາງຂໍ້ມູນ ຖ້າ DDOE ຖືກຕັ້ງ, Output Driver ຖືກເປີດໃຊ້ / ປິດໃຊ້ງານເມື່ອ DDOV ຖືກຕັ້ງ / ລ້າງ, ໂດຍບໍ່ຄໍານຶງເຖິງການຕັ້ງຄ່າຂອງ DDxn Register bit.
PVOE ເປີດໃຊ້ການຍົກເລີກຄ່າພອດ ຖ້າສັນຍານນີ້ຖືກຕັ້ງແລະໄດເວີຜົນຜະລິດຖືກເປີດໃຊ້, ຄ່າພອດຈະຖືກຄວບຄຸມໂດຍສັນຍານ PVOV. ຖ້າ PVOE ຖືກລຶບລ້າງ, ແລະໄດເວີຜົນຜະລິດຖືກເປີດໃຊ້, ຄ່າພອດຖືກຄວບຄຸມໂດຍ PORTxn Register bit.
PVOV Port Value Override ຄ່າ ຖ້າ PVOE ຖືກຕັ້ງ, ຄ່າພອດແມ່ນຕັ້ງເປັນ PVOV, ໂດຍບໍ່ຄໍານຶງເຖິງການຕັ້ງຄ່າຂອງ PORTxn Register bit.
PTOE Port Toggle Override ເປີດໃຊ້ງານ ຖ້າ PTOE ຖືກຕັ້ງ, ບິດລົງທະບຽນ PORTxn ຈະຖືກປີ້ນ.
DIEOE ການປ້ອນຂໍ້ມູນແບບດິຈິຕອລ ເປີດໃຊ້ Override ເປີດໃຊ້ງານ ຖ້າບິດນີ້ຖືກຕັ້ງ, ການເປີດໃຊ້ການປ້ອນຂໍ້ມູນດິຈິຕອນຖືກຄວບຄຸມໂດຍສັນຍານ DIEOV. ຖ້າສັນຍານນີ້ຖືກລຶບລ້າງ, ການເປີດໃຊ້ການປ້ອນຂໍ້ມູນດິຈິຕອນແມ່ນຖືກກໍານົດໂດຍສະຖານະ MCU (ໂໝດປົກກະຕິ, ໂໝດນອນ).
DIEOV ການປ້ອນຂໍ້ມູນແບບດິຈິຕອລເປີດໃຊ້ຄ່າ override ຖ້າ DIEOE ຖືກຕັ້ງ, ການປ້ອນຂໍ້ມູນດິຈິຕອລຖືກເປີດໃຊ້ / ປິດໃຊ້ງານເມື່ອ DIEOV ຖືກຕັ້ງ / ລ້າງ, ໂດຍບໍ່ຄໍານຶງເຖິງສະຖານະ MCU (ໂໝດປົກກະຕິ, ໂໝດນອນ).
DI ການປ້ອນຂໍ້ມູນດິຈິຕອລ ນີ້ແມ່ນການປ້ອນຂໍ້ມູນແບບດິຈິຕອລເພື່ອເຮັດໜ້າທີ່ສະລັບກັນ. ໃນຮູບ, ສັນຍານແມ່ນເຊື່ອມຕໍ່ກັບຜົນຜະລິດຂອງ schmitt-trigger ແຕ່ກ່ອນທີ່ຈະ synchronizer. ເວັ້ນເສຍແຕ່ວ່າອິນພຸດດິຈິຕອລຖືກໃຊ້ເປັນແຫຼ່ງໂມງ, ໂມດູນທີ່ມີຟັງຊັນສະຫຼັບຈະໃຊ້ຕົວຊິ້ງຂອງມັນເອງ.
AIO ຂໍ້ມູນຂາເຂົ້າ / ຂາອອກ ນີ້​ແມ່ນ​ການ​ປ້ອນ​ຂໍ້​ມູນ / ຜົນ​ໄດ້​ຮັບ​ອະ​ນາ​ລັອກ​ເປັນ / ຈາກ​ຫນ້າ​ທີ່​ສະ​ຫຼັບ​. ສັນຍານຖືກເຊື່ອມຕໍ່ໂດຍກົງກັບແຜ່ນຮອງ, ແລະສາມາດໃຊ້ສອງທິດທາງໄດ້.

ພາກສ່ວນຍ່ອຍຕໍ່ໄປນີ້ອະທິບາຍສັ້ນໆກ່ຽວກັບຟັງຊັນສະລັບກັນສໍາລັບແຕ່ລະພອດ, ແລະກ່ຽວຂ້ອງກັບສັນຍານ overriding ກັບຟັງຊັນສະຫຼັບ. ອ້າງອີງເຖິງຄໍາອະທິບາຍຟັງຊັນສຳຮອງສໍາລັບລາຍລະອຽດເພີ່ມເຕີມ.

ຟັງຊັນສຳຮອງຂອງພອດ B

ປັກໝຸດພອດ B ທີ່ມີຟັງຊັນສະຫຼັບຖືກສະແດງຢູ່ໃນ ຕາຕະລາງ 10-3.

ຕາຕະລາງ 10-3. Port B Pins ຟັງຊັນສຳຮອງ

Port Pin ຟັງຊັນສຳຮອງ
PB5

ຣີເຊັດ: ຣີເຊັດ PIN

dW: debugWIRE I/O ADC0: ADC Input Channel 0

PCINT5: Pin Change Interrupt, Source 5

PB4 XTAL2: Crystal Oscillator Output CLKO: System Clock Output ADC2: ADC Input Channel 2

OC1B: Timer/Counter1 ປຽບທຽບການຈັບຄູ່ B ຜົນອອກມາ PCINT4: Pin Change Interrupt 0, Source 4

PB3 XTAL1: Crystal Oscillator Input CLKI: ການປ້ອນຂໍ້ມູນໂມງພາຍນອກ ADC3: ADC Input Channel 3

OC1B: Complementary Timer/Counter1 Compare Match B Output PCINT3: Pin Change Interrupt 0, Source 3

PB2 SCK: Serial Clock Input ADC1: ADC Input Channel 1

T0: ໂມງຈັບເວລາ/Counter0 ທີ່ມາຂອງໂມງ USCK: USI Clock (Three Wire Mode) SCL : USI Clock (Two Wire Mode) INT0: External Interrupt 0 Input PCINT2: Pin Change Interrupt 0, Source 2

PB1 MISO: SPI Master Data Input / Slave Data Output AIN1: Analog Comparator, Negative Input OC0B: Timer/Counter0 Compare Match B Output OC1A: Timer/Counter1 Compare Match A Output DO: USI Data Output (Three Wire Mode) PCINT1:Pin Change Interrupt 0, ແຫຼ່ງຂໍ້ມູນ 1
PB0 MOSI:: SPI Master Data Output / Slave Data Input AIN0: ຕົວປຽບທຽບອະນາລັອກ, ການປ້ອນຂໍ້ມູນທາງບວກ

OC0A: ຈັບເວລາ/Counter0 ປຽບທຽບຜົນອອກມາຂອງ Match A

OC1A: Complementary Timer/Counter1 Compare Match A Output DI: USI Data Input (Three Wire Mode)

SDA: USI Data Input (Two Wire Mode) AREF: External Analog Reference PCINT0: Pin Change Interrupt 0, Source 0

ພອດ B, ບິດ 5 – ຣີເຊັດ/dW/ADC0/PCINT5

ຣີເຊັດ: ວັດສະດຸປ້ອນຣີເຊັດພາຍນອກແມ່ນເຮັດວຽກຕໍ່າ ແລະເປີດໃຊ້ງານໂດຍ unprogramming (“1”) RSTDISBL Fuse. Pullup ຖືກເປີດໃຊ້ງານ ແລະໄດເວີການສົ່ງອອກ ແລະອິນພຸດດິຈິຕອລຖືກປິດໃຊ້ງານ ເມື່ອເຂັມຖືກໃຊ້ເປັນ PIN RESET.

dW: ເມື່ອ debugWIRE Enable (DWEN) Fuse ຖືກຕັ້ງໂປຣແກມ ແລະ Lock bits ບໍ່ໄດ້ຕັ້ງໂປຣແກຣມ, ລະບົບ debugWIRE ພາຍໃນອຸປະກອນເປົ້າໝາຍຈະຖືກເປີດໃຊ້. ຮູສຽບພອດ RESET ໄດ້ຖືກຕັ້ງຄ່າເປັນສາຍ I/O ສອງທິດທາງສອງທິດທາງ ແລະ ກາຍເປັນປະຕູການສື່ສານລະຫວ່າງເປົ້າໝາຍ ແລະ ຕົວຈຳລອງ.

ADC0: ອະນາລັອກເປັນຕົວແປງດິຈິຕອນ, ຊ່ອງ 0.

PCINT5: Pin Change Interrupt source 5.

ພອດ B, ບິດ 4 – XTAL2/CLKO/ADC2/OC1B/PCINT4

XTAL2: Chip Clock Oscillator pin 2. ໃຊ້ເປັນເຂັມໂມງສຳລັບທຸກແຫຼ່ງໂມງຂອງຊິບ ຍົກເວັ້ນເຄື່ອງ RC Oscillator calibrateble ພາຍໃນ ແລະໂມງພາຍນອກ. ເມື່ອໃຊ້ເປັນເຂັມໂມງ, PIN ບໍ່ສາມາດໃຊ້ເປັນເຂັມ I/O ໄດ້. ເມື່ອໃຊ້ RC Oscillator ທີ່ສາມາດປັບໄດ້ພາຍໃນ ຫຼືໂມງພາຍນອກເປັນແຫຼ່ງຂອງໂມງ Chip, PB4 ໃຊ້ເປັນ PIN I/O ທຳມະດາ.

CLKO: ໂມງລະບົບທີ່ອຸທິດໃຫ້ສາມາດອອກໄດ້ໃນ PIN PB4. ໂມງລະບົບທີ່ແບ່ງອອກຈະເປັນຜົນອອກຖ້າ CKOUT Fuse ຖືກຕັ້ງໂຄງການ, ໂດຍບໍ່ຄໍານຶງເຖິງການຕັ້ງຄ່າ PORTB4 ແລະ DDB4. ມັນຍັງຈະເປັນຜົນຜະລິດໃນລະຫວ່າງການຕັ້ງ.

ADC2: ອະນາລັອກເປັນຕົວແປງດິຈິຕອນ, ຊ່ອງ 2.

OC1B: Output Compare Match output: pin PB4 ສາມາດຮັບໃຊ້ເປັນ output ພາຍນອກສໍາລັບ Timer/Counter1 Compare Match B ເມື່ອຕັ້ງຄ່າເປັນ output (ຊຸດ DDB4). PIN OC1B ຍັງເປັນຂາອອກສໍາລັບຟັງຊັນຈັບເວລາຂອງໂໝດ PWM.

PCINT4: Pin Change Interrupt source 4.

ພອດ B, ບິດ 3 – XTAL1/CLKI/ADC3/OC1B/PCINT3

XTAL1: Chip Clock Oscillator pin 1. ໃຊ້ສຳລັບທຸກແຫຼ່ງຊິບໂມງ ຍົກເວັ້ນ RC oscillator calibrateble ພາຍໃນ. ເມື່ອໃຊ້ເປັນເຂັມໂມງ, PIN ບໍ່ສາມາດໃຊ້ເປັນເຂັມ I/O ໄດ້.

CLKI: ການປ້ອນຂໍ້ມູນໂມງຈາກແຫຼ່ງໂມງພາຍນອກ, ເບິ່ງ “ໂມງພາຍນອກ” ໃນໜ້າ 26.

ADC3: ອະນາລັອກເປັນຕົວແປງດິຈິຕອນ, ຊ່ອງ 3.

OC1B: Inverted Output Compare Match output: PB3 pin ສາມາດຮັບໃຊ້ເປັນຜົນຜະລິດພາຍນອກສໍາລັບ Timer/Counter1 Compare Match B ເມື່ອຕັ້ງຄ່າເປັນຜົນຜະລິດ (ຊຸດ DDB3). PIN OC1B ຍັງເປັນ pin ຂາອອກທີ່ປີ້ນກັບຟັງຊັນຈັບເວລາຂອງໂໝດ PWM.

PCINT3: Pin Change Interrupt source 3.

ພອດ B, ບິດ 2 – SCK/ADC1/T0/USCK/SCL/INT0/PCINT2

SCK: ການປ້ອນຂໍ້ມູນຂອງໂມງຕົ້ນສະບັບ, ເຂັມເຂົ້າໂມງສໍາລອງສຳລັບຊ່ອງ SPI. ເມື່ອ SPI ຖືກເປີດໃຊ້ເປັນ Slave, PIN ນີ້ຖືກຕັ້ງຄ່າເປັນວັດສະດຸປ້ອນໂດຍບໍ່ຄໍານຶງເຖິງການຕັ້ງຄ່າຂອງ DDB2. ເມື່ອ SPI ຖືກເປີດໃຊ້ເປັນ Master, ທິດທາງຂໍ້ມູນຂອງ PIN ນີ້ຖືກຄວບຄຸມໂດຍ DDPB2. ເມື່ອ PIN ​​ຖືກບັງຄັບໂດຍ SPI ເພື່ອເປັນວັດສະດຸປ້ອນ, ການດຶງຂຶ້ນຍັງສາມາດຄວບຄຸມໄດ້ໂດຍບິດ PORTB2.

ADC1: ອະນາລັອກເປັນຕົວແປງດິຈິຕອນ, ຊ່ອງ 1.

T0: Timer/Counter0 counter source.

USCK: ໂໝດສາມສາຍ Universal Serial Interface ໂມງ.

SCL: ໂຫມດສອງສາຍ Serial Clock ສໍາລັບ USI ໂຫມດສອງສາຍ.

INT0: ແຫຼ່ງ Interrupt ພາຍນອກ 0.

PCINT2: Pin Change Interrupt source 2.

ພອດ B, ບິດ 1 – MISO/AIN1/OC0B/OC1A/DO/PCINT1

MISO: Master Data input, Slave Data output pin ສໍາລັບຊ່ອງ SPI. ເມື່ອ SPI ຖືກເປີດໃຊ້ເປັນແມ່ບົດ, PIN ນີ້ຈະຖືກຕັ້ງຄ່າເປັນວັດສະດຸປ້ອນໂດຍບໍ່ຄໍານຶງເຖິງການຕັ້ງຄ່າຂອງ DDB1. ເມື່ອ SPI ຖືກເປີດໃຊ້ເປັນ Slave, ທິດທາງຂໍ້ມູນຂອງ PIN ນີ້ຖືກຄວບຄຸມໂດຍ DDB1. ເມື່ອ pin ຖືກບັງຄັບໂດຍ SPI ເພື່ອເປັນວັດສະດຸປ້ອນ, ການດຶງຂຶ້ນຍັງສາມາດຄວບຄຸມໄດ້ໂດຍ PORTB1 bit.

AIN1: ການປ້ອນຂໍ້ມູນທາງລົບຂອງຕົວປຽບທຽບອະນາລັອກ. ກຳນົດຄ່າພອດພອດເປັນການປ້ອນຂໍ້ມູນດ້ວຍການປິດການດຶງຂຶ້ນພາຍໃນເພື່ອຫຼີກເວັ້ນການຟັງຊັນພອດດິຈິຕອລຈາກການລົບກວນການເຮັດວຽກຂອງຕົວປຽບທຽບອະນາລັອກ.

OC0B: Output ປຽບທຽບຜົນຜະລິດທີ່ກົງກັນ. PIN PB1 ສາມາດຮັບໃຊ້ເປັນຜົນຜະລິດພາຍນອກສໍາລັບ Timer/Counter0 Compare Match B. ເຂັມ PB1 ຕ້ອງໄດ້ຮັບການຕັ້ງຄ່າເປັນຜົນຜະລິດ (ຊຸດ DDB1 (ຫນຶ່ງ)) ເພື່ອຮັບໃຊ້ຫນ້າທີ່ນີ້. PIN OC0B ຍັງເປັນຂາອອກສໍາລັບຟັງຊັນຈັບເວລາຂອງໂໝດ PWM.

OC1A: Output Compare Match output: pin PB1 ສາມາດຮັບໃຊ້ເປັນ output ພາຍນອກສໍາລັບ Timer/Counter1 Compare Match B ເມື່ອຕັ້ງຄ່າເປັນ output (ຊຸດ DDB1). PIN OC1A ຍັງເປັນຂາອອກສຳລັບຟັງຊັນຈັບເວລາຂອງໂໝດ PWM.

ເຮັດ: ຮູບແບບສາມສາຍ Universal Serial Interface ຜົນຜະລິດຂໍ້ມູນ. ໂຫມດສາມສາຍຜົນຜະລິດຂໍ້ມູນ overrides ຄ່າ PORTB1 ແລະມັນຖືກຂັບເຄື່ອນໄປຫາພອດເມື່ອບິດທິດທາງຂໍ້ມູນ DDB1 ຖືກກໍານົດ (ຫນຶ່ງ). PORTB1 ຍັງຄົງເປີດໃຊ້ການດຶງຂຶ້ນ, ຖ້າທິດທາງຖືກປ້ອນແລະ PORTB1 ຖືກຕັ້ງ (ຫນຶ່ງ).

PCINT1: Pin Change Interrupt source 1.

ພອດ B, ບິດ 0 – MOSI/AIN0/OC0A/OC1A/DI/SDA/AREF/PCINT0

MOSI: SPI Master Data output, Slave Data input ສໍາລັບຊ່ອງ SPI. ເມື່ອ SPI ຖືກເປີດໃຊ້ເປັນ Slave, PIN ນີ້ຖືກຕັ້ງຄ່າເປັນ input ໂດຍບໍ່ຄໍານຶງເຖິງການຕັ້ງຄ່າຂອງ DDB0. ເມື່ອ SPI ຖືກເປີດໃຊ້ເປັນ Master, ທິດທາງຂໍ້ມູນຂອງ PIN ນີ້ຖືກຄວບຄຸມໂດຍ DDB0. ເມື່ອ pin ຖືກບັງຄັບໂດຍ SPI ເພື່ອເປັນວັດສະດຸປ້ອນ, ການດຶງຂຶ້ນຍັງສາມາດຄວບຄຸມໄດ້ໂດຍບິດ PORTB0.

AIN0: ການປ້ອນຂໍ້ມູນທາງບວກຂອງຕົວປຽບທຽບອະນາລັອກ. ກຳນົດຄ່າພອດພອດເປັນການປ້ອນຂໍ້ມູນດ້ວຍການປິດການດຶງຂຶ້ນພາຍໃນເພື່ອຫຼີກເວັ້ນການຟັງຊັນພອດດິຈິຕອລຈາກການລົບກວນການເຮັດວຽກຂອງຕົວປຽບທຽບອະນາລັອກ.

OC0A: Output ປຽບທຽບຜົນຜະລິດທີ່ກົງກັນ. PB0 pin ສາມາດຮັບໃຊ້ເປັນຜົນຜະລິດພາຍນອກສໍາລັບ Timer/Counter0 Compare Match A ເມື່ອຖືກຕັ້ງຄ່າເປັນຜົນຜະລິດ (ຊຸດ DDB0 (ຫນຶ່ງ)). PIN OC0A ຍັງເປັນຂາອອກສໍາລັບຟັງຊັນຈັບເວລາຂອງໂໝດ PWM.

OC1A: Inverted Output Compare Match output: PB0 pin ສາມາດຮັບໃຊ້ເປັນ output ພາຍນອກສໍາລັບ Timer/Counter1 Compare Match B ເມື່ອຕັ້ງຄ່າເປັນ output (ຊຸດ DDB0). PIN OC1A ຍັງເປັນຂາອອກທີ່ປີ້ນກັບສໍາລັບຟັງຊັນຈັບເວລາຂອງໂໝດ PWM.

SDA: ຮູບແບບສອງສາຍ Serial Interface Data.

AREF: ເອກະສານອ້າງອີງພາຍນອກສໍາລັບ ADC. Pullup ແລະ output driver ຖືກປິດໃຊ້ງານຢູ່ໃນ PB0 ເມື່ອ pin ຖືກນໍາໃຊ້ເປັນການອ້າງອີງພາຍນອກຫຼືພາຍໃນ Vol.tage ການອ້າງອີງກັບຕົວເກັບປະຈຸພາຍນອກຢູ່ pin AREF.

DI: ການປ້ອນຂໍ້ມູນໃນໂໝດສາມສາຍ USI. USI ໂຫມດສາມສາຍບໍ່ override ຟັງຊັນພອດປົກກະຕິ, ດັ່ງນັ້ນ pin ຕ້ອງໄດ້ຮັບການ configure ເປັນ input ສໍາລັບຟັງຊັນ DI.

PCINT0: Pin Change Interrupt source 0.

ຕາຕະລາງ 10-4 ແລະ ຕາຕະລາງ 10-5 ກ່ຽວຂ້ອງກັບຫນ້າທີ່ສະຫຼັບຂອງ Port B ກັບສັນຍານ overriding ທີ່ສະແດງຢູ່ໃນ ຮູບ 10-5 ສຸດ ໜ້າ 58.

ຕາຕະລາງ 10-4. Overriding ສັນຍານສໍາລັບຟັງຊັນທາງເລືອກໃນ PB[5:3]

ຊື່ສັນຍານ PB5/Reset/ADC0/PCINT5 PB4/ADC2/XTAL2/ OC1B/PCINT4 PB3/ADC3/XTAL1/ OC1B/PCINT3
PUOE

RTDISBL(1) • DWEN(1)

0 0
PUOV 1 0 0
DDOE RTDISBL(1) • DWEN(1) 0 0
DDOV debugWire Transmit 0 0
PVOE 0 OC1B ເປີດໃຊ້

OC1B ເປີດໃຊ້

PVOV 0 OC1B OC1B
PTOE 0 0 0
DIEOE

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

PCINT4 • PCIE + ADC2D PCINT3 • PCIE + ADC3D
DIEOV ADC0D ADC2D ADC3D
DI ວັດສະດຸປ້ອນ PCINT5 ວັດສະດຸປ້ອນ PCINT4 ວັດສະດຸປ້ອນ PCINT3
AIO ຕັ້ງຄ່າການປ້ອນຂໍ້ມູນຄືນໃໝ່, ADC0 Input ການປ້ອນຂໍ້ມູນ ADC2 ການປ້ອນຂໍ້ມູນ ADC3

ໝາຍເຫດ: ເມື່ອ Fuse ເປັນ “0” (ຕັ້ງໂຄງການ).

ຕາຕະລາງ 10-5. Overriding ສັນຍານສໍາລັບຟັງຊັນທາງເລືອກໃນ 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
PUOV 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
DIEOE PCINT2 • PCIE + ADC1D + USISIE PCINT1 • PCIE + AIN1D PCINT0 • PCIE + AIN0D + USISIE
DIEOV 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 BODSE 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

Bit 6 – PUD: Pull-up Disable

ເມື່ອບິດນີ້ຖືກຂຽນໃສ່ອັນໜຶ່ງ, ການດຶງຂຶ້ນໃນພອດ I/O ຈະຖືກປິດໃຊ້ງານ ເຖິງແມ່ນວ່າການລົງທະບຽນ DDxn ແລະ PORTxn ຈະຖືກຕັ້ງຄ່າເພື່ອໃຫ້ສາມາດດຶງຂຶ້ນໄດ້ ({DDxn, PORTxn} = 0b01). ເບິ່ງ “ການກຳນົດຄ່າ Pin” ໃນໜ້າ 54 ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມກ່ຽວກັບຄຸນສົມບັດນີ້.

PORTB – Port B ລົງທະບຽນຂໍ້ມູນ

ບິດ 7 6 5 4 3 2 1 0
0x18 PORTB5 PORTB4 PORTB3 PORTB2 PORTB1 PORTB0 PORTB
ອ່ານ/ຂຽນ R R R/W R/W R/W R/W R/W R/W
ຄ່າເລີ່ມຕົ້ນ 0 0 0 0 0 0 0 0

DDRB – Port B Data Direction Register

ບິດ 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 – Port B Input Pins ທີ່ຢູ່

ບິດ 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 ບໍ່ມີ ບໍ່ມີ ບໍ່ມີ ບໍ່ມີ ບໍ່ມີ ບໍ່ມີ

8-bit Timer/Counter0 ກັບ PWM

ຄຸນສົມບັດ

ສອງຜົນຜະລິດເອກະລາດປຽບທຽບຫນ່ວຍ

Double Buffered Output ປຽບທຽບການລົງທະບຽນ

ລຶບລ້າງໂມງຈັບເວລາເມື່ອປຽບທຽບການຈັບຄູ່ (ໂຫຼດຄືນໃໝ່ອັດຕະໂນມັດ)

Glitch Free, Phase Correct Pulse Width Modulator (PWM)

ໄລຍະເວລາ PWM ປ່ຽນແປງ

ໂດຍທົ່ວໄປຄວາມຖີ່

ສາມແຫຼ່ງລົບກວນເອກະລາດ (TOV0, OCF0A, ແລະ OCF0B)

ເກີນview

Timer/Counter0 ເປັນໂມດູນ Timer/Counter 8-bit ທີ່ມີຈຸດປະສົງທົ່ວໄປ, ມີສອງໜ່ວຍປຽບທຽບຜົນໄດ້ຮັບທີ່ເປັນເອກະລາດ, ແລະຮອງຮັບ PWM. ມັນອະນຸຍາດໃຫ້ກໍານົດເວລາການປະຕິບັດໂຄງການທີ່ຖືກຕ້ອງ (ການຈັດການເຫດການ) ແລະການສ້າງຄື້ນ.

ແຜນວາດບລັອກແບບງ່າຍດາຍຂອງເຄື່ອງຈັບເວລາ/ຕົວນັບ 8-ບິດ ແມ່ນສະແດງຢູ່ໃນ ຮູບທີ 11-1. ສໍາລັບການຈັດວາງຕົວຈິງຂອງ I/O pins, ເບິ່ງ “Pinout ATtiny25/45/85” ໃນໜ້າ 2. CPU ທີ່ສາມາດເຂົ້າເຖິງ I/O Registers, ລວມທັງ I/O bits ແລະ I/O pins, ແມ່ນສະແດງເປັນຕົວໜາ. ການລົງທະບຽນ I/O ສະເພາະອຸປະກອນ ແລະສະຖານທີ່ບິດແມ່ນຖືກລະບຸໄວ້ໃນ “ລາຍລະອຽດການລົງທະບຽນ” ຢູ່ໜ້າ 77.

ຕົວຈັບເວລາ/ຕົວນັບ (TCNT0) ແລະ Output Compare Registers (OCR0A ແລະ OCR0B) ແມ່ນການລົງທະບຽນ 8-bit. ສັນຍານການຮ້ອງຂໍຂັດຂວາງ (ຫຍໍ້ເປັນ Int.Req. ໃນຮູບ) ສັນຍານທັງຫມົດແມ່ນເຫັນໄດ້ຢູ່ໃນການລົງທະບຽນ Timer Interrupt Flag Register (TIFR). ການລົບກວນທັງໝົດແມ່ນຖືກປິດບັງເປັນສ່ວນບຸກຄົນດ້ວຍການລົງທະບຽນ Timer Interrupt Mask Register (TIMSK). TIFR ແລະ TIMSK ບໍ່ໄດ້ສະແດງຢູ່ໃນຮູບ.

ໂມງຈັບເວລາ/ຕົວນັບສາມາດຕັ້ງໂມງພາຍໃນ, ຜ່ານຕົວປັບຂະໜາດລ່ວງໜ້າ, ຫຼືໂດຍແຫຼ່ງໂມງພາຍນອກເທິງເຂັມ T0. The Clock Select logic blocks controls which the clock source and edge the Timer/Counter ໃຊ້ເພື່ອເພີ່ມ (ຫຼືຫຼຸດລົງ) ຄ່າຂອງມັນ. ໂມງນັບຖອຍຫຼັງ/ຕົວນັບບໍ່ເຄື່ອນໄຫວເມື່ອບໍ່ໄດ້ເລືອກແຫຼ່ງໂມງ. ຜົນ​ຜະ​ລິດ​ຈາກ​ເຫດ​ຜົນ​ການ​ເລືອກ​ໂມງ​ແມ່ນ​ຫມາຍ​ເຖິງ​ເປັນ​ໂມງ​ຈັບ​ເວ​ລາ (clkT0​)​.

ອັດຕາຜົນຕອບແທນທີ່ມີ buffered ສອງເທົ່າ Compare Registers (OCR0A ແລະ OCR0B) ຖືກປຽບທຽບກັບຄ່າ Timer/Counter ຕະຫຼອດເວລາ. ຜົນໄດ້ຮັບຂອງການປຽບທຽບສາມາດຖືກນໍາໃຊ້ໂດຍ Waveform Generator ເພື່ອສ້າງ PWM ຫຼືຜົນຜະລິດຄວາມຖີ່ຕົວແປໃນ Output Compare pins (OC0A ແລະ OC0B). ເບິ່ງ “ຫົວໜ່ວຍປຽບທຽບຜົນຜະລິດ” ໃນໜ້າ 69. ສໍາລັບລາຍລະອຽດ. ເຫດການ Compare Match ຍັງຈະຕັ້ງ Compare Flag (OCF0A ຫຼື OCF0B) ເຊິ່ງສາມາດໃຊ້ເພື່ອສ້າງ Output Compare interrupt request.

ຄໍານິຍາມ

ຫຼາຍໆການລົງທະບຽນແລະການອ້າງອິງ bit ໃນພາກນີ້ແມ່ນຂຽນໃນຮູບແບບທົ່ວໄປ. ຕົວພິມນ້ອຍ “n” ແທນຕົວເລກ Timer/Counter, ໃນກໍລະນີນີ້ 0. ຕົວພິມນ້ອຍ “x” ແທນທີ່ Output Compare Unit, ໃນກໍລະນີນີ້ Compare Unit A ຫຼື Compare Unit B. ແນວໃດກໍ່ຕາມ, ເມື່ອໃຊ້ register ຫຼື bit ກຳນົດ. ໃນໂຄງການ, ຮູບແບບທີ່ຊັດເຈນຕ້ອງຖືກນໍາໃຊ້, ie, TCNT0 ສໍາລັບການເຂົ້າເຖິງ Timer / Counter0 counter value ແລະອື່ນໆ.

ຄໍານິຍາມໃນ ຕາຕະລາງ 11-1 ຍັງຖືກນໍາໃຊ້ຢ່າງກວ້າງຂວາງໃນທົ່ວເອກະສານ.

ຕາຕະລາງ 11-1. ຄໍານິຍາມ

ຄົງທີ່ ລາຍລະອຽດ
ລຸ່ມ ເຄົາເຕີໄປຮອດ BOTTOM ເມື່ອມັນກາຍເປັນ 0x00
MAX ໂຕນັບບັນລຸສູງສຸດຂອງມັນເມື່ອມັນກາຍເປັນ 0xFF (ທົດສະນິຍົມ 255)
ເທິງ ຕົວນັບໄປຮອດ TOP ເມື່ອມັນກາຍເປັນມູນຄ່າສູງສຸດໃນລໍາດັບນັບ. ຄ່າ TOP ສາມາດຖືກກຳນົດໃຫ້ເປັນຄ່າຄົງທີ່ 0xFF (MAX) ຫຼືຄ່າທີ່ເກັບໄວ້ໃນ OCR0A Register. ການມອບຫມາຍແມ່ນຂຶ້ນກັບຮູບແບບຂອງການດໍາເນີນງານ

ແຫຼ່ງຈັບເວລາ/ຕົວນັບແບບ Prescaler ແລະໂມງ

ໂມງນັບຖອຍຫຼັງ/ໂມງນັບຖອຍຫຼັງສາມາດໂມງໄດ້ໂດຍແຫຼ່ງໂມງພາຍໃນ ຫຼືພາຍນອກ. ແຫຼ່ງໂມງຖືກເລືອກໂດຍເຫດຜົນ Clock Select ເຊິ່ງຖືກຄວບຄຸມໂດຍ Clock Select (c) bits ທີ່ຕັ້ງຢູ່ໃນ Timer/Counter0 Control Register (TCCR0B).

ແຫຼ່ງໂມງພາຍໃນດ້ວຍ Prescaler

ໂມງຈັບເວລາ / Counter0 ສາມາດໂມງໂດຍກົງໂດຍໂມງລະບົບ (ໂດຍການຕັ້ງຄ່າ CS0[2:0] = 1). ອັນນີ້ໃຫ້ການເຮັດວຽກທີ່ໄວທີ່ສຸດ, ມີຄວາມຖີ່ໂມງຈັບເວລາສູງສຸດ/ເຄື່ອງນັບເວລາເທົ່າກັບຄວາມຖີ່ໂມງລະບົບ (fCLK_I/O). ອີກທາງເລືອກ, ຫນຶ່ງໃນສີ່ taps ຈາກ prescaler ສາມາດຖືກນໍາໃຊ້ເປັນແຫຼ່ງໂມງ. ໂມງທີ່ກຳນົດໄວ້ລ່ວງໜ້າມີຄວາມຖີ່ຂອງອັນໃດນຶ່ງ

ຣີເຊັດຕົວຂະຫຍາຍກ່ອນ

prescaler ແມ່ນແລ່ນຟຣີ, ie ມັນດໍາເນີນການເປັນເອກະລາດຂອງ Clock Select ຕາມເຫດຜົນຂອງ Timer / Counter0. ເນື່ອງຈາກ prescaler ບໍ່ໄດ້ຮັບຜົນກະທົບໂດຍການເລືອກໂມງຈັບເວລາ / counter, ສະຖານະຂອງ prescaler ຈະມີຜົນກະທົບກັບສະຖານະການທີ່ໂມງ prescaled ໄດ້ຖືກນໍາໃຊ້. ຫນຶ່ງ example of a prescaling artifact is when the timer/counter is enabled and clocked by prescaling artifact (6 > CS0[2:0] > 1). ຈຳນວນຮອບວຽນໂມງຂອງລະບົບຈາກເວລາທີ່ເຄື່ອງຈັບເວລາເປີດໃຫ້ນັບຄັ້ງທຳອິດເກີດຂຶ້ນສາມາດຕັ້ງແຕ່ 1 ເຖິງ N+1 ຮອບວຽນໂມງລະບົບ, ເຊິ່ງ N ເທົ່າກັບຕົວຫານກ່ອນຂະໜາດ (8, 64, 256, ຫຼື 1024).

ມັນເປັນໄປໄດ້ທີ່ຈະໃຊ້ Prescaler Reset ສໍາລັບ synchronizing Timer / Counter ເພື່ອປະຕິບັດໂຄງການ.

ແຫລ່ງໂມງພາຍນອກ

ແຫຼ່ງໂມງພາຍນອກທີ່ໃຊ້ກັບເຂັມ T0 ສາມາດໃຊ້ເປັນໂມງຈັບເວລາ/ໂມງນັບຖອຍຫຼັງ (clkT0). T0 pin ແມ່ນ sampນໍາພາທຸກໆຮອບວຽນໂມງຂອງລະບົບໂດຍເຫດຜົນການ synchronization PIN. ການ​ຊິງ​ຄ໌ (sampled) ສັນຍານຫຼັງຈາກນັ້ນ

ຜ່ານເຄື່ອງກວດຈັບຂອບ. ຮູບທີ 11-2 ສະ​ແດງ​ໃຫ້​ເຫັນ​ແຜນ​ວາດ​ການ​ທຽບ​ເທົ່າ​ທີ່​ເປັນ​ປະ​ໂຫຍດ​ຂອງ T0 synchronization ແລະ​ເຫດ​ຜົນ​ເຄື່ອງ​ກວດ​ຈັບ​ແຂບ​. ການລົງທະບຽນແມ່ນໂມງຢູ່ທີ່ຂອບບວກຂອງໂມງລະບົບພາຍໃນ (clkI/O). latch ແມ່ນໂປ່ງໃສໃນໄລຍະເວລາສູງຂອງໂມງລະບົບພາຍໃນ.

ເຄື່ອງກວດຈັບຂອບສ້າງຫນຶ່ງ clkT0 pulse ສໍາລັບແຕ່ລະບວກ (CS0[2:0] = 7) ຫຼືລົບ (CS0[2:0] = 6) edge ມັນກວດພົບ.

ການລົງທະບຽນ OCR0x ແມ່ນ buffed ສອງເທົ່າເມື່ອໃຊ້ໂໝດ Pulse Width Modulation (PWM). ສໍາລັບໂໝດການຈັບເວລາແບບປົກກະຕິ ແລະ Clear Timer on Compare (CTC), ບັຟເຟີສອງເທົ່າຖືກປິດໃຊ້ງານ. Double buffering synchronizes ການປັບປຸງຂອງ OCR0x Compare Registers ໄປທາງເທິງຫຼືລຸ່ມຂອງລໍາດັບການນັບ. synchronization ປ້ອງກັນການປະກົດຕົວຂອງກໍາມະຈອນ PWM ຄວາມຍາວຄີກ, ບໍ່ສົມມາຕຣິກເບື້ອງ, ດັ່ງນັ້ນຈຶ່ງເຮັດໃຫ້ຜົນຜະລິດ glitch ຟຣີ.

ການເຂົ້າເຖິງການລົງທະບຽນ OCR0x ອາດຈະເບິ່ງຄືວ່າສັບສົນ, ແຕ່ນີ້ບໍ່ແມ່ນກໍລະນີ. ເມື່ອ buffering ຄູ່ຖືກເປີດໃຊ້, CPU ມີການເຂົ້າເຖິງ OCR0x Buffer Register, ແລະຖ້າ double buffering ຖືກປິດໃຊ້ງານ CPU ຈະເຂົ້າເຖິງ OCR0x ໂດຍກົງ.

ບັງຄັບໃຫ້ຜົນຜະລິດປຽບທຽບ

ໃນໂຫມດການຜະລິດຮູບແບບຄື້ນທີ່ບໍ່ແມ່ນ PWM, ຜົນຜະລິດທີ່ກົງກັນຂອງຕົວປຽບທຽບສາມາດຖືກບັງຄັບໂດຍການຂຽນຫນຶ່ງໄປຫາ Force Output Compare (FOC0x) bit. Forcing Compare Match ຈະບໍ່ຕັ້ງ OCF0x Flag ຫຼື reload / clear timer, ແຕ່ pin OC0x ຈະຖືກປັບປຸງຄືກັບວ່າມີ Compare Match ທີ່ແທ້ຈິງເກີດຂຶ້ນ (ການຕັ້ງຄ່າ COM0x[1:0] bits ກໍານົດວ່າຈະຕັ້ງ pin OC0x, cleared. ຫຼືສະຫຼັບ).

ປຽບທຽບການຂັດຂວາງການຈັບຄູ່ໂດຍ TCNT0 ຂຽນ

ການປະຕິບັດການຂຽນ CPU ທັງໝົດໃສ່ TCNT0 Register ຈະປິດກັ້ນການປຽບທຽບການຈັບຄູ່ໃດໆກໍຕາມທີ່ເກີດຂຶ້ນໃນຮອບວຽນໂມງຈັບເວລາຕໍ່ໄປ, ເຖິງແມ່ນວ່າເວລາປິດໂມງຈັບເວລາ. ຄຸນສົມບັດນີ້ອະນຸຍາດໃຫ້ OCR0x ເລີ່ມຕົ້ນເປັນຄ່າດຽວກັນກັບ TCNT0 ໂດຍບໍ່ມີການກະຕຸ້ນການລົບກວນໃນເວລາທີ່ໂມງຈັບເວລາ / Counter ເປີດ.

ການໃຊ້ Output Compare Unit

ນັບຕັ້ງແຕ່ການຂຽນ TCNT0 ໃນທຸກຮູບແບບການດໍາເນີນການຈະຂັດຂວາງການປຽບທຽບການຈັບຄູ່ທັງຫມົດສໍາລັບວົງຈອນໂມງຈັບເວລາຫນຶ່ງ, ມີຄວາມສ່ຽງທີ່ກ່ຽວຂ້ອງກັບການປ່ຽນແປງ TCNT0 ເມື່ອນໍາໃຊ້ Output Compare Unit, ບໍ່ຂຶ້ນກັບວ່າ Timer / Counter ກໍາລັງເຮັດວຽກຫຼືບໍ່. ຖ້າຄ່າທີ່ຂຽນໃສ່ TCNT0 ເທົ່າກັບຄ່າ OCR0x, Compare Match ຈະຖືກພາດ, ສົ່ງຜົນໃຫ້ການສ້າງຮູບແບບຄື້ນບໍ່ຖືກຕ້ອງ. ເຊັ່ນດຽວກັນ, ຢ່າຂຽນຄ່າ TCNT0 ເທົ່າກັບ BOTTOM ເມື່ອຕົວນັບນັບລົງ.

ການຕິດຕັ້ງ OC0x ຄວນຖືກປະຕິບັດກ່ອນທີ່ຈະຕັ້ງການລົງທະບຽນທິດທາງຂໍ້ມູນສໍາລັບ PIN ຂອງພອດເພື່ອຜົນຜະລິດ. ວິທີທີ່ງ່າຍທີ່ສຸດໃນການຕັ້ງຄ່າ OC0x ແມ່ນການໃຊ້ Force Output Compare (FOC0x) strobe bits ໃນໂໝດປົກກະຕິ. OC0x Registers ຮັກສາຄຸນຄ່າຂອງເຂົາເຈົ້າເຖິງແມ່ນວ່າໃນເວລາທີ່ມີການປ່ຽນແປງລະຫວ່າງຮູບແບບການຜະລິດ Waveform.

ຈົ່ງຈື່ໄວ້ວ່າ COM0x[1:0] bits ບໍ່ໄດ້ຖືກ buffed double ພ້ອມກັບຄ່າປຽບທຽບ. ການປ່ຽນບິດ COM0x[1:0] ຈະມີຜົນທັນທີ.

ປຽບທຽບຫົວໜ່ວຍຜົນຜະລິດທີ່ກົງກັນ

ຮູບແບບການປຽບທຽບຜົນຜະລິດ (COM0x[1:0]) ບິດມີສອງຟັງຊັນ. ເຄື່ອງສ້າງ Waveform ໃຊ້ COM0x[1:0] bits ເພື່ອກໍານົດສະຖານະ Output Compare (OC0x) ຢູ່ທີ່ Compare Match ຕໍ່ໄປ. ນອກຈາກນີ້, COM0x[1:0] bits ຄວບຄຸມແຫຼ່ງຜົນຜະລິດ pin OC0x. ຮູບທີ 11-6 ສະ​ແດງ​ໃຫ້​ເຫັນ schematic ງ່າຍ​ດາຍ​ຂອງ​ເຫດ​ຜົນ​ທີ່​ໄດ້​ຮັບ​ຜົນ​ກະ​ທົບ​ໂດຍ​ການ​ຕັ້ງ​ຄ່າ COM0x[1:0] bit. I/O Registers, I/O bits, ແລະ I/O pins ໃນຮູບແມ່ນສະແດງເປັນຕົວໜາ. ພຽງແຕ່ພາກສ່ວນຂອງ I/O Port Control Registers ທົ່ວໄປ (DDR ແລະ PORT) ທີ່ໄດ້ຮັບຜົນກະທົບຈາກ COM0x[1:0] bits ໄດ້ຖືກສະແດງ. ເມື່ອອ້າງອີງເຖິງສະຖານະ OC0x, ການອ້າງອີງແມ່ນສໍາລັບການລົງທະບຽນ OC0x ພາຍໃນ, ບໍ່ແມ່ນ OC0x pin. ຖ້າການຣີເຊັດລະບົບເກີດຂຶ້ນ, ການລົງທະບຽນ OC0x ຈະຖືກຣີເຊັດເປັນ “0”.

ເມື່ອ OC0A/OC0B ເຊື່ອມຕໍ່ກັບ PIN 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 ໃນ Compare Match

ຕາຕະລາງ 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 ໃນ Compare Match, ຕັ້ງ OC0A/OC0B ຢູ່ BOTTOM (ໂໝດບໍ່ປີ້ນ)
1 1 ຕັ້ງ OC0A/OC0B ໃນ Compare Match, ລຶບ OC0A/OC0B ຢູ່ BOTTOM (ໂໝດປີ້ນ)

ໝາຍເຫດ: ກໍລະນີພິເສດເກີດຂຶ້ນເມື່ອ OCR0A ຫຼື OCR0B ເທົ່າກັບ TOP ແລະ COM0A1/COM0B1 ຖືກຕັ້ງ. ໃນ​ກໍ​ລະ​ນີ​ນີ້​, ການ​ແຂ່ງ​ຂັນ​ຄູ່​ແມ່ນ​ຖືກ​ລະ​ເລີຍ​, ແຕ່​ການ​ກໍາ​ນົດ​ຫຼື​ທີ່​ຈະ​ແຈ້ງ​ແມ່ນ​ເຮັດ​ໄດ້​ຢູ່​ທາງ​ລຸ່ມ​. ເບິ່ງ “ໂໝດ 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 ໃນ Compare Match ເມື່ອນັບລົງ.
1 1 ຕັ້ງ OC0A/OC0B ໃນ Compare Match ເມື່ອນັບຂຶ້ນ. ລຶບລ້າງ OC0A/OC0B ໃນການປຽບທຽບການຈັບຄູ່ເມື່ອນັບລົງ.

ໝາຍເຫດ: 1. ກໍລະນີພິເສດເກີດຂຶ້ນເມື່ອ OCR0A ຫຼື OCR0B ເທົ່າກັບ TOP ແລະ COM0A1/COM0B1 ຖືກຕັ້ງ. ໃນ​ກໍ​ລະ​ນີ​ນີ້​, ການ​ແຂ່ງ​ຂັນ​ຄູ່​ແມ່ນ​ຖືກ​ລະ​ເລີຍ​, ແຕ່​ການ​ກໍາ​ນົດ​ຫຼື​ທີ່​ຈະ​ແຈ້ງ​ແມ່ນ​ເຮັດ​ໄດ້​ຢູ່ TOP​. ເບິ່ງ “ຮູບແບບ PWM ໄລຍະທີ່ຖືກຕ້ອງ” ໃນໜ້າ 74 ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມ.

Bits 3:2 – Res: Reserved Bits

ບິດເຫຼົ່ານີ້ແມ່ນສະຫງວນໄວ້ຢູ່ໃນ ATtiny25/45/85 ແລະຈະອ່ານເປັນສູນສະເໝີ.

Bits 1:0 – WGM0[1:0]: Waveform Generation Mode

ສົມທົບກັບບິດ WGM02 ທີ່ພົບເຫັນຢູ່ໃນທະບຽນ TCCR0B, ບິດເຫຼົ່ານີ້ຄວບຄຸມລໍາດັບການນັບຂອງຕົວນັບ, ແຫຼ່ງທີ່ມາຂອງມູນຄ່າ counter ສູງສຸດ (TOP), ແລະປະເພດຂອງການສ້າງຮູບແບບຄື້ນທີ່ຈະນໍາໃຊ້, ເບິ່ງ. ຕາຕະລາງ 11-5. ໂໝດການໃຊ້ງານທີ່ຮອງຮັບໂດຍໜ່ວຍຈັບເວລາ/ໂຕນັບແມ່ນ: ໂໝດປົກກະຕິ (ເຄື່ອງນັບ), ໂໝດເຄື່ອງຈັບເວລາທີ່ຊັດເຈນໃນໂໝດປຽບທຽບການຈັບຄູ່ (CTC), ແລະສອງປະເພດຂອງໂມດູນຄວາມກວ້າງຂອງ Pulse Width Modulation (PWM) (ເບິ່ງ. "ຮູບແບບການດໍາເນີນງານ" ໃນໜ້າ 71).

ຕາຕະລາງ 11-5. Waveform Generation Mode ລາຍລະອຽດເລັກນ້ອຍ

ໂໝດ WGM 02 WGM 01 WGM 00 ໂຫມດການຈັບເວລາ / Counter ຂອງການດໍາເນີນງານ ເທິງ ອັບເດດ OCRx ຢູ່ ຕັ້ງທຸງ TOV ແລ້ວ
0 0 0 0 ປົກກະຕິ 0xFF ທັນທີ MAX(1)
1 0 0 1 PWM, ໄລຍະທີ່ຖືກຕ້ອງ 0xFF ເທິງ ລຸ່ມ(2)
2 0 1 0 CTC OCRA ທັນທີ MAX(1)
3 0 1 1 PWM ໄວ 0xFF ລຸ່ມ(2) MAX(1)
4 1 0 0 ສະຫງວນໄວ້
5 1 0 1 PWM, ໄລຍະທີ່ຖືກຕ້ອງ OCRA ເທິງ ລຸ່ມ(2)
6 1 1 0 ສະຫງວນໄວ້
7 1 1 1 PWM ໄວ OCRA ລຸ່ມ(2) ເທິງ

Bit 7 – FOC0A: Force Output ປຽບທຽບ A

ບິດ FOC0A ແມ່ນໃຊ້ພຽງແຕ່ເມື່ອບິດ WGM ລະບຸໂຫມດທີ່ບໍ່ແມ່ນ PWM.

ຢ່າງໃດກໍ່ຕາມ, ສໍາລັບການຮັບປະກັນຄວາມເຂົ້າກັນໄດ້ກັບອຸປະກອນໃນອະນາຄົດ, ບິດນີ້ຕ້ອງຖືກຕັ້ງເປັນສູນເມື່ອ TCCR0B ຖືກຂຽນເມື່ອເຮັດວຽກຢູ່ໃນໂຫມດ PWM. ເມື່ອຂຽນຢ່າງມີເຫດຜົນໄປຫາ FOC0A bit, Compare Match ທັນທີຖືກບັງຄັບຢູ່ໃນຫນ່ວຍງານ Waveform Generation. ຜົນຜະລິດ OC0A ຖືກປ່ຽນແປງຕາມການຕັ້ງຄ່າ COM0A[1:0] bits ຂອງມັນ. ໃຫ້ສັງເກດວ່າບິດ FOC0A ຖືກປະຕິບັດເປັນ strobe. ດັ່ງນັ້ນມັນແມ່ນຄ່າທີ່ມີຢູ່ໃນ COM0A[1:0] bits ທີ່ກໍານົດຜົນກະທົບຂອງການປຽບທຽບບັງຄັບ.

A strobe FOC0A ຈະບໍ່ສ້າງການລົບກວນໃດໆ, ແລະມັນຈະລ້າງເຄື່ອງຈັບເວລາໃນໂຫມດ CTC ໂດຍໃຊ້ OCR0A ເປັນ TOP. ບິດ FOC0A ຖືກອ່ານເປັນສູນສະເໝີ.

Bit 6 – FOC0B: Force Output ປຽບທຽບ B

ບິດ FOC0B ແມ່ນໃຊ້ພຽງແຕ່ເມື່ອບິດ WGM ລະບຸໂຫມດທີ່ບໍ່ແມ່ນ PWM.

ຢ່າງໃດກໍ່ຕາມ, ສໍາລັບການຮັບປະກັນຄວາມເຂົ້າກັນໄດ້ກັບອຸປະກອນໃນອະນາຄົດ, ບິດນີ້ຕ້ອງຖືກຕັ້ງເປັນສູນເມື່ອ TCCR0B ຖືກຂຽນເມື່ອເຮັດວຽກຢູ່ໃນໂຫມດ PWM. ເມື່ອຂຽນຢ່າງມີເຫດຜົນໄປຫາບິດ FOC0B, ການປຽບທຽບການຈັບຄູ່ໃນທັນທີຖືກບັງຄັບຢູ່ໃນຫນ່ວຍງານການຜະລິດ Waveform. ຜົນຜະລິດ OC0B ຖືກປ່ຽນແປງຕາມການຕັ້ງຄ່າ COM0B[1:0] bits ຂອງມັນ. ໃຫ້ສັງເກດວ່າ bit FOC0B ຖືກປະຕິບັດເປັນ strobe. ດັ່ງນັ້ນມັນເປັນມູນຄ່າທີ່ມີຢູ່ໃນ COM0B[1:0] bits ທີ່ກໍານົດຜົນກະທົບຂອງການປຽບທຽບບັງຄັບ.

A FOC0B strobe ຈະບໍ່ສ້າງການລົບກວນໃດໆ, ແລະມັນຈະລ້າງເຄື່ອງຈັບເວລາໃນໂຫມດ CTC ໂດຍໃຊ້ OCR0B ເປັນ TOP.

ບິດ FOC0B ຖືກອ່ານເປັນສູນສະເໝີ.

Bits 5:4 – Res: Reserved Bits

ບິດເຫຼົ່ານີ້ແມ່ນສະຫງວນໄວ້ຢູ່ໃນ ATtiny25/45/85 ແລະຈະອ່ານເປັນສູນສະເໝີ.

Bit 3 – WGM02: ຮູບແບບການສ້າງຄື້ນ

ເບິ່ງຄໍາອະທິບາຍຢູ່ໃນ “TCCR0A – ການ​ຄວບ​ຄຸມ​ຕົວ​ຈັບ​ເວ​ລາ/ການ​ຕ້ານ​ການ​ລົງ​ທະ​ບຽນ A” ໃນ​ຫນ້າ 77.

Bits 2:0 – CS0[2:0]: ເລືອກໂມງ

ສາມໂມງເລືອກບິດເລືອກແຫຼ່ງໂມງທີ່ຈະໃຊ້ໂດຍໂມງຈັບເວລາ/ຕົວນັບ.

ຕາຕະລາງ 11-6. ໂມງ ເລືອກ Bit Description

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 pin. ໂມງຢູ່ເທິງຂອບຕົກ.
1 1 1 ແຫຼ່ງໂມງພາຍນອກຢູ່ໃນ T0 pin. ໂມງຢູ່ໃນຂອບທີ່ເພີ່ມຂຶ້ນ.

ຖ້າໂຫມດ PIN ພາຍນອກຖືກໃຊ້ສໍາລັບ Timer/Counter0, ການຫັນປ່ຽນຢູ່ໃນ PIN T0 ຈະໂມງນັບຖອຍຫຼັງເຖິງແມ່ນວ່າ pin ຈະຖືກຕັ້ງຄ່າເປັນຜົນຜະລິດ. ຄຸນນະສົມບັດນີ້ອະນຸຍາດໃຫ້ຊອບແວຄວບຄຸມການນັບ.

Counter ແລະ Compare Units

ການດໍາເນີນງານທົ່ວໄປຂອງ Timer/Counter1 ໄດ້ຖືກອະທິບາຍໄວ້ໃນໂຫມດ asynchronous ແລະການດໍາເນີນງານໃນໂຫມດ synchro-nous ແມ່ນກ່າວເຖິງພຽງແຕ່ວ່າມີຄວາມແຕກຕ່າງກັນລະຫວ່າງສອງໂຫມດນີ້. ຮູບທີ 12-2 ສະແດງໃຫ້ເຫັນການຈັບເວລາ / Counter 1 synchronization register block diagram ແລະຄວາມລ່າຊ້າ synchronization ລະຫວ່າງການລົງທະບຽນ. ໃຫ້ສັງເກດວ່າທຸກລາຍລະອຽດການຈັບໂມງບໍ່ໄດ້ສະແດງຢູ່ໃນຮູບ. ຄ່າການລົງທະບຽນ Timer/Counter1 ແມ່ນຜ່ານຕົວບັນທຶກການຊິງໂຄຣໄນພາຍໃນ, ເຊິ່ງເຮັດໃຫ້ເກີດຄວາມລ່າຊ້າຂອງ input synchronization, ກ່ອນທີ່ຈະສົ່ງຜົນກະທົບຕໍ່ການເຮັດວຽກຂອງ counter. ການລົງທະບຽນ TCCR1, GTCCR, OCR1A, OCR1B, ແລະ OCR1C ສາມາດອ່ານຄືນໄດ້ທັນທີຫຼັງຈາກຂຽນທະບຽນ. ຄ່າການອ່ານຄືນແມ່ນຊັກຊ້າສຳລັບການລົງທະບຽນ ແລະທຸງຂອງ Timer/Counter1 (TCNT1) (OCF1A, OCF1B, ແລະ TOV1), ເນື່ອງຈາກການຊິງຄ໌ອິນພຸດ ແລະຜົນຜະລິດ.

Timer/Counter1 ມີຄວາມລະອຽດສູງ ແລະການນຳໃຊ້ຄວາມຖືກຕ້ອງສູງ ພ້ອມກັບໂອກາດການປັບຂະໜາດຕໍ່າກວ່າ. ມັນຍັງສາມາດສະຫນັບສະຫນູນສອງທີ່ຖືກຕ້ອງ, ຄວາມໄວສູງ, 8-bit Pulse Width Modulators ໂດຍໃຊ້ຄວາມໄວໂມງເຖິງ 64 MHz (ຫຼື 32 MHz ໃນໂຫມດຄວາມໄວຕ່ໍາ). ໃນໂຫມດນີ້, Timer/Counter1 ແລະຜົນຜະລິດປຽບທຽບການລົງທະບຽນເຮັດຫນ້າທີ່ເປັນ PWMs ຢືນຢູ່ຄົນດຽວສອງກັບຜົນໄດ້ຮັບທີ່ບໍ່ແມ່ນ inverted ແລະ inverted. ອ້າງ​ເຖິງ ໜ້າ 86 ສໍາລັບລາຍລະອຽດກ່ຽວກັບຫນ້າທີ່ນີ້. ເຊັ່ນດຽວກັນ, ໂອກາດທີ່ມີ prescaling ສູງເຮັດໃຫ້ຫນ່ວຍງານນີ້ເປັນປະໂຫຍດສໍາລັບຫນ້າທີ່ຄວາມໄວຕ່ໍາຫຼືຫນ້າທີ່ກໍານົດເວລາທີ່ແນ່ນອນກັບການກະທໍາທີ່ບໍ່ຊ້ໍາກັນ.

ຮູບທີ 12-2. Timer/Counter 1 Synchronization ລົງທະບຽນ Block Diagram.

Timer/Counter1 ແລະ prescaler ອະນຸຍາດໃຫ້ແລ່ນ CPU ຈາກແຫຼ່ງໂມງໃດໆໃນຂະນະທີ່ prescaler ເຮັດວຽກຢູ່ໃນໄວ 64 MHz (ຫຼື 32 MHz ໃນໂຫມດຄວາມໄວຕ່ໍາ) ໂມງ PCK ໃນໂຫມດ asynchronous.

ໃຫ້ສັງເກດວ່າຄວາມຖີ່ຂອງໂມງລະບົບຕ້ອງຕ່ໍາກວ່າຫນຶ່ງສ່ວນສາມຂອງຄວາມຖີ່ຂອງ PCK. ກົນໄກການຊິງໂຄຣໄນຂອງໂມງຈັບເວລາ/Counter1 ແບບບໍ່ກົງກັນ ຕ້ອງການຢ່າງໜ້ອຍສອງຂອບຂອງ PCK ເມື່ອໂມງລະບົບສູງ. ຖ້າຄວາມຖີ່ຂອງໂມງລະບົບສູງເກີນໄປ, ມັນມີຄວາມສ່ຽງທີ່ຂໍ້ມູນຫຼືຄ່າການຄວບຄຸມຈະສູນເສຍ.

ຕໍ່ໄປນີ້ ຮູບທີ 12-3 ສະ​ແດງ​ໃຫ້​ເຫັນ​ແຜນ​ວາດ block ສໍາ​ລັບ​ການ Timer/Counter1.

ຕາຕະລາງ 12-1. ປຽບທຽບໂຫມດເລືອກໃນໂຫມດ PWM

COM1x1 COM1x0 ຜົນກະທົບກ່ຽວກັບຜົນໄດ້ຮັບປຽບທຽບ Pins
0 0 OC1x ບໍ່ໄດ້ເຊື່ອມຕໍ່. OC1x ບໍ່ໄດ້ເຊື່ອມຕໍ່.
0 1 OC1x ຖືກລຶບລ້າງເມື່ອປຽບທຽບການຈັບຄູ່. ກໍານົດເວລາທີ່TCNT1 = $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 MHz

3 LSB
VREF = 4V, VCC = 4V,

ໂມງ ADC = 200 kHz

ໂໝດຫຼຸດສຽງລົບກວນ

1.5 LSB
VREF = 4V, VCC = 4V,

ໂມງ ADC = 1 MHz

ໂໝດຫຼຸດສຽງລົບກວນ

2.5 LSB
Integral Non-linearity (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
ວີນ ການປ້ອນຂໍ້ມູນ Voltage GND VREF V
Input Bandwidth 38.4 kHz
AREF ເອກະສານອ້າງອີງພາຍນອກ Voltage 2.0 VCC V
ວີນ ສະບັບພາຍໃນ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, ຊ່ອງທາງທີ່ແຕກຕ່າງກັນ (ຮູບແບບ Unipolar). TA = -40°C ຫາ +85°C

ສັນຍາລັກ ພາລາມິເຕີ ສະພາບ ຕ່ຳສຸດ ພິມ ສູງສຸດ ໜ່ວຍ
ຄວາມລະອຽດ ໄດ້ຮັບ = 1x 10 ບິດ
ໄດ້ຮັບ = 20x 10 ບິດ
ຄວາມຖືກຕ້ອງຢ່າງແທ້ຈິງ (ລວມທັງ INL, DNL, ​​ແລະ

Quantization, Gain ແລະ Offset ຜິດ​ພາດ​)

ໄດ້ຮັບ = 1x

VREF = 4V, VCC = 5V

ໂມງ ADC = 50 – 200 kHz

10.0 LSB
ໄດ້ຮັບ = 20x

VREF = 4V, VCC = 5V

ໂມງ ADC = 50 – 200 kHz

20.0 LSB
Integral Non-Linearity (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
ວີນ ການປ້ອນຂໍ້ມູນ Voltage GND VCC V
VDIFF Input Differential Voltage VREF/ຮັບ V
Input Bandwidth 4 kHz
AREF ເອກະສານອ້າງອີງພາຍນອກ Voltage 2.0 VCC – 1.0 V
ວີນ ສະບັບພາຍໃນtage ເອກະສານອ້າງອີງ 1.0 1.1 1.2 V
ພາຍໃນ 2.56V ອ້າງອິງ (1) VCC > 3.0V 2.3 2.56 2.8 V
RREF Reference Input Resistance 32
ຝົນຕົກ ຄວາມຕ້ານທານການປ້ອນຂໍ້ມູນອະນາລັອກ 100
ຜົນຜະລິດການແປງ ADC 0 1023 LSB

ໝາຍເຫດ: ຄຸນຄ່າເປັນຂໍ້ແນະນຳເທົ່ານັ້ນ.

ຕາຕະລາງ 21-10. ລັກສະນະ ADC, ຊ່ອງທາງທີ່ແຕກຕ່າງກັນ (ຮູບແບບ Bipolar). TA = -40°C ຫາ +85°C

ສັນຍາລັກ ພາລາມິເຕີ ສະພາບ ຕ່ຳສຸດ ພິມ ສູງສຸດ ໜ່ວຍ
ຄວາມລະອຽດ ໄດ້ຮັບ = 1x 10 ບິດ
ໄດ້ຮັບ = 20x 10 ບິດ
ຄວາມຖືກຕ້ອງຢ່າງແທ້ຈິງ (ລວມທັງ INL, DNL, ​​ແລະ

Quantization, Gain ແລະ Offset ຜິດ​ພາດ​)

ໄດ້ຮັບ = 1x

VREF = 4V, VCC = 5V

ໂມງ ADC = 50 – 200 kHz

8.0 LSB
ໄດ້ຮັບ = 20x

VREF = 4V, VCC = 5V

ໂມງ ADC = 50 – 200 kHz

8.0 LSB
Integral Non-Linearity (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
ວີນ ການປ້ອນຂໍ້ມູນ Voltage GND VCC V
VDIFF Input Differential Voltage VREF/ຮັບ V
Input Bandwidth 4 kHz
AREF ເອກະສານອ້າງອີງພາຍນອກ Voltage 2.0 VCC – 1.0 V
ວີນ ສະບັບພາຍໃນtage ເອກະສານອ້າງອີງ 1.0 1.1 1.2 V
ພາຍໃນ 2.56V ອ້າງອິງ (1) VCC > 3.0V 2.3 2.56 2.8 V
RREF Reference Input Resistance 32
ຝົນຕົກ ຄວາມຕ້ານທານການປ້ອນຂໍ້ມູນອະນາລັອກ 100
ຜົນຜະລິດການແປງ ADC -512 511 LSB

ສະຫຼຸບສັງລວມຊຸດຄໍາແນະນໍາ

Mnemonics ໂອເປຣາ ລາຍລະອຽດ ການດໍາເນີນງານ ທຸງ #ໂມງ
ຄໍາ​ແນະ​ນໍາ​ທາງ​ເລກ​ຄະ​ນິດ​ສາດ​ແລະ logic​
ເພີ່ມ Rd, Rr ເພີ່ມສອງລົງທະບຽນ Rd ← Rd + Rr Z,C,N,V,H 1
ADC Rd, Rr ຕື່ມ​ການ​ກັບ​ປະ​ຕິ​ບັດ​ສອງ​ການ​ລົງ​ທະ​ບຽນ​ Rd ← Rd+Rr+C Z,C,N,V,H 1
ADIW Rdl,K ເພີ່ມທັນທີໃສ່ Word Rdh:Rdl ← Rdh:Rdl + K Z,C,N,V,S 2
SUB Rd, Rr ລົບສອງທະບຽນ Rd ← Rd – Rr Z,C,N,V,H 1
SUBI ຖ., ຄ ລົບຄ່າຄົງທີ່ຈາກການລົງທະບຽນ Rd ← Rd – K Z,C,N,V,H 1
SBC Rd, Rr ຫັກດ້ວຍພົກພາສອງທະບຽນ 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 Rdl,K ລົບທັນທີຈາກ Word Rdh:Rdl ← Rdh:Rdl – K Z,C,N,V,S 2
ແລະ Rd, Rr Logical AND Registers Rd ← Rd ∙ Rr Z,N,V 1
ANDI ຖ., ຄ Logical AND ລົງທະບຽນແລະຄົງທີ່ Rd ← Rd ∙ K Z,N,V 1
OR Rd, Rr Logical OR ລົງທະບຽນ Rd ← Rd v Rr Z,N,V 1
ORI ຖ., ຄ Logical OR ລົງທະບຽນແລະຄົງທີ່ Rd ← Rd v K Z,N,V 1
EOR Rd, Rr ສະເພາະ ຫຼືລົງທະບຽນ Rd ← Rd ⊕ Rr Z,N,V 1
COM Rd ຫນຶ່ງ​ທີ່​ສົມ​ບູນ​ແບບ​ Rd ← 0xFF − ຖ Z,C,N,V 1
NEG Rd ການເສີມສອງ Rd ← 0x00 − ຖ Z,C,N,V,H 1
SBR ຖ., ຄ ຕັ້ງ Bit(s) ໃນການລົງທະບຽນ Rd ← Rd v K Z,N,V 1
CBR ຖ., ຄ Clear Bit(s) ໃນການລົງທະບຽນ Rd ← Rd ∙ (0xFF – K) Z,N,V 1
INC Rd ເພີ່ມຂຶ້ນ Rd ← Rd+1 Z,N,V 1
DEC Rd ຫຼຸດລົງ Rd ← Rd − 1 Z,N,V 1
Rd ທົດສອບສູນ ຫຼື ລົບ Rd ← Rd ∙ Rd Z,N,V 1
CLR Rd ລຶບການລົງທະບຽນ Rd ← Rd ⊕ Rd Z,N,V 1
SER Rd ຕັ້ງຄ່າລົງທະບຽນ Rd ← 0xFF ບໍ່ມີ 1
ຄໍາແນະນໍາສາຂາ
RJMP k ໂດດພີ່ນ້ອງ PC ← PC+k+1 ບໍ່ມີ 2
IJMP ຂ້າມທາງອ້ອມໄປຫາ (Z) PC ← Z ບໍ່ມີ 2
RCALL k ຕິດຕໍ່ພົວພັນ subroutine ໂທ PC ← PC+k+1 ບໍ່ມີ 3
ໂທຫາ ໂທທາງອ້ອມຫາ (Z) PC ← Z ບໍ່ມີ 3
RET ກັບຄືນປົກກະຕິ PC ← stack ບໍ່ມີ 4
RETI ຂັດຂວາງການກັບຄືນ PC ← stack I 4
CPSE Rd, Rr ປຽບທຽບ, ຂ້າມຖ້າເທົ່າທຽມກັນ ຖ້າ (Rd = Rr) PC ← PC + 2 ຫຼື 3 ບໍ່ມີ 1/2/3
CP Rd, Rr ປຽບທຽບ Rd - Rr Z, N, V, C, H 1
CPC Rd, Rr ປຽບທຽບກັບ Carry Rd − Rr − ຄ Z, N, V, C, H 1
CPI ຖ., ຄ ປຽບທຽບການລົງທະບຽນກັບທັນທີ ຖ-ກ Z, N, V, C, H 1
SBRC Rr, ຂ ຂ້າມຖ້າ Bit ໃນການລົງທະບຽນຖືກລຶບລ້າງ ຖ້າ (Rr(b)=0) PC ← PC + 2 ຫຼື 3 ບໍ່ມີ 1/2/3
SBRS Rr, ຂ ຂ້າມຖ້າ Bit ໃນການລົງທະບຽນຖືກຕັ້ງ ຖ້າ (Rr(b)=1) PC ← PC + 2 ຫຼື 3 ບໍ່ມີ 1/2/3
SBIC P, ຂ ຂ້າມໄປຖ້າ Bit ໃນ I/O Register Cleared ຖ້າ (P(b)=0) PC ← PC + 2 ຫຼື 3 ບໍ່ມີ 1/2/3
SBIS P, ຂ ຂ້າມຖ້າ Bit ໃນ I/O Register ຖືກຕັ້ງ ຖ້າ (P(b)=1) PC ← PC + 2 ຫຼື 3 ບໍ່ມີ 1/2/3
BRBS s, ກ ສາຂາຖ້າຕັ້ງທຸງສະຖານະ ຖ້າ (SREG(s) = 1) ຈາກນັ້ນ PC←PC+k+1 ບໍ່ມີ 1/2
ບໍລິສັດ BRBC s, ກ ສາຂາຖ້າສະຖານະຖືກລຶບລ້າງ ຖ້າ (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 ສາຂາຖ້າເກັບກູ້ ຖ້າ (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 ສາຂາຖ້າ Plus ຖ້າ (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 ສາຂາຖ້າ Half Carry Flag Set ຖ້າ (H = 1) ຫຼັງຈາກນັ້ນ PC ← PC + k + 1 ບໍ່ມີ 1/2
BRHC k ສາຂາຖ້າ Half Carry Flag Cleared ຖ້າ (H = 0) ຫຼັງຈາກນັ້ນ PC ← PC + k + 1 ບໍ່ມີ 1/2
BRTS k ສາຂາຖ້າ T ທຸງຕັ້ງ ຖ້າ (T = 1) ຫຼັງຈາກນັ້ນ PC ← PC + k + 1 ບໍ່ມີ 1/2
BRTC k ສາຂາຖ້າ T Flag ຖືກລຶບລ້າງ ຖ້າ (T = 0) ຫຼັງຈາກນັ້ນ PC ← PC + k + 1 ບໍ່ມີ 1/2
BRVS k ສາຂາຖ້າ Overflow Flag ຖືກຕັ້ງ ຖ້າ (V = 1) ຫຼັງຈາກນັ້ນ PC ← PC + k + 1 ບໍ່ມີ 1/2
BRVC k ສາຂາຖ້າ Overflow Flag ຖືກລຶບລ້າງ ຖ້າ (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
ຄໍາແນະນໍາ BIT ແລະ BIT-Test
SBI P, ຂ ຕັ້ງ Bit ໃນ I/O Register I/O(P,b) ← 1 ບໍ່ມີ 2
CBI P, ຂ Clear Bit ໃນ I/O Register I/O(P,b) ← 0 ບໍ່ມີ 2
LSL Rd Logical Shift ຊ້າຍ Rd(n+1) ← Rd(n), Rd(0) ← 0 Z,C,N,V 1
LSR Rd Logical 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 ເລກຄະນິດສາດ Shift ຂວາ Rd(n) ← Rd(n+1), n=0..6 Z,C,N,V 1
Mnemonics ໂອເປຣາ ລາຍລະອຽດ ການດໍາເນີນງານ ທຸງ #ໂມງ
SWAP Rd ແລກປ່ຽນ Nibbles Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) ບໍ່ມີ 1
BSET s ທຸງຕັ້ງ SREG(s) ← 1 SREG 1
BCLR s ທຸງຈະແຈ້ງ SREG(s) ← 0 SREG 1
BST Rr, ຂ Bit Store ຈາກລົງທະບຽນກັບ T T ← Rr(b) T 1
BLD ຖ., ຂ ການໂຫຼດບິດຈາກ T ເພື່ອລົງທະບຽນ Rd(b) ← T ບໍ່ມີ 1
SEC ຕັ້ງຄ່າພົກພາ ຄ ← 1 C 1
CLC Clear Carry ຄ ← 0 C 1
ເຊນ ຕັ້ງທຸງລົບ N ← 1 N 1
CLN ລ້າງທຸງລົບ N ← 0 N 1
SEZ ຕັ້ງ Zero Flag Z ← 1 Z 1
CLZ ລຶບທຸງສູນ Z ← 0 Z 1
SEI ເປີດໃຊ້ການລົບກວນທົ່ວໂລກ ຂ້າພະເຈົ້າ ← 1 I 1
CLI Global Interrupt Disable ຂ້າພະເຈົ້າ ← 0 I 1
SES ຕັ້ງທຸງທົດສອບທີ່ໄດ້ເຊັນ S ← 1 S 1
CLS ລຶບທຸງທົດສອບທີ່ເຊັນແລ້ວ S ← 0 S 1
SEV ກໍານົດ Twos Complement Overflow. V ← 1 V 1
CLV Clear Twos Complement Overflow V ← 0 V 1
SET ຕັ້ງ T ໃນ SREG T ← 1 T 1
CLT ລຶບ T ໃນ SREG T ← 0 T 1
ເຊ ກໍານົດ Half Carry Flag ໃນ SREG H ← 1 H 1
CLH ລ້າງທຸງເຄິ່ງພົກພາໃນ SREG H ← 0 H 1
ຄໍາແນະນໍາການໂອນຂໍ້ມູນ
MOV Rd, Rr ຍ້າຍລະຫວ່າງການລົງທະບຽນ Rd ← Rr ບໍ່ມີ 1
MOVW Rd, Rr ສໍາເນົາລົງທະບຽນ Word Rd+1:Rd ← Rr+1:Rr ບໍ່ມີ 1
LDI ຖ., ຄ ໂຫຼດທັນທີ Rd ← K ບໍ່ມີ 1
LD ຖ., X ໂຫຼດທາງອ້ອມ Rd ← (X) ບໍ່ມີ 2
LD Rd, X+ ໂຫຼດທາງອ້ອມ ແລະ Post-Inc. Rd ← (X), X ← X + 1 ບໍ່ມີ 2
LD Rd, – X ໂຫຼດທາງອ້ອມແລະກ່ອນເດືອນທັນວາ. X ← X – 1, Rd ← (X) ບໍ່ມີ 2
LD ຖ., ຍ ໂຫຼດທາງອ້ອມ Rd ← (Y) ບໍ່ມີ 2
LD Rd, Y+ ໂຫຼດທາງອ້ອມ ແລະ Post-Inc. Rd ← (Y), Y ← Y + 1 ບໍ່ມີ 2
LD Rd, – Y ໂຫຼດທາງອ້ອມແລະກ່ອນເດືອນທັນວາ. Y ← Y – 1, Rd ← (Y) ບໍ່ມີ 2
LDD Rd,Y+q Load Indirect ກັບ Displacement Rd ← (Y + q) ບໍ່ມີ 2
LD Rd, Z ໂຫຼດທາງອ້ອມ Rd ← (Z) ບໍ່ມີ 2
LD Rd, Z+ ໂຫຼດທາງອ້ອມ ແລະ Post-Inc. Rd ← (Z), Z ← Z+1 ບໍ່ມີ 2
LD Rd, -Z ໂຫຼດທາງອ້ອມແລະກ່ອນເດືອນທັນວາ. Z ← Z – 1, Rd ← (Z) ບໍ່ມີ 2
LDD Rd, Z+q Load Indirect ກັບ Displacement Rd ← (Z + q) ບໍ່ມີ 2
LDS ຖ., ກ ໂຫລດໂດຍກົງຈາກ SRAM Rd ← (ກ) ບໍ່ມີ 2
ST X, Rr ເກັບຮັກສາທາງອ້ອມ (X) ← Rr ບໍ່ມີ 2
ST X+, Rr ເກັບຮັກສາ Indirect ແລະ Post-Inc. (X) ← Rr, X ← X + 1 ບໍ່ມີ 2
ST – X, Rr ເກັບຮັກສາທາງອ້ອມແລະກ່ອນເດືອນທັນວາ. X ← X–1, (X) ← Rr ບໍ່ມີ 2
ST Y, Rr ເກັບຮັກສາທາງອ້ອມ (ຍ) ← Rr ບໍ່ມີ 2
ST Y+, Rr ເກັບຮັກສາ Indirect ແລະ Post-Inc. (Y) ← Rr, Y ← Y+1 ບໍ່ມີ 2
ST – Y, Rr ເກັບຮັກສາທາງອ້ອມແລະກ່ອນເດືອນທັນວາ. Y ← Y–1, (Y) ← Rr ບໍ່ມີ 2
STD Y+q,Rr ເກັບຮັກສາທາງອ້ອມດ້ວຍການຍ້າຍ (Y+q) ← Rr ບໍ່ມີ 2
ST Z, Rr ເກັບຮັກສາທາງອ້ອມ (Z) ← Rr ບໍ່ມີ 2
ST Z+, Rr ເກັບຮັກສາ Indirect ແລະ Post-Inc. (Z) ← Rr, Z ← Z+1 ບໍ່ມີ 2
ST -Z, Rr ເກັບຮັກສາທາງອ້ອມແລະກ່ອນເດືອນທັນວາ. Z ← Z–1, (Z) ← Rr ບໍ່ມີ 2
STD Z+q,Rr ເກັບຮັກສາທາງອ້ອມດ້ວຍການຍ້າຍ (Z + q) ← Rr ບໍ່ມີ 2
STS k, Rr ເກັບຮັກສາໂດຍກົງຫາ SRAM (k) ← Rr ບໍ່ມີ 2
LPM ໂຫຼດໜ່ວຍຄວາມຈຳຂອງໂປຣແກຣມ R0 ← (Z) ບໍ່ມີ 3
LPM Rd, Z ໂຫຼດໜ່ວຍຄວາມຈຳຂອງໂປຣແກຣມ Rd ← (Z) ບໍ່ມີ 3
LPM Rd, Z+ Load Program Memory ແລະ Post-Inc Rd ← (Z), Z ← Z+1 ບໍ່ມີ 3
SPM ເກັບຮັກສາໂຄງການຄວາມຈໍາ (z) ← R1:R0 ບໍ່ມີ
IN ຖ., ປ ໃນ Port Rd ← ປ ບໍ່ມີ 1
ອອກ P, Rr ພອດອອກ P ← Rr ບໍ່ມີ 1
ຍູ້ Rr ຊຸກຍູ້ການລົງທະບຽນໃນ Stack STACK ← Rr ບໍ່ມີ 2
POP Rd ລົງທະບຽນ Pop ຈາກ Stack Rd ← STACK ບໍ່ມີ 2
ຄໍາແນະນໍາການຄວບຄຸມ MCU
ບໍ່ ບໍ່ມີການດໍາເນີນງານ ບໍ່ມີ 1
ນອນ ນອນ (ເບິ່ງລາຍລະອຽດສະເພາະສຳລັບຟັງຊັນນອນ) ບໍ່ມີ 1
WDR ຣີເຊັດ Watchdog (ເບິ່ງລາຍລະອຽດສະເພາະສໍາລັບ WDR/Timer) ບໍ່ມີ 1
BREAK ພັກຜ່ອນ
ຄວາມໄວ (MHz) (1) ການສະຫນອງ Voltage (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. ສໍາລັບຄວາມໄວທຽບກັບການສະຫນອງ voltage, ເບິ່ງພາກ 21.3 “ຄວາມໄວ” ໃນໜ້າ 163.

ທຸກຊຸດແມ່ນບໍ່ມີ Pb, ບໍ່ມີ halide ແລະສີຂຽວຢ່າງເຕັມທີ່ແລະພວກເຂົາປະຕິບັດຕາມຄໍາແນະນໍາຂອງເອີຣົບສໍາລັບຂໍ້ຈໍາກັດຂອງສານອັນຕະລາຍ (RoHS).

ຕົວຊີ້ບອກລະຫັດ

H: NiPdAu ນໍາສໍາເລັດຮູບ

U: ກົ່ວ matte

R: tape & reel

ອຸປະກອນເຫຼົ່ານີ້ຍັງສາມາດສະຫນອງໃນຮູບແບບ wafer. ກະ​ລຸ​ນາ​ຕິດ​ຕໍ່​ຫາ​ຫ້ອງ​ການ​ຂາຍ Atmel ທ້ອງ​ຖິ່ນ​ຂອງ​ທ່ານ​ສໍາ​ລັບ​ຂໍ້​ມູນ​ການ​ສັ່ງ​ຊື້​ລະ​ອຽດ​ແລະ​ປະ​ລິ​ມານ​ຕໍາ​່​ສຸດ​ທີ່​.

ອີຣານຕາ

Errata ATtiny25

ຈົດຫມາຍສະບັບດັດແກ້ໃນພາກນີ້ຫມາຍເຖິງການດັດແກ້ຂອງອຸປະກອນ ATtiny25.

Rev D – F

ບໍ່ມີ errata ທີ່ຮູ້ຈັກ.

Rev B–C

ການອ່ານ EEPROM ອາດຈະລົ້ມເຫລວຢູ່ທີ່ການສະຫນອງຕ່ໍາ voltage / ຄວາມຖີ່ຂອງໂມງຕ່ໍາ

ການອ່ານ EEPROM ອາດຈະລົ້ມເຫລວຢູ່ທີ່ການສະຫນອງຕ່ໍາ voltage / ຄວາມຖີ່ຂອງໂມງຕ່ໍາ

ພະຍາຍາມອ່ານ EEPROM ໃນຄວາມຖີ່ຂອງໂມງຕ່ໍາແລະ / ຫຼືການສະຫນອງຕ່ໍາ voltage ອາດຈະສົ່ງຜົນໃຫ້ຂໍ້ມູນທີ່ບໍ່ຖືກຕ້ອງ.

ແກ້​ໄຂ​ບັນ​ຫາ / ການ​ແກ້​ໄຂ​

ຢ່າໃຊ້ EEPROM ເມື່ອຄວາມຖີ່ໂມງຕ່ຳກວ່າ 1MHz ແລະສະໜອງ voltage ແມ່ນຕ່ໍາກວ່າ 2V. ຖ້າ​ຫາກ​ວ່າ​ຄວາມ​ຖີ່​ຂອງ​ການ​ປະ​ຕິ​ບັດ​ການ​ບໍ່​ສາ​ມາດ​ຍົກ​ສູງ​ຂຶ້ນ 1MHz ຫຼັງ​ຈາກ​ນັ້ນ​ການ​ສະ​ຫນອງ voltage ຄວນຈະມີຫຼາຍກ່ວາ 2V. ເຊັ່ນດຽວກັນ, ຖ້າຫາກວ່າການສະຫນອງ voltage ບໍ່ສາມາດຖືກຍົກຂຶ້ນມາຂ້າງເທິງ 2V ຫຼັງຈາກນັ້ນຄວາມຖີ່ຂອງການດໍາເນີນການຄວນຈະມີຫຼາຍກ່ວາ 1MHz.

ຄຸນ​ນະ​ສົມ​ບັດ​ນີ້​ແມ່ນ​ເປັນ​ທີ່​ຮູ້​ຈັກ​ເປັນ​ອຸນ​ຫະ​ພູມ​ແຕ່​ວ່າ​ມັນ​ບໍ່​ໄດ້​ຖືກ​ລັກ​ສະ​ນະ​. ຂໍ້ແນະນໍາແມ່ນໃຫ້ສໍາລັບອຸນຫະພູມຫ້ອງ, ເທົ່ານັ້ນ.

Rev A

ບໍ່ແມ່ນ sampນຳ ພາ.

Errata ATtiny45

ຈົດຫມາຍສະບັບດັດແກ້ໃນພາກນີ້ຫມາຍເຖິງການດັດແກ້ຂອງອຸປະກອນ ATtiny45.

Rev F – G

ບໍ່ມີຄວາມຜິດພາດທີ່ຮູ້ຈັກ

Rev D – E

ການອ່ານ EEPROM ອາດຈະລົ້ມເຫລວຢູ່ທີ່ການສະຫນອງຕ່ໍາ voltage / ຄວາມຖີ່ຂອງໂມງຕ່ໍາ

ການອ່ານ EEPROM ອາດຈະລົ້ມເຫລວຢູ່ທີ່ການສະຫນອງຕ່ໍາ voltage / ຄວາມຖີ່ຂອງໂມງຕ່ໍາ

ພະຍາຍາມອ່ານ EEPROM ໃນຄວາມຖີ່ຂອງໂມງຕ່ໍາແລະ / ຫຼືການສະຫນອງຕ່ໍາ voltage ອາດຈະສົ່ງຜົນໃຫ້ຂໍ້ມູນທີ່ບໍ່ຖືກຕ້ອງ.

ແກ້​ໄຂ​ບັນ​ຫາ / ການ​ແກ້​ໄຂ​

ຢ່າໃຊ້ EEPROM ເມື່ອຄວາມຖີ່ໂມງຕ່ຳກວ່າ 1MHz ແລະສະໜອງ voltage ແມ່ນຕ່ໍາກວ່າ 2V. ຖ້າ​ຫາກ​ວ່າ​ຄວາມ​ຖີ່​ຂອງ​ການ​ປະ​ຕິ​ບັດ​ການ​ບໍ່​ສາ​ມາດ​ຍົກ​ສູງ​ຂຶ້ນ 1MHz ຫຼັງ​ຈາກ​ນັ້ນ​ການ​ສະ​ຫນອງ voltage ຄວນຈະມີຫຼາຍກ່ວາ 2V. ເຊັ່ນດຽວກັນ, ຖ້າຫາກວ່າການສະຫນອງ voltage ບໍ່ສາມາດຖືກຍົກຂຶ້ນມາຂ້າງເທິງ 2V ຫຼັງຈາກນັ້ນຄວາມຖີ່ຂອງການດໍາເນີນການຄວນຈະມີຫຼາຍກ່ວາ 1MHz.

ຄຸນ​ນະ​ສົມ​ບັດ​ນີ້​ແມ່ນ​ເປັນ​ທີ່​ຮູ້​ຈັກ​ວ່າ​ຈະ​ຂຶ້ນ​ກັບ​ອຸນ​ຫະ​ພູມ​ແຕ່​ວ່າ​ມັນ​ບໍ່​ໄດ້​ຖືກ​ລັກ​ສະ​ນະ​. ຂໍ້ແນະນໍາແມ່ນໃຫ້ສໍາລັບອຸນຫະພູມຫ້ອງ, ເທົ່ານັ້ນ.

Rev B–C

PLL ບໍ່ລັອກ

EEPROM ອ່ານຈາກລະຫັດແອັບພລິເຄຊັນບໍ່ເຮັດວຽກຢູ່ໃນ Lock Bit Mode 3

ການອ່ານ EEPROM ອາດຈະລົ້ມເຫລວຢູ່ທີ່ການສະຫນອງຕ່ໍາ voltage / ຄວາມຖີ່ຂອງໂມງຕ່ໍາ

ໂຕນັບເວລາ 1 ການຜະລິດຜົນຜະລິດ PWM ໃນ OC1B- XOC1B ເຮັດວຽກບໍ່ຖືກຕ້ອງ

PLL ບໍ່ລັອກ

ເມື່ອຢູ່ໃນຄວາມຖີ່ຕ່ໍາກວ່າ 6.0 MHz, PLL ຈະບໍ່ລັອກ

ແກ້ໄຂບັນຫາ / ການແກ້ໄຂບັນຫາ

ເມື່ອໃຊ້ PLL, ແລ່ນຢູ່ທີ່ 6.0 MHz ຫຼືສູງກວ່າ.

EEPROM ອ່ານຈາກລະຫັດແອັບພລິເຄຊັນບໍ່ເຮັດວຽກຢູ່ໃນ Lock Bit Mode 3

ເມື່ອ Memory Lock Bits LB2 ແລະ LB1 ຖືກຕັ້ງໂຄງການເປັນໂຫມດ 3, ການອ່ານ EEPROM ບໍ່ເຮັດວຽກຈາກລະຫັດແອັບພລິເຄຊັນ.

ແກ້ໄຂບັນຫາ / ເຮັດວຽກອ້ອມຂ້າງ

ຢ່າຕັ້ງໂໝດປ້ອງກັນຕົວລັອກບິດ 3 ເມື່ອລະຫັດແອັບພລິເຄຊັນຕ້ອງອ່ານຈາກ EEPROM.

ການອ່ານ EEPROM ອາດຈະລົ້ມເຫລວຢູ່ທີ່ການສະຫນອງຕ່ໍາ voltage / ຄວາມຖີ່ຂອງໂມງຕ່ໍາ

ພະຍາຍາມອ່ານ EEPROM ໃນຄວາມຖີ່ຂອງໂມງຕ່ໍາແລະ / ຫຼືການສະຫນອງຕ່ໍາ voltage ອາດຈະສົ່ງຜົນໃຫ້ຂໍ້ມູນທີ່ບໍ່ຖືກຕ້ອງ.

ແກ້​ໄຂ​ບັນ​ຫາ / ການ​ແກ້​ໄຂ​

ຢ່າໃຊ້ EEPROM ເມື່ອຄວາມຖີ່ໂມງຕ່ຳກວ່າ 1MHz ແລະສະໜອງ voltage ແມ່ນຕ່ໍາກວ່າ 2V. ຖ້າ​ຫາກ​ວ່າ​ຄວາມ​ຖີ່​ຂອງ​ການ​ປະ​ຕິ​ບັດ​ການ​ບໍ່​ສາ​ມາດ​ຍົກ​ສູງ​ຂຶ້ນ 1MHz ຫຼັງ​ຈາກ​ນັ້ນ​ການ​ສະ​ຫນອງ voltage ຄວນຈະມີຫຼາຍກ່ວາ 2V. ເຊັ່ນດຽວກັນ, ຖ້າຫາກວ່າການສະຫນອງ voltage ບໍ່ສາມາດຖືກຍົກຂຶ້ນມາຂ້າງເທິງ 2V ຫຼັງຈາກນັ້ນຄວາມຖີ່ຂອງການດໍາເນີນການຄວນຈະມີຫຼາຍກ່ວາ 1MHz.

ຄຸນ​ນະ​ສົມ​ບັດ​ນີ້​ແມ່ນ​ເປັນ​ທີ່​ຮູ້​ຈັກ​ເປັນ​ອຸນ​ຫະ​ພູມ​ແຕ່​ວ່າ​ມັນ​ບໍ່​ໄດ້​ຖືກ​ລັກ​ສະ​ນະ​. ຂໍ້ແນະນໍາແມ່ນໃຫ້ສໍາລັບອຸນຫະພູມຫ້ອງ, ເທົ່ານັ້ນ.

ຕົວນັບເວລາ 1 ການຜະລິດຜົນຜະລິດ PWM ໃນ OC1B – XOC1B ເຮັດວຽກບໍ່ຖືກຕ້ອງ

Timer Counter1 PWM output OC1B-XOC1B ເຮັດວຽກບໍ່ຖືກຕ້ອງ. ພຽງແຕ່ໃນກໍລະນີທີ່ບິດຄວບຄຸມ, COM1B1 ແລະ COM1B0 ຢູ່ໃນໂຫມດດຽວກັນກັບ COM1A1 ແລະ COM1A0, ຕາມລໍາດັບ, OC1B-XOC1B out-put ເຮັດວຽກຢ່າງຖືກຕ້ອງ.

ແກ້ໄຂບັນຫາ / ເຮັດວຽກອ້ອມຂ້າງ

ການແກ້ໄຂພຽງແຕ່ແມ່ນການນໍາໃຊ້ການຕັ້ງຄ່າການຄວບຄຸມດຽວກັນໃນ COM1A[1:0] ແລະ COM1B[1:0] ບິດຄວບຄຸມ, ເບິ່ງຕາຕະລາງ 14-4 ໃນເອກະສານຂໍ້ມູນ. ບັນຫາໄດ້ຖືກແກ້ໄຂສໍາລັບ Tiny45 rev D.

Rev A

ການໃຊ້ພະລັງງານຫຼຸດລົງສູງເກີນໄປ

DebugWIRE ຂາດການສື່ສານເມື່ອກ້າວເຂົ້າໄປຂັດຂວາງ

PLL ບໍ່ລັອກ

EEPROM ອ່ານຈາກລະຫັດແອັບພລິເຄຊັນບໍ່ເຮັດວຽກຢູ່ໃນ Lock Bit Mode 3

ການອ່ານ EEPROM ອາດຈະລົ້ມເຫລວຢູ່ທີ່ການສະຫນອງຕ່ໍາ voltage / ຄວາມຖີ່ຂອງໂມງຕ່ໍາ

ການໃຊ້ພະລັງງານຫຼຸດລົງສູງເກີນໄປ

ສາມສະຖານະການຈະນໍາໄປສູ່ການບໍລິໂພກພະລັງງານຕ່ໍາເກີນໄປ. ພວກ​ນີ້​ແມ່ນ:

ໂມງພາຍນອກຖືກເລືອກໂດຍຟິວ, ແຕ່ I/O PORT ຍັງຖືກເປີດໃຊ້ເປັນຜົນຜະລິດ.

EEPROM ຖືກອ່ານກ່ອນທີ່ຈະລົງພະລັງງານ.

VCC ແມ່ນ 4.5 volts ຫຼືສູງກວ່າ.

ການປະຕິເສດຄວາມຮັບຜິດຊອບ: ຂໍ້ມູນໃນເອກະສານນີ້ແມ່ນໃຫ້ຢູ່ໃນການເຊື່ອມໂຍງກັບຜະລິດຕະພັນ Atmel. ບໍ່ມີໃບອະນຸຍາດ, ສະແດງອອກຫຼືໂດຍຄວາມຫມາຍ, ໂດຍ estoppel ຫຼືຖ້າບໍ່ດັ່ງນັ້ນ, ສິດທິຊັບສິນທາງປັນຍາແມ່ນໄດ້ຮັບການອະນຸຍາດຈາກເອກະສານນີ້ຫຼືກ່ຽວຂ້ອງກັບການຂາຍຜະລິດຕະພັນ Atmel. ຍົກເວັ້ນຕາມທີ່ກຳນົດໄວ້ໃນເງື່ອນໄຂ ແລະເງື່ອນໄຂຂອງການຂາຍທີ່ຕັ້ງຢູ່ໃນ ATMEL WEBເວັບໄຊ, ATMEL ຖືວ່າບໍ່ມີຄວາມຮັບຜິດຊອບອັນໃດອັນໜຶ່ງ ແລະປະຕິເສດການຮັບປະກັນໃດໆທີ່ສະແດງອອກ, ບົ່ງບອກ ຫຼືຕາມກົດໝາຍທີ່ກ່ຽວຂ້ອງກັບຜະລິດຕະພັນຂອງມັນລວມທັງ, ແຕ່ບໍ່ຈຳກັດການຮັບປະກັນໂດຍຫຍໍ້ຂອງການບໍລິການ, ການສະໜອງສິນຄ້າ, ການສະໜອງສິນຄ້າ. ສ່ວນປະກອບ. ໃນກໍລະນີໃດກໍ່ຕາມ, ATMEL ຈະຕ້ອງຮັບຜິດຊອບຕໍ່ຄວາມເສຍຫາຍທາງກົງ, ທາງອ້ອມ, ຜົນສະທ້ອນ, ລົງໂທດ, ພິເສດ ຫຼືໂດຍບັງເອີນ (ລວມທັງ, ໂດຍບໍ່ຈຳກັດ, ຄວາມເສຍຫາຍຕໍ່ການສູນເສຍ ແລະຜົນກຳໄລ, ການລົງທຶນ, ການຄ້າ, ພາຍໃນ ຫຼືບໍ່ສາມາດນຳໃຊ້ໄດ້ ເອກະສານນີ້, ເຖິງແມ່ນວ່າ ATMEL ໄດ້ຮັບການແນະນໍາກ່ຽວກັບຄວາມເປັນໄປໄດ້ຂອງຄວາມເສຍຫາຍດັ່ງກ່າວ.

Atmel ບໍ່ມີການເປັນຕົວແທນ ຫຼືການຮັບປະກັນກ່ຽວກັບຄວາມຖືກຕ້ອງ ຫຼືຄວາມສົມບູນຂອງເນື້ອໃນຂອງເອກະສານນີ້ ແລະສະຫງວນສິດໃນການປ່ຽນແປງສະເພາະ ແລະລາຍລະອຽດຂອງຜະລິດຕະພັນໄດ້ທຸກເວລາໂດຍບໍ່ຕ້ອງແຈ້ງລ່ວງໜ້າ. Atmel ບໍ່ໄດ້ໃຫ້ຄໍາໝັ້ນສັນຍາທີ່ຈະປັບປຸງຂໍ້ມູນທີ່ມີຢູ່ໃນນີ້. ເວັ້ນເສຍແຕ່ໄດ້ສະຫນອງໃຫ້ໂດຍສະເພາະຖ້າບໍ່ດັ່ງນັ້ນ, ຜະລິດຕະພັນ Atmel ແມ່ນບໍ່ເຫມາະສົມສໍາລັບ, ແລະຈະບໍ່ຖືກນໍາໃຊ້ໃນ, ຄໍາຮ້ອງສະຫມັກລົດຍົນ. ຜະລິດຕະພັນ Atmel ບໍ່ໄດ້ມີຈຸດປະສົງ, ອະນຸຍາດ, ຫຼືຮັບປະກັນສໍາລັບການນໍາໃຊ້ເປັນອົງປະກອບໃນຄໍາຮ້ອງສະຫມັກທີ່ມີຈຸດປະສົງເພື່ອສະຫນັບສະຫນູນຫຼືຍືນຍົງຊີວິດ.

ເອກະສານອ້າງອີງ

ອອກຄໍາເຫັນ

ທີ່ຢູ່ອີເມວຂອງເຈົ້າຈະບໍ່ຖືກເຜີຍແຜ່. ຊ່ອງຂໍ້ມູນທີ່ຕ້ອງການຖືກໝາຍໄວ້ *