เนื้อหา ซ่อน

แอตเมล

ไมโครคอนโทรลเลอร์ AVR Atmel 8 บิตพร้อมแฟลชแบบตั้งโปรแกรมได้ในระบบ 2/4/8K ไบต์ชิป

 

คุณสมบัติ

  • ไมโครคอนโทรลเลอร์ AVR® 8 บิตประสิทธิภาพสูงและใช้พลังงานต่ำ
  • สถาปัตยกรรม RISC ขั้นสูง
  • 120 คำแนะนำที่มีประสิทธิภาพ - การดำเนินการตามวงจรนาฬิกาเดียวส่วนใหญ่
  • ทะเบียนการทำงานทั่วไป 32 x 8
  • การทำงานแบบคงที่อย่างเต็มที่
  • โปรแกรมไม่ลบเลือนและความทรงจำข้อมูล
  • 2/4 / 8K ไบต์ของแฟลชหน่วยความจำโปรแกรมในระบบที่ตั้งโปรแกรมได้
  • ความทนทาน: เขียน/ลบ 10,000 รอบ
  • EEPROM ที่ตั้งโปรแกรมได้ในระบบ 128/256/512 ไบต์
  • ความทนทาน: เขียน/ลบ 100,000 รอบ
  • 128/256/512 ไบต์ SRAM ภายใน
  • การล็อคการเขียนโปรแกรมสำหรับโปรแกรมแฟลชการเขียนโปรแกรมด้วยตนเองและความปลอดภัยของข้อมูล EEPROM

คุณสมบัติอุปกรณ์ต่อพ่วง

  • ตัวจับเวลา / ตัวนับ 8 บิตพร้อม Prescaler และช่องสัญญาณ PWM สองช่อง
  • ตัวจับเวลา / ตัวนับความเร็วสูง 8 บิตพร้อม Prescaler แยก
  • 2 เอาต์พุต PWM ความถี่สูงพร้อมเอาต์พุตแยกเปรียบเทียบรีจิสเตอร์
  • โปรแกรมกำเนิดเวลาตายที่ตั้งโปรแกรมได้
  • USI - อินเทอร์เฟซแบบอนุกรมสากลพร้อมเครื่องตรวจจับเงื่อนไขเริ่ม
  • ADC 10 บิต

4 ช่องที่สิ้นสุดครั้งเดียว

ช่อง ADC แบบดิฟเฟอเรนเชียล 2 คู่พร้อมเกนที่ตั้งโปรแกรมได้ (1x, 20x)

การวัดอุณหภูมิ

ตัวจับเวลา Watchdog ที่ตั้งโปรแกรมได้พร้อมออสซิลเลเตอร์บนชิปแยกต่างหาก

ตัวเปรียบเทียบอนาล็อกบนชิป

คุณสมบัติพิเศษของไมโครคอนโทรลเลอร์

debugWIRE ระบบดีบักบนชิป

โปรแกรมในระบบผ่านพอร์ต SPI

แหล่งที่มาของการขัดจังหวะภายนอกและภายใน

ไม่ได้ใช้งานพลังงานต่ำลดสัญญาณรบกวน ADC และโหมดปิดเครื่อง

ปรับปรุงวงจรรีเซ็ตการเปิดเครื่อง

วงจรตรวจจับสีน้ำตาลออกที่ตั้งโปรแกรมได้

ออสซิลเลเตอร์ปรับเทียบภายใน

I / O และแพ็คเกจ

หกบรรทัด I / O ที่ตั้งโปรแกรมได้

PDIP 8 พิน SOIC 8 พิน 20 แผ่น QFN / MLF และ TSSOP 8 พิน (เฉพาะ ATtiny45 / V)

ปฏิบัติการฉบับที่tage
- 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 เมกะเฮิรตซ์, 1.8V: 300µA

โหมดปิดเครื่อง:

การกำหนดค่า Pin

ปักหมุด ATtiny25/45/85 การกำหนดค่า

คำอธิบายหมุด

VCC: อุปทานฉบับtage.
GND: กราวด์
พอร์ต B (PB5:PB0): พอร์ต B เป็นพอร์ต I/O แบบสองทิศทาง 6 บิตพร้อมตัวต้านทานแบบดึงขึ้นภายใน (เลือกไว้สำหรับแต่ละบิต) บัฟเฟอร์เอาต์พุตของพอร์ต B มีลักษณะไดรฟ์แบบสมมาตรที่มีทั้งความสามารถในการรับและแหล่งที่มาสูง ในฐานะอินพุต พินพอร์ต B ที่ถูกดึงต่ำจากภายนอกจะจ่ายกระแสหากเปิดใช้งานตัวต้านทานแบบดึงขึ้น พินของพอร์ต B จะถูกระบุเป็นสามสถานะเมื่อเงื่อนไขการรีเซ็ตเริ่มทำงาน แม้ว่านาฬิกาจะไม่ทำงานก็ตาม

พอร์ต B ยังทำหน้าที่ของคุณสมบัติพิเศษต่างๆของ ATtiny25 / 45/85 ตามรายการ
บน ATtiny25 พอร์ต I / O ที่ตั้งโปรแกรมได้ PB3 และ PB4 (พิน 2 และ 3) จะถูกแลกเปลี่ยนในโหมดความเข้ากันได้ของ ATtiny15 เพื่อรองรับความเข้ากันได้แบบย้อนหลังกับ ATtiny15

RESET: รีเซ็ตอินพุต ระดับต่ำบนพินนี้นานกว่าความยาวพัลส์ขั้นต่ำจะสร้างการรีเซ็ต แม้ว่านาฬิกาจะไม่เดินและหากพินรีเซ็ตไม่ได้ถูกปิดใช้งาน กำหนดความยาวพัลส์ขั้นต่ำเป็น ตาราง 21-4 ในหน้า 165. ไม่รับประกันว่าพัลส์ที่สั้นกว่าจะสร้างการรีเซ็ตได้

นอกจากนี้ยังสามารถใช้พินรีเซ็ตเป็นพิน I / O (อ่อน) ได้

เกินview

ATtiny25 / 45/85 เป็นไมโครคอนโทรลเลอร์ CMOS 8 บิตที่ใช้พลังงานต่ำซึ่งใช้สถาปัตยกรรม RISC ที่ปรับปรุงโดย AVR ด้วยการดำเนินการตามคำสั่งที่มีประสิทธิภาพในรอบสัญญาณนาฬิกาเดียว ATtiny25 / 45/85 บรรลุปริมาณงานที่เข้าใกล้ 1 MIPS ต่อ MHz ช่วยให้ผู้ออกแบบระบบสามารถเพิ่มประสิทธิภาพการใช้พลังงานเทียบกับความเร็วในการประมวลผล

แผนภาพบล็อก แผนผังบล็อก

แกน AVR รวมชุดคำสั่งที่หลากหลายเข้ากับการลงทะเบียนการทำงานทั่วไป 32 รายการ การลงทะเบียนทั้ง 32 รายการเชื่อมต่อโดยตรงกับ Arithmetic Logic Unit (ALU) ทำให้สามารถเข้าถึงการลงทะเบียนอิสระสองรายการในคำสั่งเดียวที่ดำเนินการในหนึ่งรอบนาฬิกา สถาปัตยกรรมที่ได้นั้นมีประสิทธิภาพในการเขียนโค้ดมากกว่าในขณะที่ให้ทรูพุตได้เร็วกว่าไมโครคอนโทรลเลอร์ CISC ทั่วไปถึงสิบเท่า

ATtiny25 / 45/85 มีคุณสมบัติดังต่อไปนี้: 2/4 / 8K bytes ของ In-System Programmable Flash, 128/256/512 ไบต์ EEPROM, 128/256/256 ไบต์ SRAM, 6 สาย I / O สำหรับวัตถุประสงค์ทั่วไป, 32 ทั่วไป การลงทะเบียนเพื่อการทำงาน, ตัวจับเวลา / ตัวนับ 8 บิตหนึ่งตัวพร้อมโหมดเปรียบเทียบ, ตัวจับเวลา / ตัวนับความเร็วสูง 8 บิต, อินเทอร์เฟซอนุกรมสากล, อินเทอร์รัปต์ภายในและภายนอก, ADC 4 ช่องสัญญาณ, 10 บิต, ตัวจับเวลา Watchdog ที่ตั้งโปรแกรมได้ภายใน ออสซิลเลเตอร์และโหมดประหยัดพลังงานที่เลือกได้สามซอฟต์แวร์ โหมด Idle จะหยุด CPU ในขณะที่ปล่อยให้ระบบ SRAM, Timer / Counter, ADC, Analog Comparator และ Interrupt ทำงานต่อไป โหมดปิดเครื่องจะบันทึกการลงทะเบียนโดยปิดการทำงานของชิปทั้งหมดจนกว่าจะมีการขัดจังหวะหรือการรีเซ็ตฮาร์ดแวร์ครั้งถัดไป โหมดลดสัญญาณรบกวน ADC จะหยุด CPU และโมดูล I / O ทั้งหมดยกเว้น ADC เพื่อลดสัญญาณรบกวนในการสลับระหว่างการแปลง ADC

อุปกรณ์นี้ผลิตโดยใช้เทคโนโลยีหน่วยความจำแบบไม่ลบเลือนความหนาแน่นสูงของ Atmel On-chip ISP Flash ช่วยให้สามารถตั้งโปรแกรมหน่วยความจำโปรแกรมใหม่ในระบบผ่านอินเทอร์เฟซแบบอนุกรม SPI โดยโปรแกรมเมอร์หน่วยความจำแบบไม่ลบเลือนทั่วไปหรือโดยรหัสบูตบนชิปที่ทำงานบนแกน AVR

ATtiny25 / 45/85 AVR ได้รับการสนับสนุนด้วยชุดโปรแกรมและเครื่องมือพัฒนาระบบเต็มรูปแบบ ได้แก่ C Com- pilers, Macro Assemblers, Program Debugger / Simulators และ Evaluation kits

เกี่ยวกับทรัพยากร

ชุดเครื่องมือการพัฒนาที่ครอบคลุมบันทึกการใช้งานและเอกสารข้อมูลพร้อมให้ดาวน์โหลดแล้ว http://www.atmel.com/avr.

รหัส Exampเลส

เอกสารนี้มีรหัสอย่างง่าย exampไฟล์ที่แสดงวิธีการใช้ส่วนต่างๆ ของอุปกรณ์โดยสังเขป รหัสเหล่านี้examples ถือว่าส่วนหัวเฉพาะส่วน file รวมก่อนการรวบรวม โปรดทราบว่าผู้ขายคอมไพเลอร์ C บางรายไม่มีคำจำกัดความบิตในส่วนหัว files และการจัดการขัดจังหวะใน C ขึ้นอยู่กับคอมไพเลอร์ โปรดยืนยันกับเอกสารประกอบคอมไพเลอร์ C สำหรับรายละเอียดเพิ่มเติม

สำหรับการลงทะเบียน I / O ที่อยู่ในแผนที่ I / O แบบขยายคำแนะนำ“ IN”“ OUT”“ SBIS”“ SBIC”“ CBI” และ“ SBI” จะต้องแทนที่ด้วยคำแนะนำที่อนุญาตให้เข้าถึงส่วนขยาย I / อ. โดยทั่วไปหมายถึง“ LDS” และ“ STS” รวมกับ“ SBRS”,“ SBRC”,“ SBR” และ“ CBR” โปรดทราบว่าไม่ใช่อุปกรณ์ AVR ทั้งหมดที่มีแผนที่ I / O แบบขยาย

การตรวจจับการสัมผัสแบบ Capacitive

Atmel QTouch Library มอบโซลูชันที่ใช้งานง่ายสำหรับอินเทอร์เฟซที่ไวต่อการสัมผัสบนไมโครคอนโทรลเลอร์ Atmel AVR QTouch Library รองรับวิธีการได้มาของ QTouch® และ QMatrix®

การตรวจจับการสัมผัสสามารถเพิ่มลงในแอปพลิเคชันใด ๆ ได้อย่างง่ายดายโดยการเชื่อมโยง QTouch Library และใช้ Application Program-ming Interface (API) ของไลบรารีเพื่อกำหนดช่องทางการสัมผัสและเซ็นเซอร์ จากนั้นแอปพลิเคชันจะเรียก API เพื่อดึงข้อมูลช่องสัญญาณและกำหนดสถานะของเซ็นเซอร์สัมผัส

ห้องสมุด QTouch ฟรีและสามารถดาวน์โหลดได้จาก Atmel webงาน. สำหรับข้อมูลเพิ่มเติมและรายละเอียดการใช้งาน โปรดดูคู่มือผู้ใช้ไลบรารี QTouch – ได้จาก Atmel webเว็บไซต์.

การเก็บรักษาข้อมูล

ผลการรับรองความน่าเชื่อถือแสดงให้เห็นว่าอัตราความล้มเหลวในการเก็บรักษาข้อมูลที่คาดการณ์ไว้น้อยกว่า 1 PPM ในช่วง 20 ปีที่ 85 ° C หรือ 100 ปีที่ 25 ° C

แกน CPU AVR

การแนะนำ

ส่วนนี้จะกล่าวถึงสถาปัตยกรรมหลักของ AVR โดยทั่วไป หน้าที่หลักของแกน CPU คือเพื่อให้แน่ใจว่าการทำงานของโปรแกรมเป็นไปอย่างถูกต้อง ดังนั้นซีพียูจึงต้องสามารถเข้าถึงความทรงจำทำการคำนวณควบคุมอุปกรณ์ต่อพ่วงและจัดการการขัดจังหวะ

สถาปัตยกรรมมากกว่าview สถาปัตยกรรม

เพื่อเพิ่มประสิทธิภาพและความเท่าเทียมกันสูงสุด AVR ใช้สถาปัตยกรรมฮาร์วาร์ดโดยมีหน่วยความจำและบัสแยกต่างหากสำหรับโปรแกรมและข้อมูล คำแนะนำในหน่วยความจำโปรแกรมจะดำเนินการด้วยการไปป์ไลน์ระดับเดียว ในขณะที่กำลังดำเนินการคำสั่งหนึ่งคำสั่งถัดไปจะถูกดึงมาล่วงหน้าจากหน่วยความจำโปรแกรม แนวคิดนี้ช่วยให้สามารถดำเนินการคำสั่งได้ในทุกรอบนาฬิกา หน่วยความจำโปรแกรมคือหน่วยความจำแฟลชที่ตั้งโปรแกรมใหม่ได้ในระบบ

Register เข้าถึงได้อย่างรวดเร็ว File มีรีจิสเตอร์สำหรับใช้งานทั่วไป 32 x 8 บิตพร้อมเวลาเข้าถึงรอบสัญญาณนาฬิกาเดียว ซึ่งช่วยให้การดำเนินการหน่วยเลขคณิตลอจิก (ALU) รอบเดียว ในการดำเนินการ ALU ทั่วไป ตัวถูกดำเนินการสองตัวจะถูกส่งออกจากรีจิสเตอร์ File, การดำเนินการจะถูกดำเนินการและผลลัพธ์จะถูกเก็บไว้ใน Register File- ในหนึ่งรอบนาฬิกา

สามารถใช้การลงทะเบียนหกจาก 32 รายการเป็นตัวชี้การลงทะเบียนที่อยู่ทางอ้อม 16 บิตสามตัวสำหรับการกำหนดที่อยู่พื้นที่ข้อมูล - ช่วยให้สามารถคำนวณที่อยู่ได้อย่างมีประสิทธิภาพ หนึ่งในตัวชี้ที่อยู่เหล่านี้สามารถใช้เป็นตัวชี้ที่อยู่สำหรับค้นหาตารางในหน่วยความจำโปรแกรม Flash การลงทะเบียนฟังก์ชันที่เพิ่มเข้ามาเหล่านี้คือการลงทะเบียน X-, Y- และ Z แบบ 16 บิตซึ่งอธิบายไว้ในส่วนนี้

ALU สนับสนุนการดำเนินการทางคณิตศาสตร์และตรรกะระหว่างรีจิสเตอร์หรือระหว่างค่าคงที่และรีจิสเตอร์ นอกจากนี้ยังสามารถดำเนินการลงทะเบียนเดี่ยวใน ALU หลังจากการดำเนินการทางคณิตศาสตร์การลงทะเบียนสถานะจะถูกอัพเดตเพื่อแสดงข้อมูลเกี่ยวกับผลลัพธ์ของการดำเนินการ

ผังรายการจัดทำโดยคำแนะนำการกระโดดและการโทรแบบมีเงื่อนไขและไม่มีเงื่อนไขสามารถระบุพื้นที่ที่อยู่ทั้งหมดได้โดยตรง คำแนะนำ AVR ส่วนใหญ่มีรูปแบบคำ 16 บิตเดียว แต่ยังมีคำแนะนำ 32 บิต

ในระหว่างการขัดจังหวะและการเรียกรูทีนย่อยที่อยู่ผู้ส่งคืน Program Counter (PC) จะถูกเก็บไว้ใน Stack Stack ได้รับการจัดสรรอย่างมีประสิทธิภาพใน SRAM ข้อมูลทั่วไปดังนั้นขนาด Stack จึงถูก จำกัด ด้วยขนาด SRAM ทั้งหมดและการใช้งาน SRAM โปรแกรมผู้ใช้ทั้งหมดต้องเตรียมใช้งาน SP ในรูทีนการรีเซ็ต (ก่อนที่จะเรียกใช้งานรูทีนย่อยหรืออินเทอร์รัปต์) Stack Pointer (SP) สามารถอ่าน / เขียนได้ในช่องว่าง I / O ข้อมูล SRAM สามารถเข้าถึงได้อย่างง่ายดายผ่านโหมดการกำหนดแอดเดรสห้าโหมดที่รองรับในสถาปัตยกรรม AVR

ช่องว่างหน่วยความจำในสถาปัตยกรรม AVR เป็นแผนที่หน่วยความจำแบบเชิงเส้นและแบบปกติทั้งหมด

โมดูลขัดจังหวะแบบยืดหยุ่นมีการควบคุมรีจิสเตอร์ในช่องว่าง I / O พร้อมบิตเปิดใช้งานการขัดจังหวะส่วนกลางเพิ่มเติมในการลงทะเบียนสถานะ อินเทอร์รัปต์ทั้งหมดมีอินเทอร์รัปต์เวกเตอร์แยกต่างหากในตารางอินเทอร์รัปต์เวกเตอร์ การขัดจังหวะมีลำดับความสำคัญตามตำแหน่งของเวกเตอร์ขัดจังหวะ ที่อยู่เวกเตอร์ขัดจังหวะยิ่งต่ำลำดับความสำคัญก็จะยิ่งสูงขึ้น

พื้นที่หน่วยความจำ I/O มี 64 แอดเดรสสำหรับฟังก์ชันต่อพ่วงของ CPU เช่น Control Registers, SPI และฟังก์ชัน I/O อื่นๆ สามารถเข้าถึงหน่วยความจำ I/O ได้โดยตรง หรือเป็นตำแหน่ง Data Space ถัดจาก Register File, 0x20 – 0x5F.

ALU - หน่วยลอจิกเลขคณิต

AVR ALU ประสิทธิภาพสูงทำงานโดยเชื่อมต่อโดยตรงกับรีจิสเตอร์การทำงานทั่วไป 32 รายการ ภายในรอบนาฬิกาเดียวการคำนวณทางคณิตศาสตร์ระหว่างรีจิสเตอร์วัตถุประสงค์ทั่วไปหรือระหว่างรีจิสเตอร์กับรีจิสเตอร์จะถูกดำเนินการทันที การดำเนินการ ALU แบ่งออกเป็นสามประเภทหลัก ได้แก่ ฟังก์ชันเลขคณิตตรรกะและบิต การใช้งานสถาปัตยกรรมบางอย่างยังมีตัวคูณที่ทรงพลังซึ่งรองรับทั้งการคูณที่ลงชื่อ / ไม่ได้ลงชื่อและรูปแบบเศษส่วน ดูส่วน "ชุดคำสั่ง" สำหรับคำอธิบายโดยละเอียด

ลงทะเบียนสถานะ

การลงทะเบียนสถานะมีข้อมูลเกี่ยวกับผลลัพธ์ของคำสั่งเลขคณิตที่ดำเนินการล่าสุด ข้อมูลนี้สามารถใช้สำหรับการปรับเปลี่ยนผังงานโปรแกรมเพื่อดำเนินการตามเงื่อนไข โปรดทราบว่าการลงทะเบียนสถานะได้รับการอัพเดตหลังจากการดำเนินการ ALU ทั้งหมดตามที่ระบุไว้ในการอ้างอิงชุดคำสั่ง ในหลาย ๆ กรณีจะช่วยลดความจำเป็นในการใช้คำแนะนำในการเปรียบเทียบโดยเฉพาะซึ่งส่งผลให้โค้ดเร็วขึ้นและกะทัดรัดมากขึ้น

การลงทะเบียนสถานะจะไม่ถูกจัดเก็บโดยอัตโนมัติเมื่อเข้าสู่ขั้นตอนการขัดจังหวะและเรียกคืนเมื่อกลับมาจากการขัดจังหวะ สิ่งนี้ต้องได้รับการจัดการโดยซอฟต์แวร์

SREG - การลงทะเบียนสถานะ AVR

การลงทะเบียนสถานะ AVR - SREG - ถูกกำหนดให้เป็น:

นิดหน่อย 7 6 5 4 3 2 1 0
0x3F I T H S V N Z C เอสเรก
อ่าน/เขียน อา/ว อา/ว อา/ว อา/ว อา/ว อา/ว อา/ว อา/ว
ค่าเริ่มต้น 0 0 0 0 0 0 0 0

บิต 7 - I: Global Interrupt Enable

ต้องตั้งค่าบิต Global Interrupt Enable เพื่อให้อินเตอร์รัปต์เปิดใช้งาน จากนั้นการควบคุมการเปิดใช้งานการขัดจังหวะแต่ละรายการจะถูกดำเนินการในการลงทะเบียนการควบคุมที่แยกจากกัน หากล้าง Global Interrupt Enable Register จะไม่มีการเปิดใช้งานอินเทอร์รัปต์ใด ๆ โดยไม่ขึ้นกับการตั้งค่าการเปิดใช้งานอินเตอร์รัปต์แต่ละรายการ 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

บิต 5 - H: แฟล็กพกพาครึ่งหนึ่ง

Half Carry Flag H หมายถึง Half Carry ในการคำนวณทางคณิตศาสตร์บางอย่าง Half Carry มีประโยชน์ในการคำนวณ BCD ดู "คำอธิบายชุดคำสั่ง" สำหรับข้อมูลโดยละเอียด

บิต 4 – S: ลงชื่อบิต, S = N ⊕ V

S-bit เป็นเอกสิทธิ์เฉพาะหรืออยู่ระหว่าง Negative Flag N กับทั้งสองส่วน Complement Overflow Flag ดู "คำอธิบายชุดคำสั่ง" สำหรับข้อมูลโดยละเอียด

บิต 3 - V: แฟล็กล้นส่วนเสริมของสอง

The Two's Complement Overflow Flag V รองรับการคำนวณทางคณิตศาสตร์ของสองส่วน ดู "คำอธิบายชุดคำสั่ง" สำหรับข้อมูลโดยละเอียด

บิต 2 - N: ค่าสถานะเชิงลบ

ค่าสถานะเชิงลบ N บ่งชี้ผลลัพธ์ที่เป็นลบในการดำเนินการทางคณิตศาสตร์หรือตรรกะ ดู "คำอธิบายชุดคำสั่ง" สำหรับข้อมูลโดยละเอียด

บิต 1 - Z: ค่าสถานะศูนย์

Zero Flag Z ระบุผลลัพธ์เป็นศูนย์ในการดำเนินการทางคณิตศาสตร์หรือตรรกะ ดู "คำอธิบายชุดคำสั่ง" สำหรับข้อมูลโดยละเอียด

บิต 0 - C: Carry Flag

Carry Flag C บ่งชี้การดำเนินการในการดำเนินการทางคณิตศาสตร์หรือตรรกะ ดู "คำอธิบายชุดคำสั่ง" สำหรับข้อมูลโดยละเอียด

ทะเบียนวัตถุประสงค์ทั่วไป File

การลงทะเบียน File ได้รับการปรับให้เหมาะสมสำหรับชุดคำสั่ง AVR Enhanced RISC เพื่อให้บรรลุประสิทธิภาพและความยืดหยุ่นตามที่กำหนด Register . รองรับรูปแบบอินพุต/เอาท์พุตต่อไปนี้ File:

ตัวถูกดำเนินการเอาต์พุต 8 บิตหนึ่งตัวและอินพุตผลลัพธ์ 8 บิตหนึ่งรายการ

ตัวถูกดำเนินการเอาต์พุต 8 บิตสองตัวและอินพุตผลลัพธ์ 8 บิตหนึ่งรายการ

ตัวถูกดำเนินการเอาต์พุต 8 บิตสองตัวและอินพุตผลลัพธ์ 16 บิตหนึ่งรายการ

ตัวถูกดำเนินการเอาต์พุต 16 บิตหนึ่งตัวและอินพุตผลลัพธ์ 16 บิตหนึ่งรายการ

รูปที่ 4-2 แสดงโครงสร้างของการลงทะเบียนการทำงานทั่วไป 32 รายการในซีพียู วัตถุประสงค์ทั่วไป

ตามที่แสดงใน รูปที่ 4-2การลงทะเบียนแต่ละครั้งยังถูกกำหนดที่อยู่หน่วยความจำข้อมูล โดยจับคู่โดยตรงไปยัง 32 ตำแหน่งแรกของ Data Space ของผู้ใช้ แม้ว่าจะไม่ได้ใช้งานจริงเป็นตำแหน่ง SRAM แต่การจัดระเบียบหน่วยความจำนี้ให้ความยืดหยุ่นอย่างมากในการเข้าถึงรีจิสเตอร์ เนื่องจากรีจิสเตอร์ X-, Y- และ Z-pointer สามารถตั้งค่าให้สร้างดัชนีรีจิสเตอร์ใดๆ ใน file. คำแนะนำการใช้งานส่วนใหญ่ในการลงทะเบียน File เข้าถึงทะเบียนทั้งหมดได้โดยตรง และส่วนใหญ่เป็นคำสั่งวงจรเดียว

X-register, Y-register และ Z-register

รีจิสเตอร์ R26..R31 มีฟังก์ชันเพิ่มเติมสำหรับการใช้งานทั่วไป รีจิสเตอร์เหล่านี้เป็นตัวชี้แอดเดรส 16 บิตสำหรับการระบุแอดเดรสทางอ้อมของพื้นที่ข้อมูล ที่อยู่ทางอ้อมสามรายการลงทะเบียน X, Y และ Z ถูกกำหนดตามที่อธิบายไว้ใน รูปที่ 4-3.

ลงทะเบียน

ในโหมดการกำหนดแอดเดรสที่แตกต่างกันรีจิสเตอร์ที่อยู่เหล่านี้มีฟังก์ชันเป็นการกระจัดคงที่การเพิ่มขึ้นอัตโนมัติและการลดลงอัตโนมัติ (ดูรายละเอียดในการอ้างอิงชุดคำสั่ง)

ตัวชี้สแต็ก

Stack ส่วนใหญ่จะใช้สำหรับการจัดเก็บข้อมูลชั่วคราวสำหรับการจัดเก็บตัวแปรในเครื่องและสำหรับการจัดเก็บที่อยู่ที่ส่งคืนหลังจากการขัดจังหวะและการเรียกรูทีนย่อย Stack Pointer Register จะชี้ไปที่ด้านบนสุดของ Stack เสมอ โปรดทราบว่า Stack ถูกนำไปใช้โดยเพิ่มขึ้นจากตำแหน่งหน่วยความจำที่สูงขึ้นไปยังตำแหน่งหน่วยความจำที่ต่ำกว่า นี่หมายความว่าคำสั่ง Stack PUSH ลด Stack Pointer

Stack Pointer ชี้ไปยังพื้นที่ข้อมูล SRAM Stack ซึ่งเป็นที่ตั้งของ Subroutine และ Interrupt Stacks พื้นที่สแตกนี้ในข้อมูล SRAM ต้องถูกกำหนดโดยโปรแกรมก่อนที่จะเรียกใช้รูทีนย่อยใด ๆ หรือเปิดใช้งานระหว่างรูปต์ ต้องตั้งค่า Stack Pointer ให้ชี้เหนือ 0x60 ตัวชี้สแต็กจะถูกลดลงเมื่อข้อมูลถูกผลักไปยังสแต็คด้วยคำสั่ง PUSH และจะลดลงด้วยสองเมื่อที่อยู่ที่ส่งกลับไปยังกองซ้อนด้วยการเรียกรูทีนย่อยหรือขัดจังหวะ Stack Pointer จะเพิ่มขึ้นทีละหนึ่งเมื่อข้อมูลถูกดึงออกจาก Stack ด้วยคำสั่ง POP และจะเพิ่มขึ้นทีละสองเมื่อข้อมูลถูกดึงออกจาก Stack โดยส่งกลับจากรูทีนย่อย RET หรือส่งคืนจาก interrupt RETI

AVR Stack Pointer ถูกนำไปใช้เป็นรีจิสเตอร์ 8 บิตสองตัวในพื้นที่ I / O จำนวนบิตที่ใช้จริงขึ้นอยู่กับการนำไปใช้งาน โปรดทราบว่าพื้นที่ข้อมูลในการใช้งานสถาปัตยกรรม AVR บางอย่างมีขนาดเล็กมากจนต้องใช้ SPL เท่านั้น ในกรณีนี้จะไม่มีการลงทะเบียน SPH

SPH และ SPL - การลงทะเบียนตัวชี้สแต็ก

นิดหน่อย 15 14 13 12 11 10 9 8
0x3E SP15 SP14 SP13 SP12 SP11 SP10 SP9 SP8 สพีเอช
0x3D SP7 SP6 SP5 SP4 SP3 SP2 SP1 SP0 เอสพีแอล
7 6 5 4 3 2 1 0
อ่าน/เขียน อา/ว อา/ว อา/ว อา/ว อา/ว อา/ว อา/ว อา/ว
อ่าน/เขียน อา/ว อา/ว อา/ว อา/ว อา/ว อา/ว อา/ว อา/ว
ค่าเริ่มต้น แรม แรม แรม แรม แรม แรม แรม แรม
ค่าเริ่มต้น แรม แรม แรม แรม แรม แรม แรม แรม

ระยะเวลาดำเนินการคำสั่ง

ส่วนนี้อธิบายแนวคิดเกี่ยวกับเวลาการเข้าถึงทั่วไปสำหรับการดำเนินการตามคำสั่ง AVR CPU ขับเคลื่อนโดยนาฬิกา CPU clkCPU ซึ่งสร้างขึ้นโดยตรงจากแหล่งสัญญาณนาฬิกาที่เลือกสำหรับชิป ไม่มีการใช้การแบ่งนาฬิกาภายใน

รูปที่ 4.4

รูปที่ 4-4 แสดงการดึงคำสั่งแบบขนานและการดำเนินการคำสั่งที่เปิดใช้งานโดยสถาปัตยกรรมฮาร์วาร์ดและ Register การเข้าถึงที่รวดเร็ว File แนวคิด. นี่คือแนวคิดการวางท่อพื้นฐานเพื่อให้ได้ 1 MIPS ต่อ MHz พร้อมผลลัพธ์ที่ไม่ซ้ำกันที่สอดคล้องกันสำหรับฟังก์ชันต่อต้นทุน ฟังก์ชันต่อนาฬิกา และฟังก์ชันต่อหน่วยพลังงาน

รูปที่ 4-5. การทำงานของ ALU รอบเดียว

รูปที่ 4.5

รีเซ็ตและขัดจังหวะการจัดการ

AVR มีแหล่งที่มาของการขัดจังหวะที่แตกต่างกันหลายแหล่ง อินเทอร์รัปต์เหล่านี้และเวกเตอร์รีเซ็ตที่แยกจากกันแต่ละตัวมีเวกเตอร์โปรแกรมแยกต่างหากในพื้นที่หน่วยความจำของโปรแกรม อินเทอร์รัปต์ทั้งหมดได้รับการกำหนดบิตเปิดใช้งานแต่ละรายการซึ่งต้องเขียนลอจิกร่วมกับบิต Global Interrupt Enable ในการลงทะเบียนสถานะเพื่อเปิดใช้งานการขัดจังหวะ

ที่อยู่ต่ำสุดในพื้นที่หน่วยความจำของโปรแกรมถูกกำหนดโดยค่าเริ่มต้นเป็นเวกเตอร์รีเซ็ตและขัดจังหวะ รายการเวกเตอร์ทั้งหมดจะแสดงใน “ อินเทอร์รัปต์” บนหน้าที่ 48. รายการนี้ยังกำหนดระดับความสำคัญของการขัดจังหวะที่แตกต่างกัน ที่อยู่ที่ต่ำกว่าคือระดับความสำคัญสูง RESET มีลำดับความสำคัญสูงสุดและถัดไปคือ INT0 - External Interrupt Request 0

เมื่อเกิดการขัดจังหวะ Global Interrupt Enable I-bit จะถูกล้างและการขัดจังหวะทั้งหมดจะถูกปิดใช้งาน ซอฟต์แวร์ของผู้ใช้สามารถเขียนลอจิกหนึ่งไปยัง I-bit เพื่อเปิดใช้งานอินเทอร์รัปต์ที่ซ้อนกัน การขัดจังหวะที่เปิดใช้งานทั้งหมดสามารถขัดจังหวะรูทีนอินเทอร์รัปต์ปัจจุบันได้ I-bit จะถูกตั้งค่าโดยอัตโนมัติเมื่อคำสั่ง Return from Interrupt - RETI - ถูกเรียกใช้งาน

โดยทั่วไปมีสองประเภทของการขัดจังหวะ ประเภทแรกถูกทริกเกอร์โดยเหตุการณ์ที่ตั้งค่าสถานะขัดจังหวะ สำหรับอินเทอร์รัปต์เหล่านี้ตัวนับโปรแกรมจะถูกเปลี่ยนเป็นเวกเตอร์ขัดจังหวะจริงเพื่อดำเนินการตามขั้นตอนการจัดการการขัดจังหวะและฮาร์ดแวร์จะล้างค่าสถานะอินเตอร์รัปต์ที่เกี่ยวข้อง อินเตอร์รัปต์แฟล็กยังสามารถล้างได้โดยการเขียนลอจิกหนึ่งไปยังตำแหน่งบิตแฟล็กที่จะล้าง หากเงื่อนไขการขัดจังหวะเกิดขึ้นในขณะที่มีการล้างบิตเปิดใช้งานการขัดจังหวะที่เกี่ยวข้องค่าสถานะขัดจังหวะจะถูกตั้งค่าและจดจำไว้จนกว่าจะเปิดใช้งานการขัดจังหวะหรือการตั้งค่าสถานะถูกล้างโดยซอฟต์แวร์ ในทำนองเดียวกันหากมีเงื่อนไขการขัดจังหวะอย่างน้อยหนึ่งเงื่อนไขเกิดขึ้นในขณะที่ล้างบิต Global Interrupt Enable ค่าสถานะการขัดจังหวะที่เกี่ยวข้องจะถูกตั้งค่าและจดจำไว้จนกว่าจะตั้งค่าบิต Global Interrupt Enable จากนั้นจะดำเนินการตามลำดับความสำคัญ

การขัดจังหวะประเภทที่สองจะทริกเกอร์ตราบเท่าที่มีเงื่อนไขการขัดจังหวะ การขัดจังหวะเหล่านี้ไม่จำเป็นต้องมีธงขัดจังหวะ หากเงื่อนไขการขัดจังหวะหายไปก่อนที่จะเปิดใช้งานการขัดจังหวะการขัดจังหวะจะไม่ถูกทริกเกอร์

เมื่อ AVR ออกจากอินเทอร์รัปต์มันจะกลับไปที่โปรแกรมหลักเสมอและดำเนินการคำสั่งอีกครั้งก่อนที่จะให้บริการอินเทอร์รัปต์ใด ๆ ที่รอดำเนินการ

โปรดทราบว่าการลงทะเบียนสถานะจะไม่ถูกจัดเก็บโดยอัตโนมัติเมื่อเข้าสู่ขั้นตอนการขัดจังหวะหรือเรียกคืนเมื่อกลับจากรูทีนอินเทอร์รัปต์ สิ่งนี้ต้องได้รับการจัดการโดยซอฟต์แวร์

เมื่อใช้คำสั่ง CLI เพื่อปิดใช้งานการขัดจังหวะ การขัดจังหวะจะถูกปิดใช้งานทันที ไม่มีการขัดจังหวะหลังจากคำสั่ง CLI แม้ว่าจะเกิดขึ้นพร้อมกันกับคำสั่ง CLI ตัวอย่างต่อไปนี้ampไฟล์แสดงให้เห็นว่าสามารถใช้เพื่อหลีกเลี่ยงการขัดจังหวะระหว่างลำดับการเขียน EEPROM ที่ตั้งเวลาไว้

รหัสแอสเซมบลีเช่นample
ใน r16, SREG ; เก็บค่า SREG

คลิ ; ปิดใช้งานการขัดจังหวะระหว่างลำดับเวลา

sbi EECR, EEMPE ; เริ่มเขียน EEPROM

sbi EECR, EEPE

ออก SREG, r16 ; คืนค่า SREG (I-bit)

รหัส C อดีตample
ถ่าน cSREG;

ซีเอสเรก = SREG; /* เก็บค่า SREG */

/* ปิดใช้งานการขัดจังหวะระหว่างลำดับเวลา */

_CLI ();

EECR |= (1<

EECR | = (1 <

SREG = ซีเอสเรก; /* กู้คืนค่า SREG (I-bit) */

เมื่อใช้คำสั่ง SEI เพื่อเปิดใช้งานการขัดจังหวะ คำสั่งที่ตามมา SEI จะถูกดำเนินการก่อนการขัดจังหวะที่ค้างอยู่ ดังที่แสดงในตัวอย่างนี้ampเล.

รหัสแอสเซมบลีเช่นample
เซ ; ตั้งค่า Global Interrupt Enable

นอน; เข้าสู่โหมดสลีปรอการขัดจังหวะ

; หมายเหตุ: จะเข้าสู่โหมดสลีปก่อนที่จะรอดำเนินการ

; ขัดจังหวะ

รหัส C อดีตample
_SEI(); /* ตั้งค่า Global Interrupt เปิดใช้งาน */

_นอน(); /* เข้าสู่โหมดสลีป รอการขัดจังหวะ */

/ * หมายเหตุ: จะเข้าสู่โหมดสลีปก่อนการขัดจังหวะที่รอดำเนินการใด ๆ * /

เวลาตอบสนองขัดจังหวะ

การตอบสนองการดำเนินการขัดจังหวะสำหรับการขัดจังหวะ AVR ที่เปิดใช้งานทั้งหมดคือสี่รอบนาฬิกาขั้นต่ำ หลังจากสี่รอบสัญญาณนาฬิกาที่อยู่ของโปรแกรมเวกเตอร์สำหรับรูทีนการจัดการขัดจังหวะจริงจะถูกดำเนินการ ในช่วงสี่รอบนาฬิกานี้ตัวนับโปรแกรมจะถูกผลักไปที่กอง โดยปกติเวกเตอร์จะกระโดดไปที่รูทีนอินเทอร์รัปต์และการกระโดดนี้ใช้เวลาสามรอบนาฬิกา หากการขัดจังหวะเกิดขึ้นระหว่างการดำเนินการของคำสั่งแบบหลายรอบคำสั่งนี้จะเสร็จสมบูรณ์ก่อนที่จะให้บริการขัดจังหวะ หากการขัดจังหวะเกิดขึ้นเมื่อ MCU อยู่ในโหมดสลีปเวลาตอบสนองการดำเนินการขัดจังหวะจะเพิ่มขึ้นสี่รอบนาฬิกา การเพิ่มขึ้นนี้เกิดขึ้นนอกเหนือจากเวลาเริ่มต้นจากโหมดสลีปที่เลือก

ผลตอบแทนจากกิจวัตรการจัดการขัดจังหวะจะใช้เวลาสี่รอบนาฬิกา ในช่วงสี่รอบนาฬิกานี้ตัวนับโปรแกรม (สองไบต์) จะถูกดึงกลับมาจากกองซ้อนตัวชี้สแต็กจะเพิ่มขึ้นทีละสองและมีการตั้งค่า I-bit ใน SREG

AVR ความทรงจำ

ส่วนนี้จะอธิบายถึงความทรงจำที่แตกต่างกันใน ATtiny25 / 45/85 สถาปัตยกรรม AVR มีพื้นที่หน่วยความจำหลักสองช่องหน่วยความจำข้อมูลและพื้นที่หน่วยความจำโปรแกรม นอกจากนี้ ATtiny25 / 45/85 ยังมีหน่วยความจำ EEPROM สำหรับจัดเก็บข้อมูล ช่องว่างหน่วยความจำทั้งสามเป็นแบบเส้นตรงและปกติ

หน่วยความจำโปรแกรมแฟลชที่ตั้งโปรแกรมได้ใหม่ในระบบ

ATtiny25 / 45/85 ประกอบด้วย 2/4 / 8K bytes On-chip In-System Reprogrammable Flash memory สำหรับอายุของโปรแกรม เนื่องจากคำแนะนำ AVR ทั้งหมดมีความกว้าง 16 หรือ 32 บิตแฟลชจึงจัดเป็น 1024/2048/4096 x 16

หน่วยความจำแฟลชมีความทนทานอย่างน้อย 10,000 รอบการเขียน / ลบ ATtiny25 / 45/85 Program Counter (PC) กว้าง 10/11/12 บิตจึงระบุตำแหน่งหน่วยความจำโปรแกรม 1024/2048/4096 “ โปรแกรมหน่วยความจำ - หมิง” ที่หน้า 147 มีคำอธิบายโดยละเอียดเกี่ยวกับการดาวน์โหลดข้อมูล Flash แบบอนุกรมโดยใช้หมุด SPI

ตารางคงที่สามารถจัดสรรได้ภายในพื้นที่แอดเดรสหน่วยความจำโปรแกรมทั้งหมด (ดูคำอธิบายคำแนะนำหน่วยความจำ LPM - Load Program)

รูปที่ 5-1 แผนผังหน่วยความจำโปรแกรม แผนที่หน่วยความจำ

หน่วยความจำข้อมูล SRAM

รูปที่ 5-2 แสดงวิธีการจัดระเบียบหน่วยความจำ SRAM ATtiny25 / 45/85

ตำแหน่งหน่วยความจำข้อมูลที่ต่ำกว่า 224/352/607 ที่อยู่ทั้ง Register File, หน่วยความจำ I/O และ SRAM ข้อมูลภายใน ที่ตั้ง 32 แห่งแรกอยู่ที่ Register File, 64 ตำแหน่งถัดไปจะเป็นหน่วยความจำ I/O มาตรฐาน และตำแหน่ง 128/256/512 ตำแหน่งสุดท้ายจะจัดการกับ SRAM ข้อมูลภายใน

โหมดการกำหนดแอดเดรสที่แตกต่างกันห้าโหมดสำหรับฝาปิดหน่วยความจำข้อมูล: ทางตรง ทางอ้อมพร้อมการแทนที่ ทางอ้อม ทางอ้อมพร้อมการลดค่าล่วงหน้า และทางอ้อมพร้อมการเพิ่มค่าภายหลัง ในทะเบียน Fileการลงทะเบียน R26 ถึง R31 มีการลงทะเบียนตัวชี้ที่อยู่ทางอ้อม

การกำหนดแอดเดรสโดยตรงจะเข้าถึงพื้นที่ข้อมูลทั้งหมด

โหมด Indirect with Displacement ถึง 63 ตำแหน่งแอดเดรสจากฐานแอดเดรสที่กำหนดโดย Y- หรือ Z- register

เมื่อใช้รีจิสเตอร์โหมดการกำหนดแอดเดรสทางอ้อมที่มีการเพิ่มก่อนลดและเพิ่มหลังอัตโนมัติแอดเดรสจะลงทะเบียน X, Y และ Z จะลดลงหรือเพิ่มขึ้น

รีจิสเตอร์ทำงานเอนกประสงค์ 32 ตัว รีจิสเตอร์ I/O 64 ตัว และ SRAM ข้อมูลภายในขนาด 128/256/512 ไบต์ใน ATtiny25/45/85 สามารถเข้าถึงได้ผ่านโหมดการกำหนดแอดเดรสเหล่านี้ทั้งหมด การลงทะเบียน File อธิบายไว้ใน “ Gen- การลงทะเบียนวัตถุประสงค์เชิงเอรัล File” บนหน้าที่ 10.

รูปที่ 5-2 แผนที่หน่วยความจำข้อมูล แผนผังหน่วยความจำ 2

การเข้าถึงหน่วยความจำข้อมูล ครั้ง

ส่วนนี้อธิบายแนวคิดเกี่ยวกับเวลาการเข้าถึงทั่วไปสำหรับการเข้าถึงหน่วยความจำภายใน การเข้าถึง SRAM ข้อมูลภายในดำเนินการในสองรอบ clkCPU ตามที่อธิบายไว้ใน รูปที่ 5-3.

รูปที่ 5-3 รอบการเข้าถึงข้อมูล SRAM บนชิป เกี่ยวกับข้อมูลชิป หน่วยความจำข้อมูล EEPROM

ATtiny25 / 45/85 ประกอบด้วยหน่วยความจำ EEPROM ขนาด 128/256/512 ไบต์ จัดเป็นพื้นที่ข้อมูลแยกต่างหากซึ่งสามารถอ่านและเขียนไบต์เดี่ยวได้ EEPROM มีความทนทานในการเขียน / ลบอย่างน้อย 100,000 รอบ การเข้าถึงระหว่าง EEPROM และ CPU มีการอธิบายไว้ดังต่อไปนี้โดยระบุ EEPROM Address Registers, EEPROM Data Register และ EEPROM Control Register สำหรับรายละเอียดโปรดดู “ การดาวน์โหลดแบบอนุกรม” บนหน้าที่ 151.

การเข้าถึงการอ่าน / เขียน EEPROM

EEPROM Access Registers สามารถเข้าถึงได้ในช่องว่าง I / O

เวลาเข้าถึงการเขียนสำหรับ EEPROM จะได้รับใน ตาราง 5-1 ในหน้า 21. อย่างไรก็ตาม ฟังก์ชันตั้งเวลาเองช่วยให้ซอฟต์แวร์ผู้ใช้ตรวจพบว่าเมื่อใดที่สามารถเขียนไบต์ถัดไปได้ หากรหัสผู้ใช้มีคำสั่งที่เขียน EEPROM ต้องใช้ความระมัดระวังบางประการ ในอุปกรณ์จ่ายไฟที่มีการกรองมาก VCC มีแนวโน้มที่จะเพิ่มขึ้นหรือลดลงอย่างช้าๆ

เพิ่ม/ลด. ทำให้อุปกรณ์ทำงานที่ระดับความดังในระยะเวลาหนึ่งtage ต่ำกว่าที่ระบุเป็นขั้นต่ำสำหรับความถี่สัญญาณนาฬิกาที่ใช้ ดู “ การป้องกันการทุจริต EEPROM” ที่หน้า 19 สำหรับรายละเอียดเกี่ยวกับวิธีหลีกเลี่ยงปัญหาในสถานการณ์เหล่านี้

เพื่อป้องกันการเขียน EEPROM โดยไม่ได้ตั้งใจต้องปฏิบัติตามขั้นตอนการเขียนเฉพาะ อ้างถึง “ ปรมาณู Byte Programming” บนหน้าที่ 17 และ “ การเขียนโปรแกรมแยกไบต์” บนหน้าที่ 17 สำหรับรายละเอียดเกี่ยวกับเรื่องนี้

เมื่ออ่าน EEPROM ซีพียูจะหยุดทำงานเป็นเวลาสี่รอบสัญญาณนาฬิกาก่อนที่คำสั่งถัดไปจะดำเนินการ เมื่อเขียน EEPROM ซีพียูจะหยุดทำงานเป็นเวลาสองรอบสัญญาณนาฬิกาก่อนที่คำสั่งถัดไปจะดำเนินการ

การเขียนโปรแกรม Atomic Byte

การใช้ Atomic Byte Programming เป็นโหมดที่ง่ายที่สุด เมื่อเขียนไบต์ไปยัง EEPROM ผู้ใช้จะต้องเขียนที่อยู่ลงใน EEAR Register และข้อมูลลงใน EEDR Register ถ้า EEPMn บิตเป็นศูนย์การเขียน EEPE (ภายในสี่รอบหลังจากเขียน EEMPE) จะทริกเกอร์การดำเนินการลบ / เขียน ทั้งวงจรการลบและการเขียนจะทำในการดำเนินการเดียวและกำหนดเวลาในการเขียนโปรแกรมทั้งหมด ตาราง 5-1 ในหน้า 21. บิต EEPE จะยังคงถูกตั้งค่าจนกว่าการดำเนินการลบและเขียนจะเสร็จสิ้น ในขณะที่อุปกรณ์กำลังยุ่งอยู่กับการเขียนโปรแกรมคุณจะไม่สามารถดำเนินการ EEPROM อื่น ๆ ได้

การเขียนโปรแกรมแยกไบต์

เป็นไปได้ที่จะแบ่งรอบการลบและเขียนเป็นสองการดำเนินการที่แตกต่างกัน สิ่งนี้อาจมีประโยชน์หากระบบต้องการเวลาในการเข้าถึงสั้น ๆ ในระยะเวลาที่จำกัด (โดยทั่วไปหากแหล่งจ่ายไฟ voltagอีตก) เพื่อเป็นการประ- tagของวิธีนี้ จำเป็นต้องลบตำแหน่งที่จะเขียนก่อนดำเนินการเขียน แต่เนื่องจากการดำเนินการลบและเขียนถูกแยกออก จึงเป็นไปได้ที่จะดำเนินการลบเมื่อระบบอนุญาตให้ดำเนินการตามเวลาที่สำคัญ (โดยทั่วไปหลังจากเปิดเครื่อง)

ลบ

ในการลบไบต์ต้องเขียนที่อยู่ไปที่ EEAR หากบิต EEPMn เป็น 0b01 การเขียน EEPE (ภายในสี่รอบหลังจากเขียน EEMPE) จะทริกเกอร์การดำเนินการลบเท่านั้น (เวลาในการเขียนโปรแกรมกำหนดไว้ใน ตารางที่ 5-1 บน หน้า 21). บิต EEPE จะยังคงถูกตั้งค่าจนกว่าการดำเนินการลบจะเสร็จสิ้น ในขณะที่อุปกรณ์กำลังตั้งโปรแกรมไม่ว่างคุณจะไม่สามารถดำเนินการ EEPROM อื่น ๆ ได้

เขียน

ในการเขียนตำแหน่งผู้ใช้ต้องเขียนที่อยู่ลงใน EEAR และข้อมูลลงใน EEDR ถ้าบิต EEPMn เป็น 0b10 การเขียน EEPE (ภายในสี่รอบหลังจากเขียน EEMPE) จะทริกเกอร์การดำเนินการเขียนเท่านั้น (กำหนดเวลาโปรแกรมใน ตาราง 5-1 ในหน้า 21). บิต EEPE จะยังคงถูกตั้งค่าจนกว่าการดำเนินการเขียนจะเสร็จสิ้น หากตำแหน่งที่จะเขียนไม่ได้ถูกลบออกก่อนเขียนข้อมูลที่จัดเก็บจะต้องถูกพิจารณาว่าสูญหาย ในขณะที่อุปกรณ์กำลังยุ่งอยู่กับการเขียนโปรแกรมคุณจะไม่สามารถดำเนินการ EEPROM อื่น ๆ ได้

Oscillator ที่ปรับเทียบแล้วใช้เพื่อกำหนดเวลาการเข้าถึง EEPROM ตรวจสอบให้แน่ใจว่าความถี่ของออสซิลเลเตอร์อยู่ในข้อกำหนดที่อธิบายไว้ใน “ OSCCAL - Oscillator Calibration Register” บนหน้าที่ 31.

รหัสต่อไปนี้exampไฟล์แสดงหนึ่งชุดประกอบและหนึ่งฟังก์ชัน C สำหรับลบ เขียน หรือเขียนแบบอะตอมของ EEPROM อดีตampทึกทักเอาเองว่าอินเตอร์รัปต์ถูกควบคุม (เช่น โดยการปิดการใช้งานอินเตอร์รัปต์ทั่วโลก) เพื่อไม่ให้เกิดการขัดจังหวะระหว่างการดำเนินการของฟังก์ชันเหล่านี้

รหัสแอสเซมบลีเช่นample
EEPROM_เขียน:

; รอให้เสร็จสิ้นการเขียนก่อนหน้านี้

sbic EECR,EEPE

rjmp EEPROM_write

; ตั้งค่าโหมดการเขียนโปรแกรม

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

ออก EECR, r16

; ตั้งค่าที่อยู่ (r18: r17) ในการลงทะเบียนที่อยู่

ออก EEARH, r18

ออก EEARL, r17

; เขียนข้อมูล (r19) ลงทะเบียนข้อมูล

ออก EEDR, r19

; เขียนตรรกะหนึ่งใน EEMPE

sbi EECR,EEMPE

; เริ่มเขียน eeprom โดยตั้งค่า EEPE

sbi EECR,EEPE

เกษียณ

รหัส C อดีตample
เป็นโมฆะ EEPROM_write (ถ่าน ucAddress ที่ไม่ได้ลงชื่อ, ถ่าน ucData ที่ไม่ได้ลงชื่อ)

{

/* รอให้การเขียนก่อนหน้าเสร็จสิ้น */ ในขณะที่(EECR & (1<

;

/* ตั้งค่าโหมดการเขียนโปรแกรม */

EECR = (0 <

/ * ตั้งค่าที่อยู่และการลงทะเบียนข้อมูล * / EEAR = ucAddress;

EEDR = ucData;

/* เขียนโลจิคัลหนึ่งไปยัง EEMPE */

EECR | = (1 <

/ * เริ่ม eeprom เขียนโดยตั้งค่า EEPE * /

EECR | = (1 <

}

รหัสถัดไปexamples แสดงการประกอบและฟังก์ชัน C สำหรับอ่าน EEPROM อดีตampสมมติว่ามีการควบคุมการขัดจังหวะเพื่อไม่ให้เกิดการขัดจังหวะระหว่างการดำเนินการของฟังก์ชันเหล่านี้

รหัสแอสเซมบลีเช่นample
EEPROM_อ่าน:

; รอให้เสร็จสิ้นการเขียนก่อนหน้านี้

sbic EECR,EEPE

rjmp EEPROM_read

; ตั้งค่าที่อยู่ (r18: r17) ในการลงทะเบียนที่อยู่

ออก EEARH, r18

ออก EEARL, r17

; เริ่มอ่าน eeprom โดยเขียน EERE

sbi EECR,อีเร

; อ่านข้อมูลจากการลงทะเบียนข้อมูล

ใน r16,EEDR

เกษียณ

รหัส C อดีตample
ถ่าน EEPROM_read ที่ไม่ได้ลงชื่อ (ถ่าน ucAddress ที่ไม่ได้ลงชื่อ)

{

/ * รอการเขียนก่อนหน้าเสร็จสิ้น * /

ในขณะที่ (EECR & (1 <

;

/ * ตั้งค่าการลงทะเบียนที่อยู่ * / EEAR = ucAddress;

/* เริ่มอ่าน eeprom โดยเขียน EERE */

EECR | = (1 <

/ * ส่งคืนข้อมูลจากการลงทะเบียนข้อมูล * /

คืน EEDR;

}

การป้องกันการทุจริต EEPROM

ในช่วงที่ VCC ต่ำ ข้อมูล EEPROM อาจเสียหายได้เนื่องจากปริมาณการจัดหาtage ต่ำเกินไปสำหรับ CPU และ EEPROM ที่จะทำงานอย่างถูกต้อง ปัญหาเหล่านี้เหมือนกับระบบระดับบอร์ดที่ใช้ EEPROM และควรใช้โซลูชันการออกแบบเดียวกัน

ความเสียหายของข้อมูล EEPROM อาจเกิดจากสองสถานการณ์เมื่อโวลtage ต่ำเกินไป ขั้นแรก ลำดับการเขียนปกติไปยัง EEPROM ต้องใช้ vol . ขั้นต่ำtage ทำงานได้อย่างถูกต้อง ประการที่สอง ตัว CPU เองสามารถรันคำสั่งอย่างไม่ถูกต้อง ถ้าแหล่งจ่าย voltagอีต่ำเกินไป

สามารถหลีกเลี่ยงความเสียหายของข้อมูล EEPROM ได้อย่างง่ายดายโดยทำตามคำแนะนำการออกแบบนี้:

ให้ AVR RESET ทำงาน (ต่ำ) ในช่วงเวลาที่แหล่งจ่ายไฟไม่เพียงพอ voltagอี ซึ่งสามารถทำได้โดยเปิดใช้งาน Brown-out Detector (BOD) ภายใน หากระดับการตรวจจับของ BOD ภายในไม่ตรงกับ

ระดับการตรวจจับที่จำเป็น สามารถใช้วงจรป้องกันการรีเซ็ต VCC ต่ำภายนอกได้ หากการรีเซ็ตเกิดขึ้นในขณะที่กำลังดำเนินการเขียนอยู่ การดำเนินการเขียนจะเสร็จสมบูรณ์โดยมีเงื่อนไขว่าแหล่งจ่ายไฟโวลtage ก็เพียงพอแล้ว

หน่วยความจำ 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 Registers ภายในช่วงแอดเดรส 0x00 - 0x1F สามารถเข้าถึงบิตได้โดยตรงโดยใช้คำแนะนำ SBI และ CBI ในการลงทะเบียนเหล่านี้สามารถตรวจสอบค่าของบิตเดี่ยวได้โดยใช้คำสั่ง SBIS และ SBIC ดูส่วนชุดคำสั่งสำหรับรายละเอียดเพิ่มเติม เมื่อใช้คำสั่งเฉพาะ I / O IN และ OUT ต้องใช้ที่อยู่ I / O 0x00 - 0x3F เมื่อกำหนดที่อยู่ I / O Registers เป็นพื้นที่ข้อมูลโดยใช้คำแนะนำ LD และ ST จะต้องเพิ่ม 0x20 ในที่อยู่เหล่านี้

เพื่อความเข้ากันได้กับอุปกรณ์ในอนาคตควรเขียนบิตที่สงวนไว้เป็นศูนย์หากมีการเข้าถึง ไม่ควรเขียนที่อยู่หน่วยความจำ I / O ที่สงวนไว้

ค่าสถานะสถานะบางส่วนจะถูกล้างโดยการเขียนโลจิคัลหนึ่งให้กับพวกเขา โปรดทราบว่าคำสั่ง CBI และ SBI จะทำงานบนบิตที่ระบุเท่านั้นดังนั้นจึงสามารถใช้กับรีจิสเตอร์ที่มีสถานะสถานะดังกล่าวได้ คำสั่ง CBI และ SBI ทำงานร่วมกับรีจิสเตอร์ 0x00 ถึง 0x1F เท่านั้น

การลงทะเบียนควบคุม I / O และอุปกรณ์ต่อพ่วงมีอธิบายไว้ในส่วนต่อไป

ลงทะเบียนคำอธิบาย

EEARH - ลงทะเบียนที่อยู่ EEPROM

นิดหน่อย 7 6 5 4 3 2 1 0
0x1F EEAR8 หู
อ่าน/เขียน R R R R R R R อา/ว
ค่าเริ่มต้น 0 0 0 0 0 0 0 เอ็กซ์/0

Bits 7: 1 - Res: Reserved Bits

บิตเหล่านี้สงวนไว้สำหรับการใช้งานในอนาคตและจะอ่านค่าเป็นศูนย์เสมอ

บิต 0 - EEAR8: ที่อยู่ EEPROM

นี่คือบิตแอดเดรส EEPROM ที่สำคัญที่สุดของ ATtiny85 ในอุปกรณ์ที่มี EEPROM น้อยเช่น ATtiny25 / ATtiny45 บิตนี้จะถูกสงวนไว้และจะอ่านค่าเป็นศูนย์เสมอ ค่าเริ่มต้นของ EEPROM Address Regis- ter (EEAR) ไม่ได้กำหนดไว้และต้องเขียนค่าที่เหมาะสมก่อนที่จะเข้าถึง EEPROM

EEARL - ลงทะเบียนที่อยู่ EEPROM

นิดหน่อย

0x1E EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0 EARL
ด้านหลัง / เขียน อา/ว อา/ว อา/ว อา/ว อา/ว อา/ว อา/ว อา/ว
ค่าเริ่มต้น X X X X X X X X

บิต 7 - EEAR7: ที่อยู่ EEPROM

นี่คือบิตแอดเดรส EEPROM ที่สำคัญที่สุดของ ATtiny45 ในอุปกรณ์ที่มี EEPROM น้อยเช่น ATtiny25 บิตนี้จะถูกสงวนไว้และจะอ่านค่าเป็นศูนย์เสมอ ค่าเริ่มต้นของ EEPROM Address Register (EEAR) ไม่ได้กำหนดไว้และต้องเขียนค่าที่เหมาะสมก่อนที่จะเข้าถึง EEPROM

บิต 6: 0 - EEAR [6: 0]: ที่อยู่ EEPROM

นี่คือบิต (ต่ำ) ของการลงทะเบียนที่อยู่ EEPROM ไบต์ข้อมูล EEPROM ได้รับการแก้ไขแบบเชิงเส้นในช่วง 0 … (128/256 / 512-1) ค่าเริ่มต้นของ EEAR ไม่ได้กำหนดไว้และต้องเขียนค่าที่เหมาะสมก่อนจึงจะเข้าถึง EEPROM ได้

EEDR - การลงทะเบียนข้อมูล EEPROM

นิดหน่อย 7 6 5 4 3 2 1 0
0x1D EEDR7 EEDR6 EEDR5 EEDR4 EEDR3 EEDR2 EEDR1 EEDR0 พศ
อ่าน/เขียน อา/ว อา/ว อา/ว อา/ว อา/ว อา/ว อา/ว อา/ว
ค่าเริ่มต้น 0 0 0 0 0 0 0 0

สำหรับการดำเนินการเขียน EEPROM EEDR Register มีข้อมูลที่จะเขียนไปยัง EEPROM ตามที่อยู่ที่กำหนดโดย EEAR Register สำหรับการดำเนินการอ่าน EEPROM EEDR มีข้อมูลที่อ่านจากไฟล์

EEPROM ตามที่อยู่ที่กำหนดโดย EEAR

 

5.5.4 EECR - ทะเบียนควบคุม EEPROM

บิต 7 6 5 4 3 2 1 0
0x1C        – อีพีเอ็ม1 อีพีเอ็ม0 น่าขนลุก อีเอ็มพี อีเป้ เอ๋ ศอ.บต
อ่าน / เขียน R R R / W อา/ว อา/ว อา/ว อา/ว อา/ว
ค่าเริ่มต้น 0 0 X X 0 0 X 0

Bit 7 - Res: Reserved Bit

บิตนี้สงวนไว้สำหรับการใช้งานในอนาคตและจะอ่านเป็น 0 เสมอใน ATtiny25 / 45/85 เพื่อความเข้ากันได้กับอุปกรณ์ AVR ในอนาคตให้เขียนบิตนี้เป็นศูนย์เสมอ หลังจากอ่านแล้วให้ปิดบังบิตนี้

Bit 6 - Res: Reserved Bit

บิตนี้สงวนไว้ใน ATtiny25 / 45/85 และจะอ่านค่าเป็นศูนย์เสมอ

บิต 5: 4 - EEPM [1: 0]: บิตโหมดการเขียนโปรแกรม EEPROM

การตั้งค่าบิตของโหมดการเขียนโปรแกรม EEPROM กำหนดการดำเนินการเขียนโปรแกรมที่จะถูกทริกเกอร์เมื่อเขียน EEPE เป็นไปได้ที่จะตั้งโปรแกรมข้อมูลในการดำเนินการอะตอมเดียว (ลบค่าเก่าและตั้งโปรแกรมค่าใหม่) หรือแยกการดำเนินการลบและเขียนออกเป็นสองการดำเนินการที่แตกต่างกัน เวลาในการเขียนโปรแกรมสำหรับโหมดต่างๆจะแสดงในรูปแบบ ตาราง 5-1. ในขณะที่ตั้งค่า EEPE การเขียนใด ๆ ไปยัง EEPMn จะถูกละเว้น ในระหว่างการรีเซ็ตบิต EEPMn จะถูกรีเซ็ตเป็น 0b00 เว้นแต่ว่า EEPROM กำลังยุ่งอยู่กับการเขียนโปรแกรม

ตารางที่ 5-1 บิตโหมด EEPROM

อีพีเอ็ม1 อีพีเอ็ม0 เวลาในการเขียนโปรแกรม การดำเนินการ
0 0 3.4 มิลลิวินาที ลบและเขียนในการดำเนินการเดียว (Atomic Operation)
0 1 1.8 มิลลิวินาที ลบเท่านั้น
1 0 1.8 มิลลิวินาที เขียนเท่านั้น
1 1 สงวนไว้สำหรับการใช้งานในอนาคต

บิต 3 - EERIE: EEPROM Ready Interrupt Enable

การเขียน EERIE เป็นหนึ่งจะเปิดใช้งาน EEPROM Ready Interrupt หากตั้งค่า I-bit ใน SREG การเขียน EERIE ให้เป็นศูนย์จะขัดขวางการขัดจังหวะ EEPROM Ready Interrupt จะสร้างการขัดจังหวะอย่างต่อเนื่องเมื่อหน่วยความจำแบบไม่ลบเลือนพร้อมสำหรับการเขียนโปรแกรม

บิต 2 - EEMPE: เปิดใช้งานโปรแกรม EEPROM Master

บิต EEMPE กำหนดว่าการเขียน EEPE เป็นหนึ่งจะมีผลหรือไม่

เมื่อตั้งค่า EEMPE แล้วการตั้งค่า EEPE ภายในสี่รอบนาฬิกาจะตั้งโปรแกรม EEPROM ตามที่อยู่ที่เลือก หาก EEMPE เป็นศูนย์การตั้งค่า EEPE จะไม่มีผล เมื่อ EEMPE ถูกเขียนโดยซอฟต์แวร์ฮาร์ดแวร์จะล้างบิตเป็นศูนย์หลังจากสี่รอบนาฬิกา

บิต 1 - EEPE: เปิดใช้งานโปรแกรม EEPROM

โปรแกรม EEPROM เปิดใช้งานสัญญาณ EEPE คือการตั้งโปรแกรมเปิดใช้งานสัญญาณไปยัง EEPROM เมื่อเขียน EEPE EEPROM จะถูกตั้งโปรแกรมตามการตั้งค่าบิต EEPMn ต้องเขียนบิต EEMPE เป็นหนึ่งก่อนที่จะเขียนตรรกะไปยัง EEPE มิฉะนั้นจะไม่มีการเขียน EEPROM เกิดขึ้น เมื่อหมดเวลาเข้าถึงการเขียนบิต EEPE จะถูกล้างโดยฮาร์ดแวร์ เมื่อตั้งค่า EEPE แล้ว CPU จะหยุดทำงานเป็นเวลาสองรอบก่อนที่จะดำเนินการคำสั่งถัดไป

บิต 0 - EERE: เปิดใช้งานการอ่าน EEPROM

EEPROM Read Enable Signal - EERE - คือไฟแฟลชที่อ่านไปยัง EEPROM เมื่อตั้งค่าที่อยู่ที่ถูกต้องในการลงทะเบียน EEAR บิต EERE จะต้องถูกเขียนลงในหนึ่งเพื่อทริกเกอร์การอ่าน EEPROM การเข้าถึงการอ่าน EEPROM ใช้คำสั่งเดียวและข้อมูลที่ร้องขอจะพร้อมใช้งานทันที เมื่ออ่าน EEPROM ซีพียูจะหยุดทำงานเป็นเวลาสี่รอบก่อนที่จะดำเนินการคำสั่งถัดไป ผู้ใช้ควรสำรวจบิต EEPE ก่อนเริ่มดำเนินการอ่าน หากการดำเนินการเขียนอยู่ระหว่างดำเนินการจะไม่สามารถอ่าน EEPROM หรือเปลี่ยน EEAR Register ได้

นาฬิการะบบและตัวเลือกนาฬิกา

ระบบนาฬิกาและการกระจาย

การกระจายนาฬิกา

นาฬิกา CPU

นาฬิกา CPU ถูกส่งไปยังส่วนต่างๆ ของระบบที่เกี่ยวข้องกับการทำงานของแกน AVR อดีตampไฟล์ของโมดูลดังกล่าวคือทะเบียนวัตถุประสงค์ทั่วไป File, การลงทะเบียนสถานะและหน่วยความจำข้อมูลที่ถือ Stack Pointer การหยุดนาฬิกาของ CPU จะขัดขวางไม่ให้แกนประมวลผลดำเนินการทั่วไปและการคำนวณ

นาฬิกา I / O - clkI / O

นาฬิกา I / O ถูกใช้โดยโมดูล I / O ส่วนใหญ่เช่น Timer / Counter โมดูลการขัดจังหวะภายนอกยังใช้นาฬิกา I / O แต่โปรดทราบว่าการขัดจังหวะภายนอกบางอย่างถูกตรวจพบโดยตรรกะแบบอะซิงโครนัสทำให้สามารถตรวจพบการขัดจังหวะดังกล่าวได้แม้ว่านาฬิกา I / O จะหยุดทำงานก็ตาม

นาฬิกาแฟลช - clkFLASH

นาฬิกาแฟลชควบคุมการทำงานของอินเทอร์เฟซแฟลช นาฬิกาแฟลชมักจะทำงานพร้อมกันกับนาฬิกา CPU

นาฬิกา ADC - clkADC

ADC มาพร้อมกับโดเมนนาฬิกาโดยเฉพาะ สิ่งนี้ช่วยให้หยุดการทำงานของ CPU และนาฬิกา I / O เพื่อลดสัญญาณรบกวนที่เกิดจากวงจรดิจิทัล สิ่งนี้ให้ผลลัพธ์การแปลง ADC ที่แม่นยำยิ่งขึ้น

PLL ภายในสำหรับการสร้างนาฬิกาอุปกรณ์ต่อพ่วงที่รวดเร็ว - clkPCK

PLL ภายในใน ATtiny25 / 45/85 สร้างความถี่สัญญาณนาฬิกาที่คูณ 8x จากอินพุตต้นทาง โดยค่าเริ่มต้น PLL จะใช้เอาต์พุตของออสซิลเลเตอร์ภายใน 8.0 MHz RC เป็นแหล่งที่มา หรืออีกวิธีหนึ่งถ้าบิต LSM ของ PLLCSR ถูกตั้งค่าไว้ PLL จะใช้เอาต์พุตของ RC oscillator หารด้วยสอง ดังนั้นเอาต์พุตของ PLL นาฬิกาอุปกรณ์ต่อพ่วงที่รวดเร็วคือ 64 MHz นาฬิกาอุปกรณ์ต่อพ่วงแบบเร็วหรือนาฬิกาที่กำหนดไว้ล่วงหน้าจากนั้นสามารถเลือกเป็นแหล่งสัญญาณนาฬิกาสำหรับ Timer / Counter1 หรือเป็นนาฬิการะบบ ดู รูปที่ 6-2. ความถี่ของนาฬิกาต่อพ่วงที่รวดเร็วจะถูกหารด้วยสองเมื่อตั้งค่า LSM ของ PLLCSR ทำให้ได้ความถี่สัญญาณนาฬิกาที่ 32 MHz โปรดทราบว่าไม่สามารถตั้งค่า LSM ได้หากใช้ PLLCLK เป็นนาฬิการะบบ

รูปที่ 6-2 ระบบตอกบัตร PCK. การตอกบัตร PCK

PLL ถูกล็อคบนออสซิลเลเตอร์ RC และการปรับออสซิลเลเตอร์ RC ผ่านการลงทะเบียน OSCCAL จะปรับนาฬิกาอุปกรณ์ต่อพ่วงที่รวดเร็วในเวลาเดียวกัน อย่างไรก็ตามแม้ว่า RC oscillator จะใช้ความถี่สูงกว่า 8 MHz ความถี่สัญญาณนาฬิกาอุปกรณ์ต่อพ่วงที่รวดเร็วจะอิ่มตัวที่ 85 MHz (กรณีเลวร้ายที่สุด) และยังคงสั่นอยู่ที่ความถี่สูงสุด ควรสังเกตว่า PLL ในกรณีนี้ไม่ได้ถูกล็อคด้วยนาฬิกา RC oscillator อีกต่อไป ดังนั้นจึงไม่แนะนำให้ทำการปรับ OSCCAL เป็นความถี่ที่สูงกว่า 8 MHz เพื่อให้ PLL อยู่ในช่วงการทำงานที่ถูกต้อง

PLL ภายในถูกเปิดใช้งานเมื่อ:

มีการตั้งค่าบิต PLLE ในการลงทะเบียน PLLCSR

ฟิวส์ CKSEL ถูกตั้งโปรแกรมไว้ที่ '0001'

ฟิวส์ CKSEL ถูกตั้งโปรแกรมไว้ที่ '0011'

PLOCK บิต PLLCSR ถูกตั้งค่าเมื่อ PLL ถูกล็อก ทั้ง RC oscillator ภายในและ PLL ถูกปิดในโหมดปิดเครื่องและโหมดสแตนด์บาย

PLL ภายในในโหมดความเข้ากันได้ ATtiny15

เนื่องจาก ATtiny25 / 45/85 เป็นอุปกรณ์การย้ายข้อมูลสำหรับผู้ใช้ ATtiny15 จึงมีโหมดความเข้ากันได้ของ ATtiny15 สำหรับความเข้ากันได้ของแบ็ควอร์ด โหมดความเข้ากันได้ของ ATtiny15 ถูกเลือกโดยการตั้งโปรแกรมฟิวส์ CKSEL เป็น '0011'

ในโหมดความเข้ากันได้ของ ATtiny15 ความถี่ของ RC oscillator ภายในจะถูกปรับเทียบลงมาที่ 6.4 MHz และตัวคูณการคูณของ PLL ถูกตั้งค่าเป็น 4x ดู รูปที่ 6-3. ด้วยการปรับเปลี่ยนเหล่านี้ระบบตอกบัตรเข้ากันได้กับ ATtiny15 และนาฬิกาอุปกรณ์ต่อพ่วงที่รวดเร็วที่ได้จะมีความถี่ 25.6 MHz (เช่นเดียวกับใน ATtiny15)

รูปที่ 6-3 ระบบตอกบัตร PCK ในโหมดความเข้ากันได้ของ ATtiny15 ระบบนาฬิกา

แหล่งที่มาของนาฬิกา

อุปกรณ์มีตัวเลือกแหล่งสัญญาณนาฬิกาดังต่อไปนี้ซึ่งสามารถเลือกได้ด้วยบิตแฟลชฟิวส์ดังที่แสดงด้านล่าง นาฬิกาจากแหล่งสัญญาณที่เลือกจะถูกป้อนไปยังเครื่องกำเนิดสัญญาณนาฬิกา AVR และส่งไปยังโมดูลที่เหมาะสม

ตารางที่ 6-1. เลือกตัวเลือกการตอกบัตรของอุปกรณ์

ตัวเลือกการตอกบัตรของอุปกรณ์ ซีเคเซล[3:0](1)
นาฬิกาภายนอก (ดู หน้า 26) 0000
นาฬิกา PLL ความถี่สูง (ดู หน้า 26) 0001
ปรับเทียบออสซิลเลเตอร์ภายใน (ดู หน้า 27) 0010(2)
ปรับเทียบออสซิลเลเตอร์ภายใน (ดู หน้า 27) 0011(3)
ออสซิลเลเตอร์ภายใน 128 kHz (ดู หน้า 28) 0100
ออสซิลเลเตอร์คริสตัลความถี่ต่ำ (ดู หน้า 29) 0110
Crystal Oscillator / Resonator เซรามิก (ดู หน้า 29) 1000 – 1111
ที่สงวนไว้ 0101, 0111

สำหรับฟิวส์“ 1” ทั้งหมดหมายถึงไม่มีโปรแกรมในขณะที่“ 0” หมายถึงโปรแกรม

อุปกรณ์มาพร้อมกับตัวเลือกนี้ที่เลือก

สิ่งนี้จะเลือกโหมดความเข้ากันได้ ATtiny15 ซึ่งนาฬิกาของระบบถูกหารด้วยสี่ทำให้เกิดความถี่สัญญาณนาฬิกา 1.6 MHz สำหรับข้อมูลเพิ่มเติมโปรดดู “ ออสซิลเลเตอร์ภายในที่ปรับเทียบแล้ว” บนหน้าที่ 27.

ตัวเลือกต่างๆสำหรับตัวเลือกการตอกบัตรแต่ละรายการมีให้ในส่วนต่อไปนี้ เมื่อ CPU ตื่นขึ้นจาก Power-down แหล่งสัญญาณนาฬิกาที่เลือกจะถูกใช้เพื่อตั้งเวลาเริ่มการทำงานเพื่อให้แน่ใจว่าการทำงานของ Oscillator มีความเสถียรก่อนที่จะเริ่มการทำงานของคำสั่ง เมื่อซีพียูเริ่มต้นจากการรีเซ็ตจะมีการหน่วงเวลาเพิ่มเติมเพื่อให้พลังงานถึงระดับที่เสถียรก่อนที่จะเริ่มการทำงานตามปกติ Watchdog Oscillator ใช้สำหรับกำหนดเวลาส่วนนี้แบบเรียลไทม์ของเวลาเริ่มต้น จำนวนรอบ WDT Oscillator ที่ใช้สำหรับการหมดเวลาแต่ละครั้งจะแสดงใน ตาราง 6-2.

ตารางที่ 6-2 จำนวนรอบของ Watchdog Oscillator

ประเภทหมดเวลา จำนวนรอบ
4 มิลลิวินาที 512
64 มิลลิวินาที 8K (8,192)

นาฬิกาภายนอก

ในการขับเคลื่อนอุปกรณ์จากแหล่งสัญญาณนาฬิกาภายนอก CLKI ควรขับเคลื่อนตามที่แสดงใน รูปที่ 6-4. ในการเรียกใช้อุปกรณ์บนนาฬิกาภายนอกต้องตั้งโปรแกรมฟิวส์ CKSEL เป็น“ 00”

รูปที่ 6-4 การกำหนดค่าไดรฟ์นาฬิกาภายนอก

รูปที่ 6.4

เมื่อเลือกแหล่งสัญญาณนาฬิกานี้เวลาเริ่มต้นจะถูกกำหนดโดยฟิวส์ SUT ดังที่แสดงใน ตาราง 6-3.

ตารางที่ 6-3 เวลาเริ่มต้นสำหรับการเลือกนาฬิกาภายนอก

ซูท[1:0] เวลาเริ่มต้นจาก Power-down ความล่าช้าเพิ่มเติมจากการรีเซ็ต วิธีใช้ที่แนะนำ
00 6 CK 14CK เปิดใช้งาน BOD
01 6 CK 14CK + 4 มิลลิวินาที พลังที่เพิ่มขึ้นอย่างรวดเร็ว
10 6 CK 14CK + 64 มิลลิวินาที พลังที่เพิ่มขึ้นอย่างช้าๆ
11 ที่สงวนไว้

เมื่อใช้นาฬิกาภายนอกจำเป็นต้องหลีกเลี่ยงการเปลี่ยนแปลงความถี่สัญญาณนาฬิกาที่ใช้อย่างกะทันหันเพื่อให้แน่ใจว่า MCU ทำงานได้อย่างมีเสถียรภาพ ความแปรผันของความถี่มากกว่า 2% จากหนึ่งนาฬิการอบถัดไปอาจนำไปสู่พฤติกรรมที่คาดเดาไม่ได้ จำเป็นต้องตรวจสอบให้แน่ใจว่า MCU ถูกเก็บไว้ในรีเซ็ตระหว่างการเปลี่ยนแปลงความถี่สัญญาณนาฬิกาดังกล่าว

โปรดทราบว่า System Clock Presale สามารถใช้เพื่อปรับใช้การเปลี่ยนแปลงเวลาทำงานของความถี่สัญญาณนาฬิกาภายในในขณะที่ยังคงให้การทำงานมีเสถียรภาพ อ้างถึง “ System Clock Prescaler” บนหน้าที่ 31 สำหรับรายละเอียดเพิ่มเติม

นาฬิกา PLL ความถี่สูง

มี PLL ภายในที่ให้อัตรานาฬิกา 64 MHz ตามปกติที่ล็อคไว้กับ RC Oscillator สำหรับการใช้ Peripheral Timer / Counter1 และสำหรับแหล่งสัญญาณนาฬิกาของระบบ เมื่อเลือกเป็นแหล่งสัญญาณนาฬิกาของระบบโดยการตั้งโปรแกรมให้ CKSEL ฟิวส์เป็น '0001' จะถูกหารด้วยสี่อย่างที่แสดงใน ตาราง 6-4.

ตารางที่ 6-4 โหมดการทำงานของนาฬิกา PLL ความถี่สูง

ซีเคเซล[3:0] ความถี่ที่กำหนด
0001 16 เมกะเฮิรตซ์

เมื่อเลือกแหล่งสัญญาณนาฬิกานี้เวลาเริ่มต้นจะถูกกำหนดโดยฟิวส์ SUT ดังที่แสดงใน ตาราง 6-5.

ตารางที่ 6-5. เวลาเริ่มต้นสำหรับนาฬิกา PLL ความถี่สูง

ซูท[1:0] เวลาเริ่มต้นจาก Power Down การหน่วงเวลาเพิ่มเติมจากการเปิดเครื่องใหม่ (VCC = 5.0V) การใช้งานที่แนะนำ
00 14CK + 1K (1024) CK + 4 มิลลิวินาที 4 มิลลิวินาที เปิดใช้งาน BOD

ตารางที่ 6-5. เวลาเริ่มต้นสำหรับนาฬิกา PLL ความถี่สูง

ซูท[1:0] เวลาเริ่มต้นจาก Power Down การหน่วงเวลาเพิ่มเติมจากการเปิดเครื่องใหม่ (VCC = 5.0V) การใช้งานที่แนะนำ
01 14CK + 16K (16384) CK + 4 มิลลิวินาที 4 มิลลิวินาที พลังที่เพิ่มขึ้นอย่างรวดเร็ว
10 14CK + 1K (1024) CK + 64 มิลลิวินาที 4 มิลลิวินาที พลังที่เพิ่มขึ้นอย่างช้าๆ
11 14CK + 16K (16384) CK + 64 มิลลิวินาที 4 มิลลิวินาที พลังที่เพิ่มขึ้นอย่างช้าๆ

ปรับเทียบออสซิลเลเตอร์ภายใน

ตามค่าเริ่มต้น Internal RC Oscillator จะให้นาฬิกาประมาณ 8.0 MHz แม้ว่า voltage และอุณหภูมิ นาฬิกานี้สามารถปรับเทียบได้อย่างแม่นยำโดยผู้ใช้ ดู “ ปรับเทียบ RC Oscillator ภายใน Accu- racy” ที่หน้า 164 และ “ Internal Oscillator Speed” ในหน้า 192 สำหรับรายละเอียดเพิ่มเติม อุปกรณ์มาพร้อมกับ CKDIV8 Fuse ที่ตั้งโปรแกรมไว้ ดู “ System Clock Prescaler” บนหน้าที่ 31 สำหรับรายละเอียดเพิ่มเติม

นาฬิกานี้อาจถูกเลือกเป็นนาฬิการะบบโดยการตั้งโปรแกรม CKSEL Fuses ดังที่แสดงใน ตารางที่ 6-6 ในหน้า

27. หากเลือกจะทำงานโดยไม่มีส่วนประกอบภายนอก ในระหว่างการรีเซ็ตฮาร์ดแวร์จะโหลดค่าการสอบเทียบที่ตั้งโปรแกรมไว้ล่วงหน้าลงใน OSCCAL Register จากนั้นจะปรับเทียบ RC Oscillator โดยอัตโนมัติ ความแม่นยำของการสอบเทียบนี้จะแสดงเป็นการสอบเทียบจากโรงงานใน ตาราง 21-2 ในหน้า 164.

โดยการเปลี่ยนทะเบียน OSCCAL จาก SW โปรดดูที่ “ OSCCAL - Oscillator Calibration Register” บนหน้าที่ 31เป็นไปได้ที่จะได้รับความแม่นยำในการสอบเทียบที่สูงกว่าการสอบเทียบจากโรงงาน ความแม่นยำของการสอบเทียบนี้จะแสดงเป็น User calibration in ตาราง 21-2 ในหน้า 164.

เมื่อใช้ออสซิลเลเตอร์นี้เป็นนาฬิกาชิป Watchdog Oscillator จะยังคงถูกใช้สำหรับตัวจับเวลา Watchdog และสำหรับรีเซ็ตการหมดเวลา สำหรับข้อมูลเพิ่มเติมเกี่ยวกับค่าการสอบเทียบที่ตั้งโปรแกรมไว้ล่วงหน้าโปรดดูที่ส่วน “ กาลี - ไบต์ bration” ในหน้า 150.

นอกจากนี้ยังสามารถตั้งค่าออสซิลเลเตอร์ภายในให้นาฬิกา 6.4 MHz ได้โดยเขียนฟิวส์ CKSEL เป็น“ 0011” ดังที่แสดงใน ตาราง 6-6 ด้านล่าง การตั้งค่านี้ใช้เป็นโหมดความเข้ากันได้ของ ATtiny15 และมีจุดมุ่งหมายเพื่อให้แหล่งสัญญาณนาฬิกาที่ปรับเทียบแล้วที่ 6.4 MHz เช่นเดียวกับ ATtiny15 ในโหมดความเข้ากันได้ ATtiny15 PLL ใช้ออสซิลเลเตอร์ภายในที่ทำงานที่ 6.4 MHz เพื่อสร้างสัญญาณนาฬิกาอุปกรณ์ต่อพ่วง 25.6 MHz สำหรับ Timer / Counter1 (ดู “ 8-bit Timer / Counter1 นิ้ว ATtiny15 Mode” บนหน้าที่ 95). โปรดทราบว่าในโหมดการทำงานนี้สัญญาณนาฬิกา 6.4 MHz จะถูกหารด้วยสี่เสมอโดยให้นาฬิการะบบ 1.6 MHz

ตารางที่ 6-6. โหมดการทำงานของ RC Oscillator ที่สอบเทียบภายใน

ซีเคเซล[3:0] ความถี่ที่กำหนด
0010(1) 8.0 เมกะเฮิรตซ์
0011(2) 6.4 เมกะเฮิรตซ์

อุปกรณ์มาพร้อมกับตัวเลือกนี้ที่เลือก

การตั้งค่านี้จะเลือกโหมดความเข้ากันได้ ATtiny15 ซึ่งนาฬิกาของระบบจะถูกหารด้วยสี่ทำให้ได้ความถี่สัญญาณนาฬิกา 1.6 MHz

เมื่อออสซิลเลเตอร์ภายใน 8 MHz ที่ปรับเทียบแล้วถูกเลือกเป็นแหล่งสัญญาณนาฬิกาเวลาเริ่มต้นจะถูกกำหนดโดยฟิวส์ SUT ดังที่แสดงใน ตาราง 6-7 ด้านล่าง.

ตารางที่ 6-7. เวลาเริ่มต้นสำหรับนาฬิกา RC Oscillator ที่สอบเทียบภายใน

ซูท[1:0] เวลาเริ่มต้นจาก Power-down ความล่าช้าเพิ่มเติมจากการรีเซ็ต (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 เวลาเริ่มต้นของโหมดความเข้ากันได้จะถูกกำหนดโดยฟิวส์ SUT ดังที่แสดงใน ตาราง 6-8 ด้านล่าง.

ตารางที่ 6-8. เวลาเริ่มต้นสำหรับนาฬิกา RC Oscillator ที่สอบเทียบภายใน (ในโหมด ATtiny15)

ซูท[1:0] เวลาเริ่มต้นจาก Power-down ความล่าช้าเพิ่มเติมจากการรีเซ็ต (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” บนหน้าที่ 24เปิด“ ตัวจับเวลา 8 บิต / ตัวนับ 1 ในโหมด ATtiny15” หน้า 95“ ข้อ จำกัด ของ debugWIRE” บนหน้าที่ 140“ Calibration Bytes” บนหน้าที่ 150 และในตาราง “ นาฬิกา Prescaler เลือก” ที่หน้า 33.

ออสซิลเลเตอร์ภายใน 128 kHz

Oscillator ภายใน 128 kHz เป็น Oscillator พลังงานต่ำที่ให้สัญญาณนาฬิกา 128 kHz ความถี่ถูกกำหนดไว้ที่ 3V และ 25°C อาจเลือกนาฬิกานี้เป็นนาฬิการะบบโดยการตั้งโปรแกรมฟิวส์ CKSEL เป็น “0100”

เมื่อเลือกแหล่งสัญญาณนาฬิกานี้เวลาเริ่มต้นจะถูกกำหนดโดยฟิวส์ SUT ดังที่แสดงใน ตาราง 6-9.

ตารางที่ 6-9. เวลาเริ่มต้นสำหรับออสซิลเลเตอร์ภายใน 128 kHz

ซูท[1:0] เวลาเริ่มต้นจาก Power-down ความล่าช้าเพิ่มเติมจากการรีเซ็ต วิธีใช้ที่แนะนำ
00 6 CK 14CK(1) เปิดใช้งาน BOD
01 6 CK 14CK + 4 มิลลิวินาที พลังที่เพิ่มขึ้นอย่างรวดเร็ว
10 6 CK 14CK + 64 มิลลิวินาที พลังที่เพิ่มขึ้นอย่างช้าๆ
11 ที่สงวนไว้

หมายเหตุ: หากตั้งโปรแกรมฟิวส์ RSTDISBL เวลาเริ่มต้นนี้จะเพิ่มขึ้นเป็น 14CK + 4 ms เพื่อให้แน่ใจว่าสามารถเข้าสู่โหมดการตั้งโปรแกรมได้

ออสซิลเลเตอร์คริสตัลความถี่ต่ำ

ในการใช้คริสตัลนาฬิกา 32.768 kHz เป็นแหล่งสัญญาณนาฬิกาสำหรับอุปกรณ์ต้องเลือก Crystal Oscillator ความถี่ต่ำโดยตั้งค่าฟิวส์ CKSEL เป็น '0110' ควรเชื่อมต่อคริสตัลตามที่แสดงใน รูปที่ 6-5. หากต้องการค้นหาความจุโหลดที่เหมาะสมสำหรับ crysal 32.768 kHz โปรดดูเอกสารข้อมูลของผู้ผลิต

เมื่อเลือกออสซิลเลเตอร์นี้เวลาเริ่มต้นจะถูกกำหนดโดยฟิวส์ SUT ดังที่แสดงใน ตาราง 6-10.

ตารางที่ 6-10. เวลาเริ่มต้นสำหรับการเลือกนาฬิกาคริสตัลออสซิลเลเตอร์ความถี่ต่ำ

ซูท[1:0] เวลาเริ่มต้นจาก Power Down ความล่าช้าเพิ่มเติมจากการรีเซ็ต (VCC = 5.0V) การใช้งานที่แนะนำ
00 1K (1024) ซีเค(1) 4 มิลลิวินาที เปิดใช้พลังงานหรือ BOD ที่เพิ่มขึ้นอย่างรวดเร็ว
01 1K (1024) ซีเค(1) 64 มิลลิวินาที พลังที่เพิ่มขึ้นอย่างช้าๆ
10 32K (32768) ซีเค 64 มิลลิวินาที ความถี่คงที่เมื่อเริ่มต้น
11 ที่สงวนไว้

หมายเหตุ: ควรใช้ตัวเลือกเหล่านี้เฉพาะเมื่อความเสถียรของความถี่เมื่อเริ่มต้นระบบไม่สำคัญ

Crystal Oscillator ความถี่ต่ำให้ความจุโหลดภายในดู ตาราง 6-11 ที่ TOSC แต่ละพิน

ตารางที่ 6-11. ความจุของ Crystal Oscillator ความถี่ต่ำ

อุปกรณ์ ออสการ์ 32 กิโลเฮิร์ตซ์ ประเภท หมวก (Xtal1 / Tosc1) หมวก (Xtal2 / Tosc2)
ATtiny25 / 45/85 ระบบ Osc. 16 พิกฟาเรนไฮต์ 6 พิกฟาเรนไฮต์

Crystal Oscillator / Resonator เซรามิก

XTAL1 และ XTAL2 เป็นอินพุตและเอาต์พุตตามลำดับของ inverting amplifier ซึ่งสามารถกำหนดค่าเพื่อใช้เป็น On-chip Oscillator ดังแสดงใน รูปที่ 6-5. อาจใช้คริสตัลควอตซ์หรือเครื่องสะท้อนเสียงเซรามิกก็ได้

C1 และ C2 ควรมีค่าเท่ากันเสมอสำหรับทั้งคริสตัลและรีโซเนเตอร์ ค่าที่เหมาะสมที่สุดของตัวเก็บประจุขึ้นอยู่กับคริสตัลหรือเรโซเนเตอร์ที่ใช้งาน ปริมาณของความจุสเตรนจ์ และสัญญาณรบกวนแม่เหล็กไฟฟ้าของสภาพแวดล้อม คำแนะนำเบื้องต้นสำหรับการเลือกตัวเก็บประจุสำหรับใช้กับคริสตัลมีระบุไว้ใน ตาราง 6-12 ด้านล่าง สำหรับเครื่องสะท้อนเสียงเซรามิกควรใช้ค่าตัวเก็บประจุที่กำหนดโดยผู้ผลิต

ตารางที่ 6-12. โหมดการทำงานของคริสตัลออสซิลเลเตอร์

ซีเคเซล[3:1] ช่วงความถี่ (MHz) ช่วงที่แนะนำสำหรับตัวเก็บประจุ C1 และ C2 สำหรับใช้กับคริสตัล (pF)
100(1) 0.4 – 0.9
101 0.9 – 3.0 12 – 22
110 3.0 – 8.0 12 – 22
111 8.0 – 12 – 22

หมายเหตุ: ตัวเลือกนี้ไม่ควรใช้กับคริสตัล ใช้กับตัวสะท้อนเสียงเซรามิกเท่านั้น

ออสซิลเลเตอร์สามารถทำงานได้ในสามโหมดที่แตกต่างกันซึ่งแต่ละโหมดได้รับการปรับให้เหมาะสมสำหรับช่วงความถี่เฉพาะ โหมดการทำงานถูกเลือกโดยฟิวส์ CKSEL [3: 1] ดังที่แสดงใน ตาราง 6-12.

ฟิวส์ CKSEL0 ร่วมกับ SUT [1: 0] ฟิวส์เลือกเวลาเริ่มต้นตามที่แสดงใน ตาราง 6-13.

ตารางที่ 6-13. เวลาเริ่มต้นสำหรับการเลือกนาฬิกา Crystal Oscillator

ซีเคเซล0 ซูท[1:0] เวลาเริ่มต้นจาก Power-down ความล่าช้าเพิ่มเติมจากการรีเซ็ต วิธีใช้ที่แนะนำ
0 00 258 CK(1) 14CK + 4 มิลลิวินาที เครื่องสะท้อนเสียงเซรามิกกำลังเพิ่มขึ้นอย่างรวดเร็ว
0 01 258 CK(1) 14CK + 64 มิลลิวินาที เครื่องสะท้อนเสียงเซรามิกกำลังเพิ่มขึ้นอย่างช้าๆ
0 10 1K (1024) ซีเค(2) 14CK เครื่องสะท้อนเสียงเซรามิกเปิดใช้งาน BOD
0 11 1K (1024) CK(2) 14CK + 4 มิลลิวินาที เครื่องสะท้อนเสียงเซรามิกกำลังเพิ่มขึ้นอย่างรวดเร็ว
1 00 1K (1024) CK(2) 14CK + 64 มิลลิวินาที เครื่องสะท้อนเสียงเซรามิกกำลังเพิ่มขึ้นอย่างช้าๆ
1 01 16K (16384) ซีเค 14CK Crystal Oscillator, เปิดใช้งาน BOD
1 10 16K (16384) ซีเค 14CK + 4 มิลลิวินาที Crystal Oscillator กำลังเพิ่มขึ้นอย่างรวดเร็ว
1 11 16K (16384) ซีเค 14CK + 64 มิลลิวินาที Crystal Oscillator กำลังเพิ่มขึ้นอย่างช้าๆ

หมายเหตุ

ควรใช้ตัวเลือกเหล่านี้เมื่อไม่ได้ทำงานใกล้เคียงกับความถี่สูงสุดของอุปกรณ์และเฉพาะในกรณีที่ความเสถียรของความถี่เมื่อเริ่มต้นระบบไม่สำคัญสำหรับแอปพลิเคชัน ตัวเลือกเหล่านี้ไม่เหมาะสำหรับคริสตัล

ตัวเลือกเหล่านี้มีไว้สำหรับใช้กับเครื่องสะท้อนเสียงเซรามิกและจะช่วยให้มั่นใจได้ถึงความเสถียรของความถี่เมื่อเริ่มต้น นอกจากนี้ยังสามารถใช้กับคริสตัลเมื่อไม่ได้ทำงานใกล้กับความถี่สูงสุดของอุปกรณ์และหากความเสถียรของความถี่เมื่อเริ่มต้นระบบไม่สำคัญสำหรับแอปพลิเคชัน

แหล่งสัญญาณนาฬิกาเริ่มต้น

อุปกรณ์มาพร้อมกับ CKSEL = “0010”, SUT = “10” และตั้งโปรแกรม CKDIV8 ดังนั้นการตั้งค่าแหล่งสัญญาณนาฬิกาเริ่มต้นจึงเป็น Oscillator RC ภายในที่ทำงานที่ 8 MHz โดยมีเวลาเริ่มต้นนานที่สุดและนาฬิการะบบเริ่มต้น prescaling 8 ส่งผลให้นาฬิการะบบ 1.0 MHz การตั้งค่าเริ่มต้นนี้ช่วยให้แน่ใจว่าผู้ใช้ทุกคนสามารถตั้งค่าแหล่งสัญญาณนาฬิกาที่ต้องการได้โดยใช้ In-System หรือ High-voltagอี โปรแกรมเมอร์

นาฬิการะบบ Prescaler

นาฬิการะบบ ATtiny25 / 45/85 สามารถแบ่งออกได้โดยการตั้งค่า “ CLKPR - Clock Prescale Register” บนหน้าที่ 32. คุณลักษณะนี้สามารถใช้เพื่อลดการใช้พลังงานเมื่อความต้องการพลังงานในการประมวลผลต่ำ สามารถใช้กับตัวเลือกแหล่งสัญญาณนาฬิกาทั้งหมด และจะส่งผลต่อความถี่สัญญาณนาฬิกาของ CPU และอุปกรณ์ต่อพ่วงแบบซิงโครนัสทั้งหมด clkI/O, clkADC, clkCPU และ clkFLASH หารด้วยปัจจัยดังที่แสดงใน ตาราง 6-15 ในหน้า 33.

เวลาการสลับ

เมื่อสลับไปมาระหว่างการตั้งค่าพรีสเกลเลอร์ตัวกำหนดเวลานาฬิการะบบจะช่วยให้มั่นใจได้ว่าไม่มีข้อผิดพลาดเกิดขึ้นในระบบนาฬิกาและไม่มีความถี่กลางสูงกว่าความถี่สัญญาณนาฬิกาที่ไม่ตรงกับการตั้งค่าก่อนหน้าหรือความถี่สัญญาณนาฬิกาที่สอดคล้องกับการตั้งค่าใหม่

ตัวนับการกระเพื่อมที่ใช้ Prescaler จะทำงานที่ความถี่ของนาฬิกาที่ไม่มีการแบ่งซึ่งอาจเร็วกว่าความถี่สัญญาณนาฬิกาของ CPU ดังนั้นจึงไม่สามารถระบุสถานะของ Prescaler ได้แม้ว่าจะสามารถอ่านได้และเวลาที่แน่นอนที่ใช้ในการเปลี่ยนจากการแบ่งนาฬิกาหนึ่งไปยังอีกเครื่องหนึ่งไม่สามารถคาดการณ์ได้อย่างแน่นอน

จากเวลาที่เขียนค่า CLKPS จะใช้เวลาระหว่าง T1 + T2 และ T1 + 2 * T2 ก่อนที่ความถี่สัญญาณนาฬิกาใหม่จะทำงาน ในช่วงเวลานี้จะมีการผลิตขอบนาฬิกาที่ใช้งานอยู่ 2 ตัว ในที่นี้ T1 คือช่วงเวลานาฬิกาก่อนหน้าและ T2 คือช่วงเวลาที่สอดคล้องกับการตั้งค่าตัวกำหนดตำแหน่งใหม่

บัฟเฟอร์เอาต์พุตนาฬิกา

อุปกรณ์สามารถส่งสัญญาณนาฬิการะบบออกทางขา CLKO (เมื่อไม่ได้ใช้เป็นขา XTAL2) ในการเปิดใช้งานเอาต์พุตต้องตั้งโปรแกรม CKOUT Fuse โหมดนี้เหมาะเมื่อใช้นาฬิกาชิปเพื่อขับเคลื่อนวงจรอื่น ๆ ในระบบ โปรดทราบว่านาฬิกาจะไม่ถูกส่งออกระหว่างการรีเซ็ตและการทำงานปกติของพิน I / O จะถูกแทนที่เมื่อตั้งโปรแกรมฟิวส์ สามารถเลือก RC Oscillator ภายใน, WDT Oscillator, PLL และนาฬิกาภายนอก (CLKI) ได้เมื่อนาฬิกาถูกส่งออกบน CLKO ไม่สามารถใช้คริสตัลออสซิลเลเตอร์ (XTAL1, XTAL2) สำหรับเอาต์พุตนาฬิกาบน CLKO หากใช้ System Clock Prescaler เป็นนาฬิการะบบที่แบ่งออกเป็นเอาต์พุต

ลงทะเบียนคำอธิบาย

OSCCAL - ทะเบียนสอบเทียบออสซิลเลเตอร์

นิดหน่อย 7 6 5 4 3 2 1 0
ขนาด 0x31 CAL7 CAL6 CAL5 CAL4 CAL3 CAL2 CAL1 CAL0 OSCCAL
อ่าน/เขียน อา/ว อา/ว อา/ว อา/ว อา/ว อา/ว อา/ว อา/ว

บิต 7: 0 - CAL [7: 0]: ค่าการปรับเทียบออสซิลเลเตอร์

Oscillator Calibration Register ใช้เพื่อตัดแต่ง Calibrated Internal RC Oscillator เพื่อลบความแตกต่างของกระบวนการออกจากความถี่ของออสซิลเลเตอร์ ค่าการสอบเทียบที่ตั้งโปรแกรมไว้ล่วงหน้าจะถูกเขียนลงในรีจิสเตอร์นี้โดยอัตโนมัติระหว่างการรีเซ็ตชิปโดยให้ความถี่ที่ปรับเทียบจากโรงงานตามที่ระบุไว้ใน ตาราง 21-2 ในหน้า 164. แอพพลิเคชั่นซอฟต์แวร์สามารถเขียนรีจิสเตอร์นี้เพื่อเปลี่ยนความถี่ออสซิลเลเตอร์ ออสซิลเลเตอร์สามารถปรับเทียบเป็นความถี่ตามที่ระบุไว้ใน ตาราง 21-2 ในหน้า 164. ไม่รับประกันการสอบเทียบนอกช่วงดังกล่าว

โปรดทราบว่าออสซิลเลเตอร์นี้ใช้เพื่อกำหนดเวลาการเข้าถึงการเขียน EEPROM และ Flash และเวลาในการเขียนเหล่านี้จะได้รับผลกระทบตามนั้น หากเขียน EEPROM หรือ Flash ห้ามปรับเทียบให้เกิน 8.8 MHz มิฉะนั้นการเขียน EEPROM หรือ Flash อาจล้มเหลว

บิต CAL7 กำหนดช่วงของการทำงานสำหรับออสซิลเลเตอร์ การตั้งค่าบิตนี้เป็น 0 จะให้ช่วงความถี่ต่ำสุดการตั้งค่าบิตนี้เป็น 1 จะให้ช่วงความถี่สูงสุด ช่วงความถี่สองช่วงทับซ้อนกันกล่าวคือการตั้งค่า OSCCAL = 0x7F ให้ความถี่สูงกว่า OSCCAL = 0x80

CAL [6: 0] บิตใช้เพื่อปรับความถี่ภายในช่วงที่เลือก การตั้งค่า 0x00 จะให้ความถี่ต่ำสุดในช่วงนั้นและการตั้งค่า 0x7F จะให้ความถี่สูงสุดในช่วงนั้น

เพื่อให้แน่ใจว่าการทำงานของ MCU มีเสถียรภาพควรเปลี่ยนค่าการสอบเทียบเล็กน้อย การเปลี่ยนแปลงความถี่มากกว่า 2% จากรอบหนึ่งไปอีกรอบอาจนำไปสู่พฤติกรรมที่คาดเดาไม่ได้ การเปลี่ยนแปลง OSCCAL ไม่ควรเกิน 0x20 สำหรับการสอบเทียบแต่ละครั้ง จำเป็นต้องตรวจสอบให้แน่ใจว่า MCU ถูกเก็บไว้ในรีเซ็ตระหว่างการเปลี่ยนแปลงความถี่สัญญาณนาฬิกาดังกล่าว

ตารางที่ 6-14. ช่วงความถี่ RC Oscillator ภายใน

ค่า OSCCAL ความถี่ต่ำสุดโดยทั่วไปตามความถี่ที่กำหนด ความถี่สูงสุดโดยทั่วไปตามความถี่ที่กำหนด
ขนาด 0x00 50% 100%
0x3F 75% 150%
0x7F 100% 200%

CLKPR - การลงทะเบียนนาฬิกา Prescale

นิดหน่อย 7 6 5 4 3 2 1 0
ขนาด 0x26 ซีแอลเคพีซีอี ซีแอลเคพีเอส3 ซีแอลเคพีเอส2 ซีแอลเคพีเอส1 ซีแอลเคพีเอส0 ซีแอลเคพีอาร์
อ่าน/เขียน อา/ว R R R อา/ว อา/ว อา/ว อา/ว

ค่าเริ่มต้น 0 0 0 0 ดูคำอธิบายบิต

บิต 7 - CLKPCE: นาฬิกา Prescaler เปลี่ยนเปิดใช้งาน

ต้องเขียนบิต CLKPCE เป็นลอจิกหนึ่งเพื่อเปิดใช้งานการเปลี่ยนแปลงบิต 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 ความเร็วของอุปกรณ์ต่อพ่วงซิงโครนัสทั้งหมดจะลดลงเมื่อใช้ตัวประกอบการแบ่ง ปัจจัยการหารจะได้รับใน ตาราง 6-15.

เพื่อหลีกเลี่ยงการเปลี่ยนแปลงความถี่สัญญาณนาฬิกาโดยไม่ได้ตั้งใจต้องปฏิบัติตามขั้นตอนการเขียนพิเศษเพื่อเปลี่ยนบิต CLKPS:

เขียน Clock Prescaler Change Enable (CLKPCE) เป็นบิตหนึ่งและบิตอื่น ๆ ทั้งหมดใน CLKPR เป็นศูนย์

ภายในสี่รอบให้เขียนค่าที่ต้องการไปยัง CLKPS ในขณะที่เขียนศูนย์ถึง CLKPCE

ต้องปิดการขัดจังหวะเมื่อเปลี่ยนการตั้งค่า Prescaler เพื่อให้แน่ใจว่าขั้นตอนการเขียนไม่ถูกขัดจังหวะ

ฟิวส์ CKDIV8 กำหนดค่าเริ่มต้นของบิต CLKPS หากไม่ได้ตั้งโปรแกรม CKDIV8 บิต CLKPS จะถูกรีเซ็ตเป็น “0000” หากตั้งโปรแกรม CKDIV8 ไว้ บิต CLKPS จะถูกรีเซ็ตเป็น “0011” โดยให้ตัวหารหารเป็นแปดเมื่อเริ่มต้น ควรใช้คุณสมบัตินี้หากแหล่งสัญญาณนาฬิกาที่เลือกมีความถี่สูงกว่าความถี่สูงสุดของอุปกรณ์ในสภาวะการทำงานปัจจุบัน โปรดทราบว่าสามารถเขียนค่าใดๆ ลงในบิต CLKPS โดยไม่คำนึงถึงการตั้งค่าฟิวส์ CKDIV8 ซอฟต์แวร์แอปพลิเคชันต้องแน่ใจว่ามีปัจจัยการแบ่งที่เพียงพอ

เลือกหากแหล่งสัญญาณนาฬิกาที่เลือกมีความถี่สูงกว่าความถี่สูงสุดของอุปกรณ์ ณ สภาวะการทำงานปัจจุบัน อุปกรณ์มาพร้อมกับ CKDIV8 Fuse ที่ตั้งโปรแกรมไว้

ตารางที่ 6-15. นาฬิกา Prescaler เลือก

ซีแอลเคพีเอส3 ซีแอลเคพีเอส2 ซีแอลเคพีเอส1 ซีแอลเคพีเอส0 ปัจจัยกองนาฬิกา
0 0 0 0 1
0 0 0 1 2
0 0 1 0 4
0 0 1 1 8
0 1 0 0 16
0 1 0 1 32
0 1 1 0 64
0 1 1 1 128
1 0 0 0 256
1 0 0 1 ที่สงวนไว้
1 0 1 0 ที่สงวนไว้
1 0 1 1 ที่สงวนไว้
1 1 0 0 ที่สงวนไว้
1 1 0 1 ที่สงวนไว้
1 1 1 0 ที่สงวนไว้
1 1 1 1 ที่สงวนไว้

หมายเหตุ: พรีสเกลเลอร์ถูกปิดใช้งานในโหมดความเข้ากันได้ของ ATtiny15 และไม่เขียนไปยัง CLKPR หรือการตั้งโปรแกรมฟิวส์ CKDIV8 ก็ไม่มีผลใดๆ ต่อนาฬิการะบบ (ซึ่งจะเป็น 1.6 MHz เสมอ)

การจัดการพลังงานและโหมดสลีป

ประสิทธิภาพสูงและประสิทธิภาพของรหัสชั้นนำของอุตสาหกรรมทำให้ไมโครคอนโทรลเลอร์ AVR เป็นตัวเลือกที่เหมาะสำหรับการใช้งานที่ใช้พลังงานต่ำ นอกจากนี้โหมดสลีปยังช่วยให้แอปพลิเคชันปิดโมดูลที่ไม่ได้ใช้งานใน MCU ซึ่งจะช่วยประหยัดพลังงาน AVR มีโหมดสลีปที่หลากหลายซึ่งช่วยให้ผู้ใช้สามารถปรับแต่งการใช้พลังงานตามความต้องการของแอพพลิเคชั่นได้

โหมดสลีป

รูปที่ 6-1 ในหน้า 23 นำเสนอระบบนาฬิกาที่แตกต่างกันและการจัดจำหน่ายใน ATtiny25 / 45/85 ตัวเลขนี้มีประโยชน์ในการเลือกโหมดสลีปที่เหมาะสม ตาราง 7-1 แสดงโหมดการนอนหลับที่แตกต่างกันและแหล่งที่มาของการตื่นนอน

ตารางที่ 7-1 โดเมนนาฬิกาที่ใช้งานและแหล่งปลุกในโหมดสลีปที่แตกต่างกัน

โดเมนนาฬิกาที่ใช้งานอยู่ ออสซิลเลเตอร์ แหล่งที่มาของการปลุก
โหมดสลีป clkCPU clkFLASH clkIO clkADC คลิ้กPCK แหล่งสัญญาณนาฬิกาหลักเปิดใช้งาน INT0 และ Pin Change SPM / EEPROM

พร้อม

 

USI สภาพเริ่มต้น

เอดีซี 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 ระดับการขัดจังหวะเท่านั้น

ในการเข้าสู่โหมดสลีปใด ๆ จากสามโหมดนี้บิต SE ใน MCUCR จะต้องเขียนเป็นลอจิกหนึ่งและต้องดำเนินการคำสั่ง SLEEP บิต SM [1: 0] ใน MCUCR Register จะเลือกโหมดสลีป (Idle, ADC Noise Reduction หรือ Power-down) ที่จะเปิดใช้งานโดยคำสั่ง SLEEP ดู ตาราง 7-2 สำหรับบทสรุป

หากการขัดจังหวะที่เปิดใช้งานเกิดขึ้นในขณะที่ MCU อยู่ในโหมดสลีป MCU จะตื่นขึ้น จากนั้น MCU จะหยุดเป็นเวลาสี่รอบนอกเหนือจากเวลาเริ่มต้น ดำเนินการรูทีนการขัดจังหวะ และดำเนินการดำเนินการต่อจากคำสั่งหลังจาก SLEEP เนื้อหาของการลงทะเบียน File และ SRAM จะไม่เปลี่ยนแปลงเมื่ออุปกรณ์ตื่นจากโหมดสลีป หากการรีเซ็ตเกิดขึ้นระหว่างโหมดสลีป MCU จะปลุกและดำเนินการจากเวกเตอร์รีเซ็ต

หมายเหตุ: หากใช้ระดับการขัดจังหวะที่ทริกเกอร์สำหรับการปลุก ระดับที่เปลี่ยนแปลงจะต้องถูกระงับไว้ระยะหนึ่งเพื่อปลุก MCU (และเพื่อให้ MCU เข้าสู่รูทีนบริการการขัดจังหวะ) ดู “ การขัดจังหวะภายนอก” บนหน้าที่ 49 สำหรับรายละเอียดเพิ่มเติม

โหมดไม่ได้ใช้งาน

เมื่อบิต SM[1:0] ถูกเขียนเป็น 00 คำสั่ง SLEEP จะทำให้ MCU เข้าสู่โหมดว่าง หยุด CPU แต่อนุญาตให้ Analog Comparator, ADC, USI, Timer/Counter, Watchdog และระบบขัดจังหวะทำงานต่อไป กิน. โหมดสลีปนี้โดยทั่วไปจะหยุด clkCPU และ clkFLASH ในขณะที่ปล่อยให้นาฬิกาอื่นทำงาน

โหมดไม่ได้ใช้งานช่วยให้ MCU สามารถปลุกจากอินเทอร์รัปต์ที่ทริกเกอร์ภายนอกรวมถึงอินเทอร์รัปต์ภายในเช่น Timer Overflow หากไม่จำเป็นต้องปลุกเครื่องจากการขัดจังหวะตัวเปรียบเทียบอนาล็อกเครื่องเปรียบเทียบอนาล็อกสามารถปิดการทำงานได้โดยการตั้งค่าบิต ACD ใน “ ACSR - การควบคุมตัวเปรียบเทียบแอนะล็อกและการลงทะเบียนสถานะ” บนหน้าที่ 120. ซึ่งจะช่วยลดการใช้พลังงานในโหมดปกติ หากเปิดใช้งาน ADC การแปลงจะเริ่มโดยอัตโนมัติเมื่อเข้าสู่โหมดนี้

โหมดลดเสียงรบกวน ADC

เมื่อบิต SM[1:0] ถูกเขียนไปที่ 01 คำสั่ง SLEEP จะทำให้ MCU เข้าสู่โหมดลดเสียงรบกวน ADC หยุด CPU แต่อนุญาตให้ ADC, การขัดจังหวะภายนอก และ Watchdog ทำงานต่อไป (หากเปิดใช้งาน) โหมดสลีปนี้จะหยุด clkI/O, clkCPU และ clkFLASH ในขณะที่ปล่อยให้นาฬิกาอื่นทำงาน

สิ่งนี้ช่วยปรับปรุงสภาพแวดล้อมเสียงรบกวนสำหรับ ADC ทำให้สามารถวัดความละเอียดได้สูงขึ้น หากเปิดใช้งาน ADC การแปลงจะเริ่มโดยอัตโนมัติเมื่อเข้าสู่โหมดนี้ นอกเหนือจากการขัดจังหวะ ADC Conversion Complete แล้วมีเพียงการรีเซ็ตภายนอก, การรีเซ็ต Watchdog, การรีเซ็ตเป็นสีน้ำตาล, การขัดจังหวะพร้อม SPM / EEPROM, การขัดจังหวะระดับภายนอกใน INT0 หรือการขัดจังหวะการเปลี่ยนพินสามารถปลุก MCU จากการลดสัญญาณรบกวน ADC โหมด.

โหมดปิดเครื่อง

เมื่อ SM [1: 0] บิตถูกเขียนถึง 10 คำสั่ง SLEEP จะทำให้ MCU เข้าสู่โหมด Power-down ในโหมดนี้ออสซิลเลเตอร์จะหยุดทำงานในขณะที่อินเทอร์รัปต์ภายนอกการตรวจจับสภาพเริ่มต้นของ USI และ Watchdog ยังคงทำงานต่อไป (หากเปิดใช้งาน) เฉพาะการรีเซ็ตภายนอก, การรีเซ็ต Watchdog, การรีเซ็ตเป็นสีน้ำตาล, การขัดจังหวะการเริ่มต้นของ USI, การขัดจังหวะระดับภายนอกใน INT0 หรือการขัดจังหวะการเปลี่ยนพินเท่านั้นที่สามารถปลุก MCU ได้ โหมดสลีปนี้จะหยุดนาฬิกาที่สร้างขึ้นทั้งหมดซึ่งอนุญาตให้ใช้งานโมดูลอะซิงโครนัสเท่านั้น

ปิดการใช้งานซอฟต์แวร์ BOD

เมื่อเครื่องตรวจจับสีน้ำตาลออก (BOD) ถูกเปิดใช้งานโดยฟิวส์ BODLEVEL (ดู ตาราง 20-4 ในหน้า 148) BOD กำลังตรวจสอบปริมาณอุปทานอย่างแข็งขันtage ในช่วงเวลาการนอนหลับ ในอุปกรณ์บางอย่างสามารถประหยัดพลังงานได้โดยการปิดใช้งาน BOD โดยซอฟต์แวร์ในโหมดปิดเครื่อง การใช้พลังงานในโหมดสลีปจะอยู่ที่ระดับเดียวกับเมื่อฟิวส์ปิดใช้ 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) ของ MCU Control Register โปรดดูที่ “ MCUCR - การควบคุม MCU ลงทะเบียน” ที่หน้า 37. การเขียนบิตนี้เป็นหนึ่งจะปิด BOD ใน Power-Down ในขณะที่การเขียนศูนย์จะทำให้ BOD ทำงานอยู่ การตั้งค่าเริ่มต้นคือศูนย์กล่าวคือ BOD ใช้งานอยู่

การเขียนไปยังบิต BODS ถูกควบคุมโดยลำดับเวลาและบิตเปิดใช้งานโปรดดู “ MCUCR - MCU Control Regis- ตรี” ที่หน้า 37.

ข้อจำกัด

มีการนำฟังก์ชันการปิดใช้งาน BOD มาใช้ในอุปกรณ์ต่อไปนี้เท่านั้น:

ATtiny25, การแก้ไข E และใหม่กว่า

ATtiny45, การแก้ไข D และใหม่กว่า

ATtiny85, การแก้ไข C และใหม่กว่า

การแก้ไขจะถูกทำเครื่องหมายบนแพ็คเกจอุปกรณ์และสามารถระบุได้ดังนี้:

ด้านล่างของแพ็คเกจ 8P3 และ 8S2

ด้านบนของแพ็คเกจ 20M1

ลงทะเบียนลดกำลัง

Power Reduction Register (PRR) โปรดดู “ PRR - Power Reduction Register” บนหน้าที่ 38ให้วิธีการลดการใช้พลังงานโดยการหยุดนาฬิกาไปที่อุปกรณ์ต่อพ่วงแต่ละชิ้น สถานะปัจจุบันของอุปกรณ์ต่อพ่วงค้างและไม่สามารถอ่านหรือเขียน I / O รีจิสเตอร์ได้ ทรัพยากรที่ใช้โดยอุปกรณ์ต่อพ่วงเมื่อหยุดนาฬิกาจะยังคงถูกใช้งานอยู่ดังนั้นในกรณีส่วนใหญ่อุปกรณ์ต่อพ่วงควรถูกปิดใช้งานก่อนที่จะหยุดนาฬิกา การปลุกโมดูลซึ่งทำได้โดยการล้างบิตใน PRR ทำให้โมดูลอยู่ในสถานะเดียวกับก่อนที่จะปิดเครื่อง

การปิดโมดูลสามารถใช้ในโหมด Idle และโหมด Active เพื่อลดการใช้พลังงานโดยรวมได้อย่างมาก ในโหมดสลีปอื่น ๆ นาฬิกาจะหยุดอยู่แล้ว ดู “ จ่ายกระแสของโมดูล I / O” บนหน้าที่ 177 สำหรับอดีตampเลส.

ลดการใช้พลังงาน

มีหลายประเด็นที่ต้องพิจารณาเมื่อพยายามลดการใช้พลังงานในระบบควบคุม AVR โดยทั่วไปควรใช้โหมดสลีปให้มากที่สุดและควรเลือกโหมดสลีปเพื่อให้ฟังก์ชันของอุปกรณ์ทำงานน้อยที่สุดเท่าที่จะเป็นไปได้ ควรปิดการใช้งานฟังก์ชันทั้งหมดที่ไม่จำเป็น โดยเฉพาะอย่างยิ่งโมดูลต่อไปนี้อาจต้องได้รับการพิจารณาเป็นพิเศษเมื่อพยายามใช้พลังงานให้น้อยที่สุดเท่าที่จะเป็นไปได้

เครื่องแปลงอนาล็อกเป็นดิจิตอล

หากเปิดใช้งาน ADC จะเปิดใช้งานในโหมดสลีปทั้งหมด เพื่อประหยัดพลังงานควรปิด ADC ก่อนเข้าสู่โหมดสลีปใด ๆ เมื่อปิดและเปิด ADC อีกครั้งการแปลงครั้งต่อไปจะเป็นการแปลงเพิ่มเติม อ้างถึง “ ตัวแปลงอนาล็อกเป็นดิจิตอล” ที่หน้า 122 สำหรับรายละเอียดเกี่ยวกับการทำงานของ ADC

ตัวเปรียบเทียบอนาล็อก

เมื่อเข้าสู่โหมดปกติ ตัวเปรียบเทียบอนาล็อกควรถูกปิดใช้งานหากไม่ได้ใช้งาน เมื่อเข้าสู่โหมด ADC Noise Reduction ควรปิดการใช้งาน Analog Comparator ในโหมดสลีปอื่นๆ Analog Comparator จะถูกปิดใช้งานโดยอัตโนมัติ อย่างไรก็ตาม หาก Analog Comparator ถูกตั้งค่าให้ใช้ Internal Voltage การอ้างอิงเป็นอินพุต ตัวเปรียบเทียบอนาล็อกควรปิดใช้งานในโหมดสลีปทั้งหมด มิฉะนั้น Internal Voltage Reference จะเปิดใช้งานโดยไม่ขึ้นกับโหมดสลีป อ้างถึง “ ตัวเปรียบเทียบแบบอะนาล็อก” บนหน้าที่ 119 สำหรับรายละเอียดเกี่ยวกับวิธีกำหนดค่า Analog Comparator

เครื่องตรวจจับสีน้ำตาลออก

หากไม่จำเป็นต้องใช้เครื่องตรวจจับสีน้ำตาลในแอปพลิเคชันควรปิดโมดูลนี้ หาก BODLEVEL Fuses ตัวตรวจจับสีน้ำตาลเปิดใช้งานเครื่องตรวจจับจะเปิดใช้งานในโหมดสลีปทั้งหมดดังนั้นจึงใช้พลังงานเสมอ ในโหมดการนอนหลับที่ลึกขึ้นสิ่งนี้จะส่งผลอย่างมากต่อการบริโภคกระแสไฟฟ้าทั้งหมด ดู “ สีน้ำตาลออก Detec- tion” ที่หน้า 41 และ “ Software BOD Disable” บนหน้าที่ 35 สำหรับรายละเอียดเกี่ยวกับวิธีกำหนดค่า Brown-out Detector

ฉบับภายในtage อ้างอิง

ฉบับภายในtage การอ้างอิงจะเปิดใช้งานเมื่อจำเป็นโดยการตรวจจับ Brown-out, Analog Comparator หรือ ADC หากโมดูลเหล่านี้ถูกปิดใช้งานตามที่อธิบายไว้ในหัวข้อข้างต้น vol . ภายในtagการอ้างอิง e จะถูกปิดใช้งานและจะไม่ใช้พลังงาน เมื่อเปิดใช้งานอีกครั้ง ผู้ใช้ต้องอนุญาตให้การอ้างอิงเริ่มต้นขึ้นก่อนที่จะใช้เอาต์พุต หากการอ้างอิงอยู่ในโหมดสลีป เอาต์พุตจะสามารถใช้งานได้ทันที อ้างถึง “ภายในเล่มtage อ้างอิง” บนหน้าที่ 42 สำหรับรายละเอียดเกี่ยวกับเวลาเริ่มต้น

ตัวจับเวลาเฝ้าระวัง

หากไม่จำเป็นต้องใช้ตัวจับเวลา Watchdog ในแอปพลิเคชันควรปิดโมดูลนี้ หากเปิดใช้งาน Watchdog Timer จะเปิดใช้งานในโหมดสลีปทั้งหมดดังนั้นจึงใช้พลังงานเสมอ ในโหมดการนอนหลับที่ลึกขึ้นสิ่งนี้จะมีส่วนอย่างมากต่อการใช้กระแสไฟฟ้าทั้งหมด อ้างถึง “ Watchdog Timer” บนหน้าที่ 42 สำหรับรายละเอียดเกี่ยวกับวิธีกำหนดค่า Watchdog Timer

พินพอร์ต

เมื่อเข้าสู่โหมดสลีป ควรกำหนดค่าพินพอร์ตทั้งหมดให้ใช้พลังงานขั้นต่ำ สิ่งที่สำคัญที่สุดคือต้องแน่ใจว่าไม่มีพินใดขับเคลื่อนโหลดตัวต้านทาน ในโหมดสลีปที่ทั้งนาฬิกา I/O (clkI/O) และนาฬิกา ADC (clkADC) หยุดทำงาน บัฟเฟอร์อินพุตของอุปกรณ์จะถูกปิดใช้งาน สิ่งนี้ทำให้มั่นใจได้ว่าจะไม่มีการใช้พลังงาน

ด้วยตรรกะการป้อนข้อมูลเมื่อไม่จำเป็น ในบางกรณีจำเป็นต้องใช้ตรรกะการป้อนข้อมูลเพื่อตรวจจับเงื่อนไขการปลุกและ

จากนั้นจะเปิดใช้งาน อ้างถึงส่วน “ เปิดใช้งานอินพุตดิจิทัลและโหมดสลีป” บนหน้าที่ 57 สำหรับรายละเอียดว่าพินใดบ้างที่เปิดใช้งาน หากเปิดใช้งานบัฟเฟอร์อินพุตและสัญญาณอินพุตปล่อยลอยอยู่หรือมีระดับสัญญาณอะนาล็อกใกล้เคียงกับ VCC/2 บัฟเฟอร์อินพุตจะใช้พลังงานมากเกินไป

สำหรับพินอินพุตแบบอะนาล็อก ควรปิดใช้งานบัฟเฟอร์อินพุตดิจิทัลตลอดเวลา ระดับสัญญาณอะนาล็อกใกล้กับ VCC/2 บนขาอินพุตอาจทำให้เกิดกระแสที่มีนัยสำคัญแม้ในโหมดแอ็คทีฟ บัฟเฟอร์อินพุตดิจิทัลสามารถปิดใช้งานได้โดยการเขียนไปยัง Digital Input Disable Register (DIDR0) อ้างถึง “ DIDR0 - Digital Input Disable Register 0” บนหน้าที่ 121 สำหรับรายละเอียดเพิ่มเติม

ลงทะเบียนคำอธิบาย

MCUCR - ทะเบียนควบคุม MCU

MCU Control Register มีบิตควบคุมสำหรับการจัดการพลังงาน

นิดหน่อย 7 6 5 4 3 2 1 0
ขนาด 0x35 บอดส์ พุดดิ้ง SE เอสเอ็ม1 เอสเอ็ม0 ร่างกาย ISC01 ISC00 มจร
อ่าน/เขียน R อา/ว อา/ว อา/ว อา/ว R อา/ว อา/ว
ค่าเริ่มต้น 0 0 0 0 0 0 0 0

บิต 7 - BODS: BOD Sleep

ฟังก์ชันการปิดใช้งาน BOD มีให้ใช้งานในอุปกรณ์บางรุ่นเท่านั้น ดู “ ข้อ จำกัด ” ในหน้า 36.

เพื่อปิดใช้งาน BOD ระหว่างการนอนหลับ (ดู ตาราง 7-1 ในหน้า 34) บิต BODS ต้องเขียนเป็นลอจิกหนึ่ง สิ่งนี้ถูกควบคุมโดยลำดับเวลาและบิตเปิดใช้งาน BODSE ใน MCUCR ขั้นแรกต้องตั้งค่าทั้ง BODS และ BODSE เป็นหนึ่ง ประการที่สองภายในสี่รอบนาฬิกาต้องตั้งค่า BODS เป็นหนึ่งและ BODSE ต้องตั้งค่าเป็นศูนย์ บิต BODS ใช้งานได้สามรอบนาฬิกาหลังจากตั้งค่าแล้ว ต้องดำเนินการคำสั่งการนอนหลับในขณะที่ BODS ทำงานอยู่เพื่อปิด BOD สำหรับโหมดสลีปจริง บิต BODS จะถูกล้างโดยอัตโนมัติหลังจากสามรอบนาฬิกา

ในอุปกรณ์ที่ไม่ได้ใช้งาน Sleeping BOD บิตนี้จะไม่ได้ใช้งานและจะอ่านค่าเป็นศูนย์เสมอ

บิต 5 - SE: เปิดใช้งานโหมดสลีป

ต้องเขียนบิต SE ลงในลอจิกหนึ่งเพื่อทำให้ MCU เข้าสู่โหมดสลีปเมื่อดำเนินการคำสั่ง SLEEP เพื่อหลีกเลี่ยงไม่ให้ MCU เข้าสู่โหมดสลีป เว้นแต่จะเป็นจุดประสงค์ของโปรแกรมเมอร์ ขอแนะนำให้เขียนบิต Sleep Enable (SE) ก่อนดำเนินการตามคำสั่ง SLEEP และล้างทันทีหลังจากตื่น

บิต 4: 3 - SM [1: 0]: โหมดสลีปเลือกบิต 1 และ 0

บิตเหล่านี้เลือกระหว่างโหมดสลีปที่มีอยู่สามโหมดดังที่แสดงใน ตาราง 7-2.

ตารางที่ 7-2 เลือกโหมดสลีป

เอสเอ็ม1 เอสเอ็ม0 โหมดสลีป
0 0 ว่างงาน
0 1 การลดสัญญาณรบกวน ADC
1 0 อำนาจลง
1 1 ที่สงวนไว้

บิต 2 - BODSE: BOD Sleep Enable

ฟังก์ชันการปิดใช้งาน BOD มีให้ใช้งานในอุปกรณ์บางรุ่นเท่านั้น ดู “ ข้อ จำกัด ” ในหน้า 36.

บิต BODSE เปิดใช้งานการตั้งค่าของบิตควบคุม BODS ตามที่อธิบายไว้ในคำอธิบายบิต BODS การปิดใช้งาน BOD ถูกควบคุมโดยลำดับเวลา

บิตนี้ไม่ได้ใช้ในอุปกรณ์ที่ไม่ได้ใช้งานการปิดใช้งานซอฟต์แวร์ BOD และจะอ่านค่าเป็นศูนย์ในอุปกรณ์เหล่านั้น

PRR - ทะเบียนการลดกำลัง

การลงทะเบียนการลดพลังงานเป็นวิธีการลดการใช้พลังงานโดยอนุญาตให้ปิดการใช้งานซิกนัลนาฬิกาอุปกรณ์ต่อพ่วง

นิดหน่อย 7 6 5 4 3 2 1 0
ขนาด 0x20 PRIM1 PRIM0 พรูซี ปชป พีอาร์อาร์
อ่าน/เขียน R R R R อา/ว อา/ว อา/ว อา/ว
ค่าเริ่มต้น 0 0 0 0 0 0 0 0

Bits 7: 4 - Res: Reserved Bits

บิตเหล่านี้เป็นบิตที่สงวนไว้ใน ATtiny25 / 45/85 และจะอ่านค่าเป็นศูนย์เสมอ

บิต 3 - PRTIM1: ตัวจับเวลาการลดกำลัง / ตัวนับ 1

การเขียนลอจิกหนึ่งไปยังบิตนี้จะเป็นการปิดโมดูล Timer / Counter1 เมื่อเปิดใช้งาน Timer / Counter1 การทำงานจะดำเนินต่อไปเหมือนก่อนปิดเครื่อง

บิต 2 - PRTIM0: ตัวจับเวลาการลดกำลัง / ตัวนับ 0

การเขียนลอจิกหนึ่งไปยังบิตนี้จะเป็นการปิดโมดูล Timer / Counter0 เมื่อเปิดใช้งาน Timer / Counter0 การทำงานจะดำเนินต่อไปเหมือนก่อนปิดเครื่อง

บิต 1 - PRUSI: การลดกำลังไฟ USI

การเขียนตรรกะหนึ่งถึงบิตนี้จะปิด USI โดยการหยุดนาฬิกาไปที่โมดูล เมื่อปลุก USI ขึ้นมาอีกครั้ง USI ควรเริ่มต้นใหม่เพื่อให้แน่ใจว่าการทำงานเป็นไปอย่างเหมาะสม

บิต 0 - PRADC: ADC ลดกำลัง

การเขียนตรรกะหนึ่งไปยังบิตนี้จะเป็นการปิด ADC ต้องปิดใช้งาน ADC ก่อนปิดเครื่อง โปรดทราบว่านาฬิกา ADC ยังใช้กับบางส่วนของตัวเปรียบเทียบแบบอะนาล็อกซึ่งหมายความว่าไม่สามารถใช้ตัวเปรียบเทียบแบบอะนาล็อกเมื่อบิตนี้มีค่าสูง

การควบคุมและรีเซ็ตระบบ

การรีเซ็ต AVR

ในระหว่างการรีเซ็ตรีจิสเตอร์ I / O ทั้งหมดจะถูกตั้งค่าเป็นค่าเริ่มต้นและโปรแกรมจะเริ่มดำเนินการจากรีเซ็ต Vec-tor คำสั่งที่อยู่ใน Reset Vector ต้องเป็นคำสั่ง RJMP - Relative Jump - สำหรับรูทีนการจัดการการรีเซ็ต หากโปรแกรมไม่เปิดใช้งานอินเทอร์รัปต์ซอร์สจะไม่มีการใช้อินเทอร์รัปต์เวกเตอร์และสามารถวางโค้ดโปรแกรมปกติไว้ที่ตำแหน่งเหล่านี้ แผนภาพวงจรใน รูปที่ 8-1 แสดงตรรกะการรีเซ็ต แผงวงจรไฟฟ้าของวงจรรีเซ็ตจะได้รับใน “ ลักษณะของระบบและการรีเซ็ต” บนหน้าที่ 165.

รูปที่ 8-1 รีเซ็ตลอจิก รีเซ็ตตรรกะ

พอร์ต I / O ของ AVR จะถูกรีเซ็ตกลับสู่สถานะเริ่มต้นทันทีเมื่อแหล่งการรีเซ็ตทำงาน สิ่งนี้ไม่จำเป็นต้องมีแหล่งสัญญาณนาฬิกาใด ๆ ในการทำงาน

หลังจากแหล่งที่มาของการรีเซ็ตทั้งหมดไม่ได้ใช้งานตัวนับการหน่วงเวลาจะถูกเรียกใช้โดยยืดการรีเซ็ตภายใน ซึ่งจะช่วยให้พลังงานถึงระดับที่เสถียรก่อนที่การทำงานปกติจะเริ่มขึ้น ระยะหมดเวลาของตัวนับการหน่วงเวลาถูกกำหนดโดยผู้ใช้ผ่านฟิวส์ SUT และ CKSEL ตัวเลือกที่แตกต่างกันสำหรับช่วงเวลาล่าช้าจะถูกนำเสนอใน "นาฬิกา แหล่งที่มา” ในหน้า 25.

รีเซ็ตแหล่งที่มา

ATtiny25 / 45/85 มีแหล่งการรีเซ็ตสี่แหล่ง:

รีเซ็ตการเปิดเครื่อง MCU ถูกรีเซ็ตเมื่อปริมาณอุปทานtage ต่ำกว่าเกณฑ์การรีเซ็ตการเปิดเครื่อง (VPOT)

รีเซ็ตภายนอก MCU จะถูกรีเซ็ตเมื่อระดับต่ำอยู่บนพิน RESET นานกว่าความยาวพัลส์ต่ำสุด

รีเซ็ต Watchdog MCU จะถูกรีเซ็ตเมื่อหมดระยะเวลา Watchdog Timer และ Watchdog ถูกเปิดใช้งาน

รีเซ็ตสีน้ำตาลออก MCU ถูกรีเซ็ตเมื่อปริมาณอุปทานtage VCC อยู่ต่ำกว่าเกณฑ์ Brown-out Reset (VBOT) และตัวตรวจจับ Brown-out ถูกเปิดใช้งาน

รีเซ็ตการเปิดเครื่อง

พัลส์รีเซ็ตการเปิดเครื่อง (POR) ถูกสร้างขึ้นโดยวงจรตรวจจับบนชิป ระดับการตรวจจับถูกกำหนดไว้ใน “ ซิส - tem และคุณลักษณะการรีเซ็ต” ในหน้า 165. POR จะเปิดใช้งานเมื่อใดก็ตามที่ VCC ต่ำกว่าระดับการตรวจจับ สามารถใช้วงจร POR เพื่อกระตุ้นการรีเซ็ตการเริ่มต้น เช่นเดียวกับการตรวจจับความล้มเหลวในปริมาณที่จ่ายtage.

วงจร Power-on Reset (POR) ช่วยให้มั่นใจได้ว่าอุปกรณ์ถูกรีเซ็ตจากการเปิดเครื่อง ถึงเกณฑ์การรีเซ็ตการเปิดเครื่อง voltage เรียกใช้ตัวนับการหน่วงเวลา ซึ่งจะกำหนดระยะเวลาที่อุปกรณ์จะถูกเก็บไว้ใน RESET หลังจากที่ VCC เพิ่มขึ้น สัญญาณ RESET จะเปิดใช้งานอีกครั้งโดยไม่มีการหน่วงเวลาใดๆ เมื่อ VCC ลดลงต่ำกว่าระดับการตรวจจับ

รูปที่ 8-2 MCU เริ่มต้นขึ้น รีเซ็ต เชื่อมโยงกับ VCC

รีเซ็ตภายใน

รูปที่ 8-3 MCU เริ่มต้นขึ้น รีเซ็ตขยายภายนอก

รีเซ็ตภายนอก

การรีเซ็ตภายนอกถูกสร้างขึ้นโดยระดับต่ำบนพิน RESET หากเปิดใช้งาน รีเซ็ตพัลส์ที่ยาวกว่าความกว้างพัลส์ต่ำสุด (ดู “ ลักษณะของระบบและการรีเซ็ต” บนหน้าที่ 165) จะสร้างการรีเซ็ตแม้ว่านาฬิกาจะไม่ทำงาน ไม่รับประกันว่าพัลส์ที่สั้นกว่าจะสร้างการรีเซ็ตได้ เมื่อสัญญาณที่ใช้ถึง Reset Threshold Voltage – VRST – ที่ขอบด้านบวก ตัวนับการหน่วงเวลาจะเริ่ม MCU หลังจากหมดเวลาหมดเวลา

รูปที่ 8-4 รีเซ็ตภายนอกระหว่างการทำงาน รูปที่ 8.4

การตรวจจับสีน้ำตาล

ATtiny25/45/85 มีวงจร On-chip Brown-out Detection (BOD) สำหรับตรวจสอบระดับ VCC ระหว่างการทำงานโดยเปรียบเทียบกับระดับทริกเกอร์คงที่ BODLEVEL Fuses สามารถเลือกระดับทริกเกอร์สำหรับ BOD ได้ ระดับทริกเกอร์มีฮิสเทรีซิสเพื่อให้แน่ใจว่าการตรวจจับบราวน์เอาท์จะปราศจากการขัดขวาง ฮิสเทรีซิสในระดับการตรวจจับควรตีความเป็น VBOT+ = VBOT + VHYST/2 และ VBOT- = VBOT – VHYST/2

เมื่อเปิดใช้งาน BOD และ VCC จะลดลงเป็นค่าที่ต่ำกว่าระดับทริกเกอร์ (VBOT-in รูปที่ 8-5) การรีเซ็ต Brown-out จะเปิดใช้งานทันที เมื่อ VCC เพิ่มขึ้นเหนือระดับทริกเกอร์ (VBOT+ in รูปที่ 8-5) ตัวนับการหน่วงเวลาจะเริ่ม MCU หลังจากหมดเวลา tTOUT

วงจร BOD จะตรวจจับการลดลงของ VCC เฉพาะเมื่อปริมาตรtage อยู่ต่ำกว่าระดับทริกเกอร์นานกว่า tBOD ที่กำหนดไว้ “ ลักษณะของระบบและการรีเซ็ต” บนหน้าที่ 165. รูปที่ 8.5

รีเซ็ต Watchdog

เมื่อ Watchdog หมดเวลา มันจะสร้างพัลส์รีเซ็ตสั้น ๆ ของรอบระยะเวลา CK หนึ่งรอบ ที่ขอบล่างของพัลส์นี้ ตัวจับเวลาการหน่วงเวลาจะเริ่มนับระยะเวลาการหมดเวลา tTOUT อ้างถึง “ Watchdog Timer” บนหน้าที่ 42 สำหรับรายละเอียดเกี่ยวกับการทำงานของ Watchdog Timer

เล่มที่tage การอ้างอิงเปิดใช้งานสัญญาณและเวลาเริ่มต้น

ฉบับที่tagการอ้างอิงมีเวลาเริ่มต้นที่อาจส่งผลต่อวิธีที่ควรใช้ เวลาเริ่มต้นจะได้รับใน “ ลักษณะของระบบและการรีเซ็ต” บนหน้าที่ 165. เพื่อประหยัดพลังงานการอ้างอิงไม่ได้เปิดอยู่เสมอ การอ้างอิงจะเปิดอยู่ในสถานการณ์ต่อไปนี้:

เมื่อเปิดใช้งาน BOD (โดยการตั้งโปรแกรม BODLEVEL [2: 0] Fuse Bits)

เมื่อการอ้างอิง bandgap เชื่อมต่อกับ Analog Comparator (โดยการตั้งค่าบิต ACBG ใน ACSR)

เมื่อเปิดใช้งาน ADC

ดังนั้นเมื่อไม่ได้เปิดใช้งาน BOD หลังจากตั้งค่าบิต ACBG หรือเปิดใช้งาน ADC ผู้ใช้จะต้องอนุญาตให้การอ้างอิงเริ่มทำงานก่อนที่จะใช้เอาต์พุตจาก Analog Comparator หรือ ADC เสมอ เพื่อลดการใช้พลังงานในโหมดปิดเครื่องผู้ใช้สามารถหลีกเลี่ยงเงื่อนไขสามประการข้างต้นเพื่อให้แน่ใจว่าการอ้างอิงถูกปิดก่อนเข้าสู่โหมดปิดเครื่อง

ตัวจับเวลาเฝ้าระวัง

Watchdog Timer ถูกโอเวอร์คล็อกจากออสซิลเลเตอร์บนชิปซึ่งทำงานที่ 128 kHz ด้วยการควบคุมตัวตั้งเวลาล่วงหน้าของ Watchdog Timer สามารถปรับช่วงเวลารีเซ็ต Watchdog ได้ดังที่แสดงใน ตาราง 8-3 ในหน้า 46. WDR - Watchdog Reset - คำสั่งรีเซ็ตตัวจับเวลา Watchdog Watchdog Timer จะถูกรีเซ็ตเมื่อปิดใช้งานและเมื่อเกิดการรีเซ็ตชิป สามารถเลือกช่วงเวลาของรอบนาฬิกาที่แตกต่างกันสิบรอบเพื่อกำหนดระยะเวลาการรีเซ็ต หากระยะเวลาการรีเซ็ตหมดลงโดยไม่มีการรีเซ็ต Watchdog อีกครั้ง ATtiny25 / 45/85 จะรีเซ็ตและดำเนินการจากรีเซ็ตเวกเตอร์ สำหรับรายละเอียดเวลาในการรีเซ็ต Watchdog โปรดดูที่ ตาราง 8-3 ในหน้า 46.

นอกจากนี้ยังสามารถกำหนดค่า Watchdog Timer เพื่อสร้างการขัดจังหวะแทนการรีเซ็ต สิ่งนี้จะมีประโยชน์มากเมื่อใช้ Watchdog เพื่อปลุกจาก Power-down

เพื่อป้องกันการปิดใช้งาน Watchdog โดยไม่ได้ตั้งใจหรือการเปลี่ยนระยะหมดเวลาโดยไม่ได้ตั้งใจฟิวส์ WDTON จะเลือกระดับความปลอดภัยที่แตกต่างกันสองระดับตามที่แสดงใน ตาราง 8-1 อ้างถึง “ ลำดับเวลาสำหรับการเปลี่ยน Con- การกำหนดค่าตัวจับเวลา Watchdog” บนหน้าที่ 43 สำหรับรายละเอียดเพิ่มเติม

ตารางที่ 8-1 การกำหนดค่า WDT เป็นฟังก์ชันของการตั้งค่าฟิวส์ของ WDTON

ดับเบิ้ลยูดีตัน ระดับความปลอดภัย สถานะเริ่มต้นของ WDT วิธีปิดการใช้งาน WDT วิธีเปลี่ยนการหมดเวลา
ไม่ได้ตั้งโปรแกรม 1 พิการ ลำดับเวลา ไม่มีข้อจำกัด
ตั้งโปรแกรมไว้ 2 เปิดใช้งานแล้ว เปิดใช้งานเสมอ ลำดับเวลา

รูปที่ 8-7 วอชด็อก ไทม์เมอร์ สุนัขเฝ้าบ้าน

ลำดับเวลาสำหรับการเปลี่ยนการกำหนดค่าตัวจับเวลา Watchdog

ลำดับการเปลี่ยนการกำหนดค่าจะแตกต่างกันเล็กน้อยระหว่างระดับความปลอดภัยทั้งสอง มีการอธิบายขั้นตอนแยกกันสำหรับแต่ละระดับ

ความปลอดภัยระดับ 1: ในโหมดนี้ Watchdog Timer จะถูกปิดใช้งานในขั้นต้น แต่สามารถเปิดใช้งานได้โดยเขียนบิต WDE ไปที่หนึ่งโดยไม่มีข้อจำกัดใดๆ จำเป็นต้องใช้ลำดับเวลาเมื่อปิดใช้งาน Watchdog Timer ที่เปิดใช้งาน หากต้องการปิดใช้งาน Watchdog Timer ที่เปิดใช้งาน ต้องปฏิบัติตามขั้นตอนต่อไปนี้:

ในการดำเนินการเดียวกันให้เขียนลอจิกหนึ่งไปยัง WDCE และ WDE ตรรกะหนึ่งต้องถูกเขียนถึง WDE โดยคำนึงถึง - น้อยกว่าค่าก่อนหน้าของบิต WDE

ภายในสี่รอบนาฬิกาถัดไปในการดำเนินการเดียวกันให้เขียนบิต WDE และ WDP ตามที่ต้องการ แต่เมื่อล้างบิต WDCE

ความปลอดภัยระดับ 2: ในโหมดนี้ ตัวจับเวลา Watchdog จะเปิดใช้งานเสมอ และบิต WDE จะอ่านเป็นหนึ่งเสมอ จำเป็นต้องใช้ลำดับเวลาเมื่อเปลี่ยนระยะเวลาการหมดเวลาของ Watchdog หากต้องการเปลี่ยน Watchdog Time-out ต้องปฏิบัติตามขั้นตอนต่อไปนี้:

ในการดำเนินการเดียวกันให้เขียนตรรกะหนึ่งไปยัง WDCE และ WDE แม้ว่าจะตั้งค่า WDE ไว้เสมอ แต่ต้องเขียน WDE เป็นหนึ่งเพื่อเริ่มต้นลำดับเวลา

ภายในสี่รอบนาฬิกาถัดไปในการดำเนินการเดียวกันให้เขียนบิต WDP ตามที่ต้องการ แต่เมื่อล้างบิต WDCE ค่าที่เขียนลงในบิต WDE ไม่เกี่ยวข้อง

รหัส Example

รหัสต่อไปนี้example แสดงหนึ่งชุดประกอบและหนึ่งฟังก์ชัน C สำหรับปิด WDT อดีตample ถือว่าอินเตอร์รัปต์ถูกควบคุม (เช่น โดยการปิดการใช้งานอินเตอร์รัปต์ทั่วโลก) เพื่อไม่ให้เกิดการขัดจังหวะระหว่างการดำเนินการของฟังก์ชันเหล่านี้

รหัสแอสเซมบลีเช่นample(1)
WDT_ปิด:

ดับเบิ้ลยูดีอาร์

; ล้าง WDRF ใน MCUSR

ldi r16, (0<

ออก MCUSR, r16

; เขียนตรรกะหนึ่งไปยัง WDCE และ WDE

; รักษาการตั้งค่า Prescaler เก่าไว้เพื่อป้องกันการรีเซ็ต Watchdog โดยไม่ได้ตั้งใจ

ใน r16, WDTCR

เดิม r16, (1<

ออก WDTCR, r16

; ปิด WDT

ldi r16, (0<

ออก WDTCR, r16

เกษียณ

รหัส C อดีตample(1)
เป็นโมฆะ WDT_off (เป็นโมฆะ)

{

_WDR ();

/* ล้าง WDRF ใน MCUSR */ MCUSR = 0x00

/* เขียนโลจิคัลหนึ่งไปยัง WDCE และ WDE */ WDTCR |= (1<

/ * ปิด WDT * / WDTCR = 0x00;

}

หมายเหตุ: 1. ดู “รหัส Exampน้อยลง” บนหน้าที่ 6.

ลงทะเบียนคำอธิบาย

MCUSR - การลงทะเบียนสถานะ MCU

การลงทะเบียนสถานะ MCU ให้ข้อมูลว่าแหล่งการรีเซ็ตใดทำให้เกิดการรีเซ็ต MCU

นิดหน่อย 7 6 5 4 3 2 1 0
ขนาด 0x34 วว บ่อ พิเศษ พอร์ฟ มคส
อ่าน/เขียน R R R R อา/ว อา/ว อา/ว อา/ว

ค่าเริ่มต้น 0 0 0 0 ดูคำอธิบายบิต

Bits 7: 4 - Res: Reserved Bits

บิตเหล่านี้เป็นบิตที่สงวนไว้ใน ATtiny25 / 45/85 และจะอ่านค่าเป็นศูนย์เสมอ

บิต 3 - WDRF: Watchdog Reset Flag

บิตนี้ถูกตั้งค่าหากการรีเซ็ต Watchdog เกิดขึ้น บิตถูกรีเซ็ตโดยการรีเซ็ตการเปิดเครื่องหรือโดยการเขียนลอจิกเป็นศูนย์ลงในแฟล็ก

บิต 2 - BORF: ค่าสถานะรีเซ็ตเป็นสีน้ำตาล

บิตนี้ถูกตั้งค่าหากเกิดการรีเซ็ตเป็นสีน้ำตาลออก บิตถูกรีเซ็ตโดยการรีเซ็ตการเปิดเครื่องหรือโดยการเขียนลอจิกเป็นศูนย์ลงในแฟล็ก

บิต 1 - EXTRF: แฟล็กรีเซ็ตภายนอก

บิตนี้ถูกตั้งค่าหากมีการรีเซ็ตภายนอกเกิดขึ้น บิตถูกรีเซ็ตโดยการรีเซ็ตการเปิดเครื่องหรือโดยการเขียนลอจิกเป็นศูนย์ลงในแฟล็ก

บิต 0 - PORF: เปิดเครื่องรีเซ็ตแฟล็ก

บิตนี้ถูกตั้งค่าหากการรีเซ็ตการเปิดเครื่องเกิดขึ้น บิตจะถูกรีเซ็ตโดยการเขียนศูนย์ลอจิกลงในแฟล็กเท่านั้น

ในการใช้รีเซ็ตแฟล็กเพื่อระบุเงื่อนไขการรีเซ็ตผู้ใช้ควรอ่านแล้วรีเซ็ต MCUSR โดยเร็วที่สุดในโปรแกรม หากรีจิสเตอร์ถูกล้างก่อนที่จะเกิดการรีเซ็ตอีกครั้งคุณสามารถดูแหล่งที่มาของการรีเซ็ตได้โดยการตรวจสอบแฟล็กรีเซ็ต

WDTCR - ลงทะเบียนควบคุมตัวจับเวลา Watchdog

นิดหน่อย 7 6 5 4 3 2 1 0
ขนาด 0x21 ดับบลิวไอเอฟ วด ดับเบิ้ลยูดีพี3 ดับบลิวซีอี ดับเบิ้ลยูดีอี ดับเบิ้ลยูดีพี2 ดับเบิ้ลยูดีพี1 ดับเบิ้ลยูดีพี0 ดับบลิวทีซีอาร์
อ่าน/เขียน อา/ว อา/ว อา/ว อา/ว อา/ว อา/ว อา/ว อา/ว
ค่าเริ่มต้น 0 0 0 0 X 0 0 0

บิต 7 - WDIF: Watchdog Timeout Interrupt Flag

บิตนี้ถูกตั้งค่าเมื่อหมดเวลาใน Watchdog Timer และ Watchdog Timer ได้รับการกำหนดค่าสำหรับการขัดจังหวะ WDIF ถูกล้างโดยฮาร์ดแวร์เมื่อเรียกใช้เวกเตอร์การจัดการขัดจังหวะที่เกี่ยวข้อง หรืออีกวิธีหนึ่ง WDIF จะถูกล้างโดยการเขียนตรรกะหนึ่งลงในแฟล็ก เมื่อตั้งค่า I-bit ใน SREG และ WDIE การขัดจังหวะการหมดเวลาของ Watchdog จะดำเนินการ

บิต 6 - WDIE: Watchdog Timeout Interrupt Enable

เมื่อเขียนบิตนี้เป็นหนึ่ง WDE จะถูกล้างและมีการตั้งค่า I-bit ในการลงทะเบียนสถานะการขัดจังหวะการหมดเวลาของ Watchdog จะเปิดใช้งาน ในโหมดนี้การขัดจังหวะที่เกี่ยวข้องจะดำเนินการแทนการรีเซ็ตหากหมดเวลาใน Watchdog Timer

หากตั้งค่า WDE ไว้ WDIE จะถูกล้างโดยอัตโนมัติโดยฮาร์ดแวร์เมื่อหมดเวลา สิ่งนี้มีประโยชน์สำหรับการรักษาความปลอดภัย Watchdog Reset ในขณะที่ใช้การขัดจังหวะ หลังจากล้างบิต WDIE แล้วการหมดเวลาครั้งต่อไปจะสร้างการรีเซ็ต เพื่อหลีกเลี่ยงการรีเซ็ต Watchdog ต้องตั้งค่า WDIE หลังจากการขัดจังหวะแต่ละครั้ง

ตารางที่ 8-2 การกำหนดค่าตัวจับเวลา Watchdog

ดับเบิ้ลยูดีอี วด สถานะตัวจับเวลา Watchdog การดำเนินการเกี่ยวกับการหมดเวลา
0 0 หยุดแล้ว ไม่มี
0 1 วิ่ง ขัดจังหวะ
1 0 วิ่ง รีเซ็ต
1 1 วิ่ง ขัดจังหวะ

บิต 4 - WDCE: Watchdog Change Enable

ต้องตั้งค่าบิตนี้เมื่อบิต WDE เขียนเป็นศูนย์ลอจิก มิฉะนั้น Watchdog จะไม่ถูกปิดใช้งาน เมื่อเขียนถึงหนึ่งฮาร์ดแวร์จะล้างบิตนี้หลังจากสี่รอบนาฬิกา อ้างถึงคำอธิบายของบิต WDE สำหรับขั้นตอนการปิดใช้งาน Watchdog ต้องตั้งค่าบิตนี้เมื่อเปลี่ยนบิตของผู้กำหนดล่วงหน้า ดู “ ลำดับเวลา สำหรับการเปลี่ยนการกำหนดค่าตัวจับเวลา Watchdog” บนหน้าที่ 43.

บิต 3 - WDE: เปิดใช้งาน Watchdog

เมื่อเขียน WDE เป็นลอจิกหนึ่งตัวจับเวลา Watchdog จะเปิดใช้งานและหากเขียน WDE เป็นศูนย์ลอจิกฟังก์ชัน Watchdog Timer จะถูกปิดใช้งาน WDE สามารถล้างได้ก็ต่อเมื่อบิต WDCE มีลอจิกระดับหนึ่ง ในการปิดใช้งานตัวจับเวลา Watchdog ที่เปิดใช้งานต้องปฏิบัติตามขั้นตอนต่อไปนี้:

ในการดำเนินการเดียวกันให้เขียนลอจิกหนึ่งไปยัง WDCE และ WDE ตรรกะหนึ่งต้องถูกเขียนไปยัง WDE แม้ว่าจะถูกตั้งค่าเป็นหนึ่งก่อนที่การปิดใช้งานจะเริ่มขึ้น

ภายในสี่รอบนาฬิกาถัดไปให้เขียนลอจิก 0 ถึง WDE สิ่งนี้จะปิดใช้งาน Watchdog

ในระดับความปลอดภัย 2 จะไม่สามารถปิดใช้งานตัวจับเวลา Watchdog ได้แม้จะใช้อัลกอริทึมที่อธิบายไว้ข้างต้นก็ตาม ดู “ ลำดับเวลาสำหรับการเปลี่ยนการกำหนดค่าตัวจับเวลา Watchdog” บนหน้าที่ 43.

ในระดับความปลอดภัย 1 WDE ถูกแทนที่โดย WDRF ใน MCUSR ดู “ MCUSR - การลงทะเบียนสถานะ MCU” บนหน้าที่ 44 สำหรับคำอธิบายของ WDRF ซึ่งหมายความว่า WDE จะถูกตั้งค่าเสมอเมื่อตั้งค่า WDRF ในการล้าง WDE ต้องล้าง WDRF ก่อนปิดใช้งาน Watchdog ด้วยขั้นตอนที่อธิบายไว้ข้างต้น คุณสมบัตินี้ช่วยให้แน่ใจว่าการรีเซ็ตหลายครั้งในระหว่างเงื่อนไขที่ทำให้เกิดความล้มเหลวและการเริ่มต้นอย่างปลอดภัยหลังจากความล้มเหลว

หมายเหตุ: หากจะไม่ใช้ตัวจับเวลาจ้องจับผิดในแอปพลิเคชัน สิ่งสำคัญคือต้องทำตามขั้นตอนปิดใช้งานจ้องจับผิดในการเริ่มต้นอุปกรณ์ หาก Watchdog ถูกเปิดใช้งานโดยไม่ตั้งใจ เช่นample โดยตัวชี้ที่ควบคุมไม่ได้หรือสภาวะหมดไฟ อุปกรณ์จะถูกรีเซ็ต ซึ่งจะนำไปสู่การรีเซ็ตสุนัขเฝ้าบ้านใหม่ เพื่อหลีกเลี่ยงสถานการณ์นี้ แอพพลิเคชั่นซอฟต์แวร์ควรล้างแฟล็ก WDRF และบิตควบคุม WDE ในรูทีนการเริ่มต้นเสมอ

บิต 5, 2: 0 - WDP [3: 0]: Watchdog Timer Prescaler 3, 2, 1 และ 0

บิต WDP [3: 0] เป็นตัวกำหนดการปรับขนาดล่วงหน้าของ Watchdog Timer เมื่อเปิดใช้งานตัวจับเวลา Watchdog ค่า Prescaling ที่แตกต่างกันและระยะหมดเวลาที่เกี่ยวข้องจะแสดงใน ตาราง 8-3.

ตารางที่ 8-3 Watchdog Timer พรีสเกลเลือก

ดับเบิ้ลยูดีพี3 ดับเบิ้ลยูดีพี2 ดับเบิ้ลยูดีพี1 ดับเบิ้ลยูดีพี0 จำนวนรอบ WDT Oscillator หมดเวลาทั่วไปที่ 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 (ต่อ)

ดับเบิ้ลยูดีพี3 ดับเบิ้ลยูดีพี2 ดับเบิ้ลยูดีพี1 ดับเบิ้ลยูดีพี0 จำนวนรอบ WDT Oscillator หมดเวลาทั่วไปที่ VCC = 5.0V
1 0 1 0 ที่สงวนไว้(1)
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1

หมายเหตุ: 1. หากเลือก จะมีการใช้การตั้งค่าที่ถูกต้องด้านล่าง 0b1010 อย่างใดอย่างหนึ่ง

ขัดจังหวะ

ส่วนนี้อธิบายถึงรายละเอียดของการจัดการขัดจังหวะตามที่ดำเนินการใน ATtiny25 / 45/85 สำหรับความชัดเจนทั่วไปของการจัดการขัดจังหวะ AVR โปรดดูที่ “ รีเซ็ตและจัดการการขัดจังหวะ” บนหน้าที่ 12.

Interrupt Vectors ใน ATtiny25 / 45/85

เวกเตอร์ขัดจังหวะของ ATtiny25 / 45/85 อธิบายไว้ใน ตาราง 9-1ด้านล่าง.

ตารางที่ 9-1. รีเซ็ตและขัดจังหวะเวกเตอร์

หมายเลขเวกเตอร์ ที่อยู่โปรแกรม แหล่งที่มา คำจำกัดความขัดจังหวะ
1 ขนาด 0x0000 รีเซ็ต พินภายนอก, รีเซ็ตการเปิดเครื่อง, รีเซ็ตจนหมด, รีเซ็ต Watchdog
2 ขนาด 0x0001 อินที0 คำขอขัดจังหวะภายนอก 0
3 ขนาด 0x0002 พีซีอินท์0 คำขอเปลี่ยนการขัดจังหวะการปักหมุด 0
4 ขนาด 0x0003 TIMER1_COMPA Timer / Counter1 เปรียบเทียบ Match A
5 ขนาด 0x0004 TIMER1_OVF Timer / Counter1 ล้น
6 ขนาด 0x0005 TIMER0_OVF Timer / Counter0 ล้น
7 ขนาด 0x0006 EE_RDY พร้อม EEPROM
8 ขนาด 0x0007 ANA_COMP ตัวเปรียบเทียบอนาล็อก
9 ขนาด 0x0008 เอดีซี การแปลง ADC เสร็จสมบูรณ์
10 ขนาด 0x0009 TIMER1_COMPB Timer / Counter1 เปรียบเทียบ Match B
11 0x000A TIMER0_COMPA Timer / Counter0 เปรียบเทียบ Match A
12 0x000B TIMER0_COMPB Timer / Counter0 เปรียบเทียบ Match B
13 0x000C ดับเบิ้ลยูดีที Watchdog หมดเวลา
14 0x000D USI_START USI เริ่มต้น
15 0x000E USI_OVF USI ล้น

หากโปรแกรมไม่เปิดใช้งานอินเทอร์รัปต์ซอร์สจะไม่มีการใช้อินเทอร์รัปต์เวกเตอร์และสามารถวางโค้ดโปรแกรมปกติไว้ที่ตำแหน่งเหล่านี้

การตั้งค่าทั่วไปและทั่วไปสำหรับแอดเดรสอินเทอร์รัปต์ใน ATtiny25/45/85 แสดงในโปรแกรมเช่นampอยู่ด้านล่าง

รหัสแอสเซมบลีเช่นample
.org 0x0000 ; กำหนดที่อยู่ของรายการถัดไป คำแถลง
rjmp รีเซ็ต ; ที่อยู่ 0x0000
rjmp INT0_ISR ; ที่อยู่ 0x0001
rjmp PCINT0_ISR ; ที่อยู่ 0x0002
rjmp TIM1_COMPA_ISR ; ที่อยู่ 0x0003
rjmp TIM1_OVF_ISR ; ที่อยู่ 0x0004
rjmp TIM0_OVF_ISR ; ที่อยู่ 0x0005
rjmp EE_RDY_ISR ; ที่อยู่ 0x0006
rjmp ANA_COMP_ISR ; ที่อยู่ 0x0007
rjmp ADC_ISR ; ที่อยู่ 0x0008
rjmp TIM1_COMPB_ISR ; ที่อยู่ 0x0009
rjmp TIM0_COMPA_ISR ; ที่อยู่ 0x000A
rjmp TIM0_COMPB_ISR ; ที่อยู่ 0x000B
rjmp WDT_ISR ; ที่อยู่ 0x000C
rjmp USI_START_ISR ; ที่อยู่ 0x000D
rjmp USI_OVF_ISR ; ที่อยู่ 0x000E
รีเซ็ต: ; เริ่มโปรแกรมหลัก
; ที่อยู่ 0x000F

หมายเหตุ: ดู “รหัส Exampน้อยลง” บนหน้าที่ 6.

การขัดจังหวะภายนอก

อินเทอร์รัปต์ภายนอกถูกทริกเกอร์โดยพิน INT0 หรือพิน PCINT [5: 0] ใด ๆ สังเกตว่าหากเปิดใช้งานอินเทอร์รัปต์จะทริกเกอร์แม้ว่าพิน INT0 หรือ PCINT [5: 0] จะถูกกำหนดค่าเป็นเอาต์พุต คุณลักษณะนี้เป็นวิธีการสร้างซอฟต์แวร์ขัดจังหวะ การเปลี่ยนพินขัดจังหวะ PCI จะทริกเกอร์หากมีการสลับพิน PCINT [5: 0] ที่เปิดใช้งาน PCMSK Register ควบคุมว่าพินใดมีส่วนในการขัดจังหวะการเปลี่ยนพิน ตรวจพบการขัดจังหวะการเปลี่ยนพินบน PCINT [5: 0] แบบอะซิงโครนัส นี่หมายความว่าการขัดจังหวะเหล่านี้สามารถใช้สำหรับการปลุกส่วนนี้จากโหมดสลีปอื่นที่ไม่ใช่โหมดปกติ

อินเทอร์รัปต์ INT0 สามารถทริกเกอร์ได้โดยขอบลดลงหรือสูงขึ้นหรือระดับต่ำ สิ่งนี้ถูกตั้งค่าตามที่ระบุไว้ในข้อกำหนดสำหรับ MCU Control Register - MCUCR เมื่อเปิดใช้งานอินเทอร์รัปต์ INT0 และกำหนดค่าเป็นระดับที่ทริกเกอร์อินเทอร์รัปต์จะทริกเกอร์ตราบเท่าที่พินอยู่ในระดับต่ำ โปรดทราบว่าการรับรู้การหยุดชะงักของขอบที่ลดลงหรือสูงขึ้นบน INT0 จำเป็นต้องมีนาฬิกา I / O ตามที่อธิบายไว้ใน “ ระบบนาฬิกาและการกระจาย” บน หน้า 23.

การขัดจังหวะระดับต่ำ

ตรวจพบการขัดจังหวะระดับต่ำบน INT0 แบบอะซิงโครนัส นี่หมายความว่าการขัดจังหวะนี้สามารถใช้สำหรับการปลุกส่วนนี้จากโหมดสลีปอื่นที่ไม่ใช่โหมดปกติ นาฬิกา I / O หยุดในโหมดสลีปทั้งหมดยกเว้นโหมดปกติ

โปรดทราบว่าหากใช้ระดับการขัดจังหวะที่ทริกเกอร์เพื่อปลุกการทำงานจากการปิดเครื่อง ระดับที่ต้องการจะต้องค้างไว้นานพอที่ MCU จะดำเนินการปลุกให้เสร็จสิ้นเพื่อกระตุ้นระดับการขัดจังหวะ หากระดับหายไปก่อนสิ้นสุดเวลาเริ่มต้น MCU จะยังคงทำงานอยู่ แต่จะไม่มีการขัดจังหวะเกิดขึ้น เวลาเริ่มต้นถูกกำหนดโดยฟิวส์ SUT และ CKSEL ตามที่อธิบายไว้ใน “ นาฬิการะบบและตัวเลือกนาฬิกา” ที่หน้า 23.

หากระดับต่ำบนพินขัดจังหวะถูกลบออกก่อนที่อุปกรณ์จะตื่นขึ้นการทำงานของโปรแกรมจะไม่ถูกโอนไปยังรูทีนบริการขัดจังหวะ แต่จะดำเนินการต่อจากคำสั่งต่อไปนี้คำสั่ง SLEEP

พินเปลี่ยนเวลาขัดจังหวะ Pin

อดีตample ของระยะเวลาของการขัดจังหวะการเปลี่ยนพินจะแสดงใน รูปที่ 9-1.

ลงทะเบียนคำอธิบาย

MCUCR - ทะเบียนควบคุม MCU

External Interrupt Control Register A มีบิตควบคุมสำหรับการควบคุมความรู้สึกขัดจังหวะ

นิดหน่อย 7 6 5 4 3 2 1 0
ขนาด 0x35 บอดส์ พุดดิ้ง SE เอสเอ็ม1 เอสเอ็ม0 ร่างกาย ISC01 ISC00 มจร
อ่าน/เขียน R อา/ว อา/ว อา/ว อา/ว R อา/ว อา/ว
ค่าเริ่มต้น 0 0 0 0 0 0 0 0

บิต 1: 0 - ISC0 [1: 0]: การควบคุมความรู้สึกขัดจังหวะ 0 บิต 1 และบิต 0

External Interrupt 0 เปิดใช้งานโดยพินภายนอก INT0 หากตั้งค่า SREG I-flag และอินเตอร์รัปต์มาสก์ที่เกี่ยวข้อง ระดับและขอบบนพิน INT0 ภายนอกที่เปิดใช้งานการขัดจังหวะถูกกำหนดไว้ใน ตาราง 9-2. ค่าบนพิน INT0 คือ sampนำก่อนที่จะตรวจจับขอบ หากเลือกขอบหรือสลับการขัดจังหวะ พัลส์ที่นานกว่าหนึ่งช่วงเวลานาฬิกาจะสร้างการขัดจังหวะ ไม่รับประกันว่าพัลส์ที่สั้นกว่าจะสร้างการขัดจังหวะ หากเลือกอินเตอร์รัปต์ระดับต่ำ ระดับต่ำจะต้องถูกระงับไว้จนกว่าคำสั่งที่ดำเนินการอยู่จะเสร็จสมบูรณ์เพื่อสร้างการขัดจังหวะ

ตารางที่ 9-2. อินเตอร์รัปต์ 0 การควบคุมความรู้สึก

ISC01 ISC00 คำอธิบาย
0 0 INT0 ระดับต่ำจะสร้างคำร้องขอขัดจังหวะ
0 1 การเปลี่ยนแปลงเชิงตรรกะใด ๆ บน INT0 จะสร้างคำร้องขอขัดจังหวะ
1 0 ขอบลดลงของ INT0 สร้างคำขอขัดจังหวะ
1 1 ขอบที่เพิ่มขึ้นของ INT0 จะสร้างคำขอขัดจังหวะ

GIMSK - การลงทะเบียนหน้ากากขัดจังหวะทั่วไป

นิดหน่อย 7 6 5 4 3 2 1 0
0x3B อินที0 PCIE กิมสค์
อ่าน/เขียน R อา/ว อา/ว R R R R R
ค่าเริ่มต้น 0 0 0 0 0 0 0 0

Bits 7, 4: 0 - Res: Reserved Bits

บิตเหล่านี้เป็นบิตที่สงวนไว้ใน ATtiny25 / 45/85 และจะอ่านค่าเป็นศูนย์เสมอ

บิต 6 - INT0: คำขอการขัดจังหวะภายนอก 0 เปิดใช้งาน

เมื่อตั้งค่าบิต INT0 (หนึ่ง) และตั้งค่า I-bit ในการลงทะเบียนสถานะ (SREG) (หนึ่ง) การขัดจังหวะพินภายนอกจะเปิดใช้งาน Interrupt Sense Control0 บิต 1/0 (ISC01 และ ISC00) ใน MCU Control Register (MCUCR) กำหนดว่าจะเปิดใช้งานอินเทอร์รัปต์ภายนอกบนขอบที่เพิ่มขึ้นและ / หรือลดลงของพิน INT0 หรือระดับที่ตรวจจับ กิจกรรมบนพินจะทำให้เกิดการร้องขอการขัดจังหวะแม้ว่า INT0 จะถูกกำหนดค่าเป็นเอาต์พุต การขัดจังหวะที่สอดคล้องกันของ Exter-nal Interrupt Request 0 ถูกเรียกใช้จาก INT0 Interrupt Vector

บิต 5 - PCIE: Pin Change Interrupt Enable

เมื่อบิต PCIE ถูกตั้งค่า (หนึ่ง) และตั้งค่า I-bit ในการลงทะเบียนสถานะ (SREG) (หนึ่ง) การขัดจังหวะการเปลี่ยนพินจะเปิดใช้งาน การเปลี่ยนแปลงใด ๆ บนพิน PCINT [5: 0] ที่เปิดใช้งานจะทำให้เกิดการขัดจังหวะ การขัดจังหวะที่สอดคล้องกันของ Pin Change Interrupt Request จะดำเนินการจาก PCI Interrupt Vector PCINT [5: 0] พินถูกเปิดใช้งานทีละพินโดย PCMSK0 Register

GIFR - การลงทะเบียนธงขัดจังหวะทั่วไป

นิดหน่อย 7 6 5 4 3 2 1 0
0x3A INTF0 PCIF GIFR
อ่าน/เขียน R อา/ว อา/ว R R R R R
ค่าเริ่มต้น 0 0 0 0 0 0 0 0

Bits 7, 4: 0 - Res: Reserved Bits

บิตเหล่านี้เป็นบิตที่สงวนไว้ใน ATtiny25 / 45/85 และจะอ่านค่าเป็นศูนย์เสมอ

บิต 6 - INTF0: แฟล็กขัดจังหวะภายนอก 0

เมื่อขอบหรือตรรกะเปลี่ยนไปบนพิน INT0 ทริกเกอร์คำขอขัดจังหวะ INTF0 จะกลายเป็นชุด (หนึ่ง) ถ้า I-bit ใน SREG และ INT0 bit ใน GIMSK ถูกตั้งค่าไว้ (หนึ่ง) MCU จะข้ามไปที่ Interrupt Vector ที่เกี่ยวข้อง แฟล็กจะถูกล้างเมื่อดำเนินการรูทีนการขัดจังหวะ หรืออีกวิธีหนึ่งคือสามารถล้างแฟล็กได้โดยการเขียนตรรกะลงไป แฟล็กนี้จะถูกล้างเสมอเมื่อ INT0 ถูกกำหนดค่าเป็นการขัดจังหวะระดับ

บิต 5 - PCIF: ปักหมุดเปลี่ยนค่าสถานะขัดจังหวะ

เมื่อการเปลี่ยนแปลงตรรกะบนพิน PCINT [5: 0] ทริกเกอร์คำขอขัดจังหวะ PCIF จะถูกตั้งค่า (หนึ่ง) ถ้า I-bit ใน SREG และ PCIE bit ใน GIMSK ถูกตั้งค่าไว้ (หนึ่ง) MCU จะข้ามไปที่ Interrupt Vector ที่เกี่ยวข้อง แฟล็กจะถูกล้างเมื่อดำเนินการรูทีนการขัดจังหวะ หรืออีกวิธีหนึ่งคือสามารถล้างแฟล็กได้โดยการเขียนตรรกะลงไป

PCMSK - Pin Change Mask Register

นิดหน่อย 7 6 5 4 3 2 1 0
ขนาด 0x15 พีซีอินท์5 พีซีอินท์4 พีซีอินท์3 พีซีอินท์2 พีซีอินท์1 พีซีอินท์0 พีซีเอ็มเอสเค
อ่าน/เขียน R R อา/ว อา/ว อา/ว อา/ว อา/ว อา/ว
ค่าเริ่มต้น 0 0 0 0 0 0 0 0

Bits 7: 6 - Res: Reserved Bits

บิตเหล่านี้เป็นบิตที่สงวนไว้ใน ATtiny25 / 45/85 และจะอ่านค่าเป็นศูนย์เสมอ

บิต 5: 0 - PCINT [5: 0]: Pin Change Enable Mask 5: 0

บิต PCINT [5: 0] แต่ละบิตจะเลือกว่าจะเปิดใช้การขัดจังหวะการเปลี่ยนพินบนพิน I / O ที่เกี่ยวข้องหรือไม่ หากตั้งค่า PCINT [5: 0] และบิต PCIE ใน GIMSK การขัดจังหวะการเปลี่ยนพินจะเปิดใช้งานบนพิน I / O ที่เกี่ยวข้อง หากล้าง PCINT [5: 0] การขัดจังหวะการเปลี่ยนพินบนพิน I / O ที่เกี่ยวข้องจะถูกปิดใช้งาน

พอร์ต I/O

การแนะนำ

พอร์ต AVR ทั้งหมดมีฟังก์ชันอ่าน-ปรับเปลี่ยน-เขียนจริงเมื่อใช้เป็นพอร์ต I/O ดิจิทัลทั่วไป ซึ่งหมายความว่าสามารถเปลี่ยนทิศทางของพินพอร์ตหนึ่งโดยไม่ต้องเปลี่ยนทิศทางของพินอื่นๆ ด้วยคำสั่ง SBI และ CBI เช่นเดียวกับเมื่อเปลี่ยนค่าไดรฟ์ (หากกำหนดค่าเป็นเอาต์พุต) หรือเปิด/ปิดตัวต้านทานแบบดึงขึ้น (หากกำหนดค่าเป็นอินพุต) บัฟเฟอร์เอาท์พุตแต่ละตัวมีลักษณะเฉพาะของไดรฟ์แบบสมมาตรที่มีทั้งซิงก์และแหล่งที่มาสูง ตัวขับพินนั้นแข็งแรงพอที่จะขับเคลื่อนจอ LED ได้โดยตรง พินพอร์ตทั้งหมดมีตัวต้านทานแบบดึงขึ้นที่เลือกได้ทีละตัวพร้อมแหล่งจ่ายtage ความต้านทานคงที่ พิน I/O ทั้งหมดมีไดโอดป้องกันทั้ง VCC และกราวด์ตามที่ระบุใน รูปที่ 10-1. อ้างถึง “ ลักษณะทางไฟฟ้า” ที่หน้า 161 สำหรับรายการพารามิเตอร์ทั้งหมด

รูปที่ 10-1 I/O Pin Equivalent Schematic

รูปที่ 10

การลงทะเบียนและการอ้างอิงบิตทั้งหมดในส่วนนี้เขียนในรูปแบบทั่วไป ตัวพิมพ์เล็ก “x” แทนตัวอักษรสำหรับพอร์ต และตัวพิมพ์เล็ก “n” แทนเลขบิต อย่างไรก็ตาม เมื่อใช้รีจิสเตอร์หรือบิตกำหนดในโปรแกรม ต้องใช้รูปแบบที่แม่นยำ สำหรับอดีตample, PORTB3 สำหรับหมายเลขบิต 3 ใน Port B ซึ่งโดยทั่วไปมีเอกสารเป็น PORTxn ฟิสิคัล I/O Registers และตำแหน่งบิตแสดงอยู่ใน “ ลงทะเบียนคำอธิบาย” บน หน้า 64.

ตำแหน่งแอดเดรสหน่วยความจำ I / O สามตำแหน่งได้รับการจัดสรรสำหรับแต่ละพอร์ตแต่ละพอร์ตสำหรับ Data Register - PORTx, Data Direction Register - DDRx และ Port Input Pins - PINx ตำแหน่ง I / O ของพินอินพุตพอร์ตถูกอ่านอย่างเดียวในขณะที่การลงทะเบียนข้อมูลและการลงทะเบียนทิศทางข้อมูลจะอ่าน / เขียน อย่างไรก็ตามการเขียนลอจิกทีละบิตใน PINx Reg- ister จะส่งผลให้เกิดการสลับบิตที่เกี่ยวข้องในการลงทะเบียนข้อมูล นอกจากนี้ Pull-up Disable - PUD bit ใน MCUCR จะปิดใช้งานฟังก์ชันดึงขึ้นสำหรับพินทั้งหมดในพอร์ตทั้งหมดเมื่อตั้งค่า

การใช้พอร์ต I / O ตามที่อธิบายไว้ใน General Digital I / O “ พอร์ตเป็น Digital I / O ทั่วไป” ในหน้า 53. พินพอร์ตส่วนใหญ่เป็นมัลติเพล็กซ์พร้อมฟังก์ชันอื่นสำหรับคุณสมบัติอุปกรณ์ต่อพ่วงบนอุปกรณ์ วิธีการอธิบายฟังก์ชันทางเลือกแต่ละฟังก์ชันระหว่างพินพอร์ต “ ฟังก์ชั่นพอร์ตสำรอง” บนหน้าที่ 57. อ้างถึงส่วนโมดูลแต่ละส่วนสำหรับคำอธิบายทั้งหมดของฟังก์ชันทางเลือก

โปรดทราบว่าการเปิดใช้งานฟังก์ชันทางเลือกของพินพอร์ตบางตัวจะไม่ส่งผลต่อการใช้พินอื่น ๆ ในพอร์ตเหมือนกับ I / O ดิจิทัลทั่วไป

พอร์ตเป็น Digital I / O ทั่วไป

พอร์ตดังกล่าวเป็นพอร์ต I / O แบบสองทิศทางพร้อมด้วยพูลอัพภายในที่เป็นอุปกรณ์เสริม รูปที่ 10-2 แสดงคำอธิบายการทำงานของพิน I / O-port หนึ่งอันโดยทั่วไปเรียกว่า pxn

รูปที่ 10-2 I/O ดิจิตอลทั่วไป(1)

รูปที่ 10

การกำหนดค่าพิน

พินพอร์ตแต่ละพินประกอบด้วยบิตรีจิสเตอร์สามบิต: DDxn, PORTxn และ PINxn ดังที่แสดงใน “ ลงทะเบียนคำอธิบาย” บน หน้า 64DDxn บิตถูกเข้าถึงที่แอดเดรส DDRx I / O บิต PORTxn ที่ที่อยู่ PORTx I / O และบิต PINxn ที่ที่อยู่ PINx I / O

DDxn bit ใน DDRx Register จะเลือกทิศทางของพินนี้ ถ้า DDxn เขียนลอจิกแบบหนึ่งจะมีการกำหนดค่า PXn เป็นพินเอาต์พุต ถ้า DDxn เขียนลอจิกเป็นศูนย์จะกำหนดค่า pxn เป็นพินอินพุต

ถ้า PORTxn เขียนลอจิกเมื่อกำหนดค่าพินเป็นพินอินพุตตัวต้านทานแบบดึงขึ้นจะเปิดใช้งาน ในการปิดตัวต้านทานแบบดึงขึ้น PORTxn จะต้องเขียนลอจิกเป็นศูนย์หรือต้องกำหนดค่าพินเป็นพินเอาต์พุต พินพอร์ตมีการระบุสามครั้งเมื่อเงื่อนไขการรีเซ็ตทำงานแม้ว่าจะไม่มีนาฬิกาทำงานอยู่ก็ตาม

ถ้า PORTxn ถูกเขียนลอจิกเมื่อกำหนดค่าพินเป็นพินเอาต์พุตขาพอร์ตจะถูกขับเคลื่อนให้สูง (หนึ่ง) ถ้า PORTxn เขียนลอจิกเป็นศูนย์เมื่อกำหนดค่าพินเป็นพินเอาต์พุตขาพอร์ตจะถูกขับเคลื่อนให้ต่ำ (ศูนย์)

การสลับพิน

การเขียนลอจิกหนึ่งถึง PINxn จะสลับค่าของ PORTxn โดยไม่ขึ้นกับค่าของ DDRxn โปรดทราบว่าคำสั่ง SBI สามารถใช้เพื่อสลับบิตเดียวในพอร์ตได้

การสลับระหว่างอินพุตและเอาต์พุต

เมื่อสลับระหว่างสามสถานะ ({DDxn, PORTxn} = 0b00) และเอาต์พุตสูง ({DDxn, PORTxn} = 0b11) สถานะระดับกลางที่เปิดใช้งานการดึงขึ้น {DDxn, PORTxn} = 0b01) หรือเอาต์พุตต่ำ ({DDxn, PORTxn} = 0b10) จะต้องเกิดขึ้น โดยปกติ สถานะที่เปิดใช้งานการดึงขึ้นจะยอมรับได้อย่างสมบูรณ์ เนื่องจากสภาพแวดล้อมที่มีความต้านทานสูงจะไม่สังเกตเห็นความแตกต่างระหว่างไดรเวอร์สูงที่แข็งแกร่งและดึงขึ้น หากไม่เป็นเช่นนั้น บิต PUD ในทะเบียน MCUCR สามารถตั้งค่าให้ปิดใช้งานการดึงขึ้นทั้งหมดในทุกพอร์ต

การสลับระหว่างอินพุตโดยดึงขึ้นและเอาต์พุตต่ำทำให้เกิดปัญหาเดียวกัน ผู้ใช้ต้องใช้สถานะไตร ({DDxn, PORTxn} = 0b00) หรือสถานะสูงของเอาต์พุต ({DDxn, PORTxn} = 0b10) เป็นขั้นตอนกลาง

ตาราง 10-1 สรุปสัญญาณควบคุมสำหรับค่าพิน

ตารางที่ 10-1. การกำหนดค่าพอร์ตพิน

DDxn พอร์ตxn พุดดิ้ง

(ใน MCUCR)

ไอ/โอ ดึงขึ้น ความคิดเห็น
0 0 X ป้อนข้อมูล เลขที่ ไตรรัฐ (Hi-Z)
0 1 0 ป้อนข้อมูล ใช่ pxn จะจ่ายกระแสไฟฟ้าหากต่อ ดึงต่ำ
0 1 1 ป้อนข้อมูล เลขที่ ไตรรัฐ (Hi-Z)
1 0 X เอาท์พุต เลขที่ เอาท์พุทต่ำ (อ่างล้างจาน)
1 1 X เอาท์พุต เลขที่ เอาต์พุตสูง (ที่มา)

การอ่านค่า Pin

โดยไม่ขึ้นอยู่กับการตั้งค่าของบิตทิศทางข้อมูล DDxn คุณสามารถอ่านพินพอร์ตผ่าน PINxn Register ดังที่แสดงใน รูปที่ 10-2บิตลงทะเบียน PINxn และสลักก่อนหน้าเป็นซิงโครไนเซอร์ สิ่งนี้จำเป็นเพื่อหลีกเลี่ยงความสามารถในการแพร่กระจายหากพินทางกายภาพเปลี่ยนค่าใกล้กับขอบของนาฬิกาภายใน แต่ก็ทำให้เกิดความล่าช้าด้วยเช่นกัน รูปที่ 10-3 แสดงแผนภาพเวลาของการซิงโครไนซ์เมื่ออ่านค่าพินที่ใช้ภายนอก ความล่าช้าในการแพร่กระจายสูงสุดและต่ำสุดจะแสดงเป็น tpd,max และ tpd,min ตามลำดับ

พิจารณาระยะเวลานาฬิกาที่เริ่มต้นไม่นานหลังจากขอบนาฬิการะบบแรกตก สลักจะปิดเมื่อนาฬิกาอยู่ในระดับต่ำและจะโปร่งใสเมื่อนาฬิกาอยู่ในระดับสูงตามที่ระบุโดยพื้นที่สีเทาของสัญญาณ“ SYNC LATCH” ค่าสัญญาณจะถูกล็อคเมื่อนาฬิกาของระบบเหลือน้อย มันถูกตอกบัตรลงในการลงทะเบียน PINxn ที่ขอบนาฬิกาบวกที่ประสบความสำเร็จ ตามที่ระบุโดยลูกศรสองตัว tpd, max และ tpd, min การเปลี่ยนสัญญาณเดียวบนพินจะล่าช้าระหว่างช่วงเวลานาฬิกาของระบบ½และ1½ขึ้นอยู่กับเวลาของการยืนยัน

เมื่ออ่านค่าพินที่กำหนดโดยซอฟต์แวร์จะต้องใส่คำสั่ง nop ตามที่ระบุไว้ใน รูปที่ 10-4. คำสั่งออกจะตั้งค่าสัญญาณ“ SYNC LATCH” ที่ขอบบวกของนาฬิกา ในกรณีนี้การหน่วงเวลา tpd ผ่านซิงโครไนเซอร์คือช่วงเวลาหนึ่งนาฬิกาของระบบ

รหัสต่อไปนี้exampไฟล์แสดงวิธีตั้งค่าพินพอร์ต B เป็น 0 และ 1 สูง 2 และ 3 ต่ำ และกำหนดพินพอร์ตจาก 4 ถึง 5 เป็นอินพุตโดยกำหนดแบบดึงขึ้นให้กับพินพอร์ต 4 ค่าพินที่ได้จะถูกอ่านอีกครั้ง แต่ ตามที่กล่าวไว้ก่อนหน้านี้ มีคำสั่ง nop รวมอยู่ด้วยเพื่อให้สามารถอ่านกลับค่าที่เพิ่งกำหนดให้กับพินบางส่วนได้

รหัสแอสเซมบลีเช่นample(1)

; กำหนด pull-ups และตั้งค่าเอาต์พุตให้สูง

; กำหนดทิศทางสำหรับหมุดพอร์ต

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

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

ออก PORTB,r16

ออก DDRB,r17

; ใส่ nop สำหรับการซิงโครไนซ์

ไม่นะ

; อ่านหมุดพอร์ต

ใน r16,PINB

หมายเหตุ: สำหรับโปรแกรมการประกอบ จะมีการใช้รีจิสเตอร์ชั่วคราวสองตัวเพื่อลดเวลาจากการดึงขึ้นที่พิน 0, 1 และ 4 จนกว่าบิตทิศทางจะถูกตั้งค่าอย่างถูกต้อง กำหนดบิต 2 และ 3 ให้ต่ำและกำหนดบิตใหม่เป็น 0 และ 1 เป็นไดรเวอร์ที่แข็งแกร่งสูง

รหัส C อดีตample
อักขระที่ไม่ได้ลงนาม i;

/* กำหนด pull-ups และตั้งค่าเอาต์พุตสูง */

/* กำหนดทิศทางสำหรับหมุดพอร์ต */ PORTB = (1<

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

/* ใส่ nop เพื่อซิงโครไนซ์*/

_NOP ();

/* อ่านพอร์ตพิน */ i = PINB;

เปิดใช้งานอินพุตดิจิตอลและโหมดสลีป

ตามที่แสดงใน รูปที่ 10-2, สัญญาณอินพุตดิจิตอลสามารถ clamped ไปที่กราวด์ที่อินพุตของ schmitt-trigger สัญญาณ SLEEP ในรูปถูกกำหนดโดย MCU Sleep Controller ในโหมด Power-down เพื่อหลีกเลี่ยงการใช้พลังงานสูง หากสัญญาณอินพุตบางตัวถูกปล่อยให้ลอยอยู่ หรือมีระดับสัญญาณแอนะล็อกใกล้เคียงกับ VCC/2

SLEEP ถูกแทนที่สำหรับพินพอร์ตที่เปิดใช้งานเป็นพินขัดจังหวะภายนอก หากไม่ได้เปิดใช้งานคำขอขัดจังหวะภายนอก SLEEP จะทำงานสำหรับพินเหล่านี้ด้วย นอกจากนี้ SLEEP ยังถูกแทนที่ด้วยฟังก์ชันทางเลือกอื่น ๆ อีกมากมายตามที่อธิบายไว้ใน “ ฟังก์ชั่นพอร์ตสำรอง” บนหน้าที่ 57.

หากลอจิกระดับสูง (“หนึ่ง”) มีอยู่บนพินอินเตอร์รัปต์ภายนอกแบบอะซิงโครนัสที่กำหนดค่าเป็น “อินเตอร์รัปต์บน Rising Edge, Falling Edge หรือการเปลี่ยนแปลงลอจิกใดๆ บนพิน” ในขณะที่การขัดจังหวะภายนอกไม่ได้เปิดใช้งาน แฟล็กการขัดจังหวะภายนอกที่สอดคล้องกันจะ จะถูกตั้งค่าเมื่อกลับมาทำงานต่อจากโหมดสลีปที่กล่าวถึงข้างต้น เป็น clampในโหมดสลีปเหล่านี้จะทำให้เกิดการเปลี่ยนแปลงตรรกะที่ร้องขอ

พินที่ไม่ได้เชื่อมต่อ

หากไม่ได้ใช้พินบางตัวขอแนะนำให้ตรวจสอบให้แน่ใจว่าพินเหล่านี้มีระดับที่กำหนดไว้ แม้ว่าอินพุตดิจิทัลส่วนใหญ่จะถูกปิดใช้งานในโหมดดีพสลีปตามที่อธิบายไว้ข้างต้น แต่ควรหลีกเลี่ยงอินพุตแบบลอยเพื่อลดการใช้กระแสในโหมดอื่น ๆ ทั้งหมดที่เปิดใช้อินพุตดิจิทัล (รีเซ็ต, โหมดแอคทีฟและโหมดไม่ได้ใช้งาน)

วิธีที่ง่ายที่สุดในการตรวจสอบระดับพินที่ไม่ได้ใช้ตามที่กำหนด คือการเปิดใช้งานการดึงขึ้นภายใน ในกรณีนี้ การดึงขึ้นจะถูกปิดใช้งานระหว่างการรีเซ็ต หากการใช้พลังงานต่ำระหว่างการรีเซ็ตเป็นสิ่งสำคัญ ขอแนะนำให้ใช้การดึงขึ้นหรือดึงลงภายนอก ไม่แนะนำให้เชื่อมต่อพินที่ไม่ได้ใช้เข้ากับ VCC หรือ GND โดยตรง เนื่องจากอาจทำให้เกิดกระแสไฟฟ้ามากเกินไปหากกำหนดค่าพินเป็นเอาต์พุตโดยไม่ตั้งใจ

ฟังก์ชั่นพอร์ตสำรอง

พินพอร์ตส่วนใหญ่มีฟังก์ชันอื่นนอกเหนือจากการเป็น I / Os ดิจิทัลทั่วไป รูปที่ 10-5 แสดงให้เห็นว่าขาพอร์ตควบคุมสัญญาณจากตัวย่ออย่างไร รูปที่ 10-2 สามารถถูกแทนที่โดยฟังก์ชันอื่น สัญญาณการลบล้างอาจไม่มีอยู่ในพินพอร์ตทั้งหมด แต่รูปนี้ใช้เป็นคำอธิบายทั่วไปที่ใช้ได้กับพินพอร์ตทั้งหมดในตระกูลไมโครคอนโทรลเลอร์ AVR

ตารางที่ 10-2. คำอธิบายทั่วไปของสัญญาณการเอาชนะสำหรับฟังก์ชันสำรอง

ชื่อสัญญาณ ชื่อ-นามสกุล คำอธิบาย
พว เปิดใช้งานการแทนที่แบบดึงขึ้น หากตั้งค่าสัญญาณนี้การเปิดใช้งานแบบดึงขึ้นจะถูกควบคุมโดยสัญญาณ PUOV หากสัญญาณนี้ถูกล้างการดึงขึ้นจะเปิดใช้งานเมื่อ

{DDxn, PORTxn, PUD} = 0b010

พูโอวี ค่าการแทนที่แบบดึงขึ้น หากมีการตั้งค่า PUOE การดึงขึ้นจะเปิด / ปิดเมื่อ PUOV ถูกตั้งค่า / ล้างโดยไม่คำนึงถึงการตั้งค่าบิต DDxn, PORTxn และ PUD Register
ดีโออี เปิดใช้งานการแทนที่ทิศทางข้อมูล หากตั้งค่าสัญญาณนี้เอาท์พุทไดรเวอร์เปิดใช้งานจะถูกควบคุมโดยสัญญาณ DDOV หากสัญญาณนี้ถูกล้างไดรเวอร์เอาต์พุตจะเปิดใช้งานโดยบิตการลงทะเบียน DDxn
ดีดีโอวี ค่าการแทนที่ทิศทางข้อมูล หากตั้งค่า DDOE ไดรเวอร์เอาต์พุตจะเปิด / ปิดเมื่อ DDOV ถูกตั้งค่า / ล้างโดยไม่คำนึงถึงการตั้งค่าของบิตการลงทะเบียน DDxn
พีวีโอเอ เปิดใช้งานการแทนที่ค่าพอร์ต หากสัญญาณนี้ถูกตั้งค่าและเปิดใช้งานไดรเวอร์เอาต์พุตค่าพอร์ตจะถูกควบคุมโดยสัญญาณ PVOV ถ้า PVOE ถูกล้างและเปิดใช้งานไดรเวอร์เอาต์พุตค่าพอร์ตจะถูกควบคุมโดยบิตรีจิสเตอร์ PORTxn
พีวีโอวี ค่าการแทนที่ค่าพอร์ต หากตั้งค่า PVOE ค่าพอร์ตจะถูกตั้งเป็น PVOV โดยไม่คำนึงถึงการตั้งค่าของบิตรีจิสเตอร์ PORTxn
อปท เปิดใช้งาน Port Toggle Override หากตั้งค่า PTOE บิตการลงทะเบียน PORTxn จะกลับด้าน
ดีโออี อินพุตดิจิทัลเปิดใช้งานการแทนที่เปิดใช้งาน หากตั้งค่าบิตนี้ Digital Input Enable จะถูกควบคุมโดยสัญญาณ DIEOV หากสัญญาณนี้ถูกล้างการเปิดใช้งานอินพุตดิจิตอลจะถูกกำหนดโดยสถานะ MCU (โหมดปกติโหมดสลีป)
ดีโอวี อินพุตดิจิทัลเปิดใช้งานค่าการแทนที่ หากตั้งค่า DIEOE อินพุตดิจิทัลจะเปิด / ปิดเมื่อตั้งค่า / ล้าง DIEOV โดยไม่คำนึงถึงสถานะ MCU (โหมดปกติโหมดสลีป)
DI อินพุตดิจิตอล นี่คืออินพุตดิจิทัลสำหรับฟังก์ชันอื่น ในรูปสัญญาณเชื่อมต่อกับเอาต์พุตของ schmitt-trigger แต่ก่อนซิงโครไนซ์ หากไม่ใช้อินพุตดิจิทัลเป็นแหล่งสัญญาณนาฬิกาโมดูลที่มีฟังก์ชันทางเลือกจะใช้ซิงโครไนเซอร์ของตัวเอง
เอไอโอ อินพุต / เอาท์พุตอนาล็อก นี่คืออินพุต / เอาต์พุตแบบอะนาล็อกไปยัง / จากฟังก์ชันทางเลือก สัญญาณเชื่อมต่อโดยตรงกับแผ่นและสามารถใช้งานได้แบบสองทิศทาง

ส่วนย่อยต่อไปนี้อธิบายฟังก์ชันทางเลือกสำหรับแต่ละพอร์ตในไม่ช้าและเชื่อมโยงสัญญาณการแทนที่กับฟังก์ชันทางเลือก โปรดดูคำอธิบายฟังก์ชันทางเลือกสำหรับรายละเอียดเพิ่มเติม

ฟังก์ชั่นสำรองของพอร์ต B

พินพอร์ต B พร้อมฟังก์ชันทางเลือกจะแสดงในรูปแบบ ตาราง 10-3.

ตารางที่ 10-3. Port B Pins ฟังก์ชันสำรอง

พอร์ตพิน ฟังก์ชั่นทางเลือก
พีบี5

รีเซ็ต: รีเซ็ตพิน

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

PCINT5: Pin Change Interrupt ที่มา 5

พีบี4 XTAL2: เอาต์พุตคริสตัลออสซิลเลเตอร์ CLKO: เอาต์พุตนาฬิการะบบ ADC2: ช่องอินพุต ADC 2

OC1B: Timer / Counter1 เปรียบเทียบ Match B เอาต์พุต PCINT4: Pin Change Interrupt 0, Source 4

พีบี3 XTAL1: อินพุตคริสตัลออสซิลเลเตอร์ CLKI: อินพุตนาฬิกาภายนอก ADC3: อินพุต ADC ช่อง 3

OC1B: ตัวจับเวลาเสริม / ตัวนับ 1 เปรียบเทียบการจับคู่ B เอาต์พุต PCINT3: Pin Change Interrupt 0, Source 3

พีบี2 SCK: อินพุตสัญญาณนาฬิกาอนุกรม ADC1: ช่องสัญญาณเข้า ADC 1

T0: ตัวจับเวลา / ตัวนับ 0 แหล่งสัญญาณนาฬิกา USCK: นาฬิกา USI (โหมดสามสาย) SCL: นาฬิกา USI (โหมดสองสาย) INT0: การขัดจังหวะภายนอก 0 อินพุต PCINT2: การเปลี่ยนพินอินเทอร์รัปต์ 0

พีบี1 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
พีบี0 MOSI :: SPI Master Data Output / Slave Data Input AIN0: Analog Comparator, Positive Input

OC0A: Timer/Counter0 เปรียบเทียบเอาต์พุต Match A

OC1A: ตัวจับเวลาเสริม / ตัวนับ 1 เปรียบเทียบการจับคู่เอาต์พุต DI: อินพุตข้อมูล USI (โหมดสามสาย)

SDA: อินพุตข้อมูล USI (โหมดสองสาย) AREF: External Analog Reference PCINT0: Pin Change Interrupt 0, Source 0

พอร์ต B บิต 5 - รีเซ็ต / dW / ADC0 / PCINT5

รีเซ็ต: อินพุตรีเซ็ตภายนอกทำงานอยู่ในระดับต่ำและเปิดใช้งานโดยยกเลิกการตั้งโปรแกรม (“ 1”) ฟิวส์ RSTDISBL Pullup ถูกเปิดใช้งานและไดรเวอร์เอาต์พุตและอินพุตดิจิตอลจะปิดใช้งานเมื่อใช้พินเป็นพิน RESET

dW: เมื่อตั้งโปรแกรม debugWIRE Enable (DWEN) Fuse และ Lock bits ไม่ได้ตั้งโปรแกรมระบบ debugWIRE ภายในอุปกรณ์เป้าหมายจะเปิดใช้งาน พินพอร์ต RESET ถูกกำหนดค่าเป็นพิน I / O แบบสองทิศทางแบบ Wire-AND (open-drain) โดยเปิดใช้งานแบบดึงขึ้นและกลายเป็นเกตเวย์การสื่อสารระหว่างเป้าหมายและตัวจำลอง

ADC0: ตัวแปลงอนาล็อกเป็นดิจิตอล, ช่อง 0

PCINT5: Pin Change Interrupt source 5

พอร์ต B, บิต 4 - XTAL2 / CLKO / ADC2 / OC1B / PCINT4

XTAL2: ขาออสซิลเลเตอร์นาฬิกาชิป 2. ใช้เป็นเข็มนาฬิกาสำหรับแหล่งสัญญาณนาฬิกาชิปทั้งหมดยกเว้น RC Oscillator ที่ปรับเทียบได้ภายในและนาฬิกาภายนอก เมื่อใช้เป็นพินนาฬิกาจะไม่สามารถใช้พินเป็นพิน I / O ได้ เมื่อใช้ RC Oscillator ที่ปรับเทียบได้ภายในหรือนาฬิกาภายนอกเป็นแหล่งสัญญาณนาฬิกาชิป PB4 จะทำหน้าที่เป็นพิน I / O ธรรมดา

CLKO: นาฬิการะบบแยกสามารถส่งออกบนพิน PB4 นาฬิการะบบที่แบ่งจะถูกส่งออกหากตั้งโปรแกรม CKOUT Fuse ไว้โดยไม่คำนึงถึงการตั้งค่า PORTB4 และ DDB4 นอกจากนี้ยังจะถูกส่งออกในระหว่างการรีเซ็ต

ADC2: ตัวแปลงอนาล็อกเป็นดิจิตอล, ช่อง 2

OC1B: เอาต์พุตเปรียบเทียบเอาต์พุตการจับคู่: พิน PB4 สามารถใช้เป็นเอาต์พุตภายนอกสำหรับ Timer / Counter1 Compare Match B เมื่อกำหนดค่าเป็นเอาต์พุต (ชุด DDB4) หมุด OC1B ยังเป็นพินเอาต์พุตสำหรับฟังก์ชันจับเวลาโหมด PWM

PCINT4: Pin Change Interrupt source 4

พอร์ต B, บิต 3 - XTAL1 / CLKI / ADC3 / OC1B / PCINT3

XTAL1: ขาออสซิลเลเตอร์นาฬิกาชิป 1. ใช้สำหรับแหล่งสัญญาณนาฬิกาของชิปทั้งหมดยกเว้นออสซิลเลเตอร์ RC ที่ปรับเทียบได้ภายใน เมื่อใช้เป็นพินนาฬิกาจะไม่สามารถใช้พินเป็นพิน I / O ได้

CLKI: อินพุตนาฬิกาจากแหล่งสัญญาณนาฬิกาภายนอกโปรดดู “ นาฬิกาภายนอก” ที่หน้า 26.

ADC3: ตัวแปลงอนาล็อกเป็นดิจิตอล, ช่อง 3

OC1B: เอาต์พุตกลับด้านเปรียบเทียบเอาต์พุตการจับคู่: พิน PB3 สามารถทำหน้าที่เป็นเอาต์พุตภายนอกสำหรับ Timer / Counter1 Compare Match B เมื่อกำหนดค่าเป็นเอาต์พุต (ชุด DDB3) หมุด OC1B ยังเป็นขาเอาต์พุตแบบกลับด้านสำหรับฟังก์ชันจับเวลาโหมด PWM

PCINT3: Pin Change Interrupt source 3

พอร์ต B, บิต 2 - SCK / ADC1 / T0 / USCK / SCL / INT0 / PCINT2

SCK: เอาต์พุตนาฬิกาหลัก, ขาอินพุตนาฬิกาทาสสำหรับช่อง SPI เมื่อเปิดใช้งาน SPI เป็น Slave พินนี้จะถูกกำหนดค่าเป็นอินพุตโดยไม่คำนึงถึงการตั้งค่าของ DDB2 เมื่อเปิดใช้งาน SPI เป็น Master ทิศทางข้อมูลของพินนี้จะถูกควบคุมโดย DDPB2 เมื่อพินถูกบังคับโดย SPI ให้เป็นอินพุตการดึงขึ้นยังสามารถควบคุมได้ด้วยบิต PORTB2

ADC1: ตัวแปลงอนาล็อกเป็นดิจิตอล, ช่อง 1

T0: แหล่งที่มาของตัวนับ Timer / Counter0

USCK: นาฬิกาอินเทอร์เฟซอนุกรมสากลโหมดสามสาย

SCL: นาฬิกาอนุกรมโหมดสองสายสำหรับโหมด USI สองสาย

INT0: แหล่งที่มาของการขัดจังหวะภายนอก 0

PCINT2: Pin Change Interrupt source 2

พอร์ต B, บิต 1 - MISO / AIN1 / OC0B / OC1A / DO / PCINT1

MISO: อินพุตข้อมูลหลัก, ขาเอาต์พุตข้อมูล Slave สำหรับช่อง SPI เมื่อเปิดใช้งาน SPI เป็น Master พินนี้จะถูกกำหนดค่าเป็นอินพุตโดยไม่คำนึงถึงการตั้งค่าของ DDB1 เมื่อเปิดใช้งาน SPI เป็น Slave ทิศทางข้อมูลของพินนี้จะถูกควบคุมโดย DDB1 เมื่อพินถูกบังคับโดย SPI ให้เป็นอินพุตการดึงขึ้นยังสามารถควบคุมได้ด้วยบิต PORTB1

AIN1: อินพุตเชิงลบของตัวเปรียบเทียบอนาล็อก กำหนดค่าพินพอร์ตเป็นอินพุตโดยปิดการดึงขึ้นภายในเพื่อป้องกันไม่ให้ฟังก์ชันพอร์ตดิจิทัลรบกวนการทำงานของ Analog Comparator

OC0B: เอาท์พุทเปรียบเทียบผลลัพธ์ที่ตรงกัน พิน PB1 สามารถใช้เป็นเอาต์พุตภายนอกสำหรับ Timer / Counter0 Compare Match B ต้องกำหนดค่าพิน PB1 เป็นเอาต์พุต (ชุด DDB1 (หนึ่ง)) เพื่อให้บริการฟังก์ชันนี้ หมุด OC0B ยังเป็นพินเอาต์พุตสำหรับฟังก์ชันจับเวลาโหมด PWM

OC1A: เอาต์พุตเปรียบเทียบเอาต์พุตการจับคู่: พิน PB1 สามารถใช้เป็นเอาต์พุตภายนอกสำหรับ Timer / Counter1 Compare Match B เมื่อกำหนดค่าเป็นเอาต์พุต (ชุด DDB1) หมุด OC1A ยังเป็นพินเอาต์พุตสำหรับฟังก์ชันจับเวลาโหมด PWM

DO: เอาต์พุตข้อมูลอินเทอร์เฟซอินเทอร์เฟซอนุกรมสากลโหมดสามสาย โหมดสามสายเอาต์พุตข้อมูลจะแทนที่ค่า PORTB1 และถูกขับเคลื่อนไปยังพอร์ตเมื่อมีการตั้งค่าบิตทิศทางข้อมูล DDB1 (หนึ่ง) PORTB1 ยังคงเปิดใช้งานการดึงขึ้นหากทิศทางเป็นอินพุตและตั้งค่า PORTB1 ไว้ (หนึ่ง)

PCINT1: Pin Change Interrupt source 1

พอร์ต B, บิต 0 - MOSI / AIN0 / OC0A / OC1A / DI / SDA / AREF / PCINT0

MOSI: เอาต์พุตข้อมูลหลัก SPI, อินพุตข้อมูล Slave สำหรับช่อง SPI เมื่อเปิดใช้งาน SPI เป็น Slave พินนี้จะถูกกำหนดค่าเป็นอินพุตโดยไม่คำนึงถึงการตั้งค่า DDB0 เมื่อเปิดใช้งาน SPI เป็น Master ทิศทางข้อมูลของพินนี้จะถูกควบคุมโดย DDB0 เมื่อพินถูกบังคับโดย SPI ให้เป็นอินพุตการดึงขึ้นยังสามารถควบคุมได้ด้วยบิต PORTB0

AIN0: อินพุตบวกของตัวเปรียบเทียบอนาล็อก กำหนดค่าพินพอร์ตเป็นอินพุตโดยปิดการดึงขึ้นภายในเพื่อป้องกันไม่ให้ฟังก์ชันพอร์ตดิจิทัลรบกวนการทำงานของ Analog Comparator

OC0A: เอาท์พุทเปรียบเทียบผลลัพธ์ที่ตรงกัน พิน PB0 สามารถใช้เป็นเอาต์พุตภายนอกสำหรับ Timer / Counter0 Compare Match A เมื่อกำหนดค่าเป็นเอาต์พุต (ชุด DDB0 (หนึ่ง)) หมุด OC0A ยังเป็นพินเอาต์พุตสำหรับฟังก์ชันจับเวลาโหมด PWM

OC1A: เอาต์พุตกลับด้านเปรียบเทียบเอาต์พุตการจับคู่: พิน PB0 สามารถทำหน้าที่เป็นเอาต์พุตภายนอกสำหรับ Timer / Counter1 Compare Match B เมื่อกำหนดค่าเป็นเอาต์พุต (ชุด DDB0) นอกจากนี้หมุด OC1A ยังเป็นขาเอาต์พุตแบบกลับด้านสำหรับฟังก์ชันจับเวลาโหมด PWM

SDA: ข้อมูลอินเทอร์เฟซแบบอนุกรมโหมดสองสาย

AREF: การอ้างอิงอนาล็อกภายนอกสำหรับ ADC ไดรเวอร์ Pullup และเอาต์พุตถูกปิดใช้งานใน PB0 เมื่อใช้พินเป็นข้อมูลอ้างอิงภายนอกหรือ Internal Voltage อ้างอิงกับตัวเก็บประจุภายนอกที่พิน AREF

DI: การป้อนข้อมูลในโหมดสามสาย USI USI โหมดสามสายไม่แทนที่ฟังก์ชันพอร์ตปกติดังนั้นต้องกำหนดค่าพินเป็นอินพุตสำหรับฟังก์ชัน DI

PCINT0: Pin Change Interrupt source 0

ตาราง 10-4 และ ตาราง 10-5 เชื่อมโยงฟังก์ชันทางเลือกของพอร์ต B กับสัญญาณการลบล้างที่แสดงใน รูปที่ 10-5 บน หน้า 58.

ตารางที่ 10-4. การเอาชนะสัญญาณสำหรับฟังก์ชันสำรองใน PB[5:3]

ชื่อสัญญาณ PB5 / รีเซ็ต / ADC0 / PCINT5 PB4/ADC2/XTAL2/ OC1B/PCINT4 PB3/ADC3/XTAL1/ OC1B/PCINT3
พว

ริสทีดีสบีแอล(1) • ดีเวิน(1)

0 0
พูโอวี 1 0 0
ดีโออี ริสทีดีสบีแอล(1) • ดีเวิน(1) 0 0
ดีดีโอวี debugWire ส่ง 0 0
พีวีโอเอ 0 เปิดใช้งาน OC1B

เปิดใช้งาน OC1B

พีวีโอวี 0 OC1B OC1B
อปท 0 0 0
ดีโออี

ริสทีดีสบีแอล(1) + (PCINT5 • PCIE + ADC0D)

PCINT4 • PCIE + ADC2D PCINT3 • PCIE + ADC3D
ดีโอวี ADC0D ADC2D ADC3D
DI อินพุต PCINT5 อินพุต PCINT4 อินพุต PCINT3
เอไอโอ รีเซ็ตอินพุตอินพุต ADC0 อินพุต ADC2 อินพุต ADC3

หมายเหตุ: เมื่อฟิวส์เป็น “0” (ตั้งโปรแกรมไว้)

ตารางที่ 10-5. การเอาชนะสัญญาณสำหรับฟังก์ชันสำรองใน PB[2:0]

ชื่อสัญญาณ PB2/SCK/ADC1/T0/ USCK/SCL/INT0/PCINT2 PB1/MISO/DO/AIN1/ OC1A/OC0B/PCINT1 PB0/MOSI/DI/SDA/AIN0/AR EF/OC1A/OC0A/

พีซีอินท์0

พว USI_TWO_WIRE 0 USI_TWO_WIRE
พูโอวี 0 0 0
ดีโออี USI_TWO_WIRE 0 USI_TWO_WIRE
ดีดีโอวี (USI_SCL_HOLD + PORTB2) • DDB2 0  

(SDA + PORTB0) • DDB0

พีวีโอเอ USI_TWO_WIRE • DDB2 OC0B เปิดใช้งาน + OC1A เปิดใช้งาน + USI_THREE_WIRE

OC0A เปิดใช้งาน + OC1A เปิดใช้งาน + (USI_TWO_WIRE

ดีดีบี0)

พีวีโอวี 0 OC0B + OC1A + อย

โอซี0เอ + โอซี1เอ

อปท สำนักงานคณะกรรมการการศึกษาขั้นพื้นฐานแห่งสหรัฐอเมริกา (USITC) 0 0
ดีโออี PCINT2 • PCIE + ADC1D + USISIE PCINT1 • PCIE + AIN1D PCINT0 • PCIE + AIN0D + USISIE
ดีโอวี ADC1D ไอน์1ดี ไอน์0ดี
DI T0 / USCK / SCL / INT0 /

อินพุต PCINT2

อินพุต PCINT1 อินพุต DI / SDA / PCINT0
เอไอโอ อินพุต ADC1 อินพุตเชิงลบของตัวเปรียบเทียบอนาล็อก อินพุตเชิงบวกของตัวเปรียบเทียบแอนะล็อก

ลงทะเบียนคำอธิบาย

MCUCR - ทะเบียนควบคุม MCU

นิดหน่อย 7 6 5 4 3 2 1 0
ขนาด 0x35 บอดส์ พุดดิ้ง SE เอสเอ็ม1 เอสเอ็ม0 ร่างกาย ISC01 ISC00 มจร
อ่าน/เขียน R อา/ว อา/ว อา/ว อา/ว R อา/ว อา/ว
ค่าเริ่มต้น 0 0 0 0 0 0 0 0

Bit 6 - PUD: Pull-up Disable

เมื่อเขียนบิตนี้เป็นหนึ่งพูลอัพในพอร์ต I / O จะปิดใช้งานแม้ว่าจะมีการกำหนดค่ารีจิสเตอร์ DDxn และ PORTxn ให้เปิดใช้งานพูลอัพ ({DDxn, PORTxn} = 0b01) ดู “ การกำหนดค่าพิน” ในหน้า 54 สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับคุณลักษณะนี้

PORTB - การลงทะเบียนข้อมูลพอร์ต B

นิดหน่อย 7 6 5 4 3 2 1 0
ขนาด 0x18 พอร์ตบี5 พอร์ตบี4 พอร์ตบี3 พอร์ตบี2 พอร์ตบี1 พอร์ตบี0 พอร์ตบี
อ่าน/เขียน R R อา/ว อา/ว อา/ว อา/ว อา/ว อา/ว
ค่าเริ่มต้น 0 0 0 0 0 0 0 0

DDRB - ลงทะเบียนทิศทางข้อมูลพอร์ต B

นิดหน่อย 7 6 5 4 3 2 1 0
ขนาด 0x17 ดีดีบี5 ดีดีบี4 ดีดีบี3 ดีดีบี2 ดีดีบี1 ดีดีบี0 ดีอาร์บี
อ่าน/เขียน R R อา/ว อา/ว อา/ว อา/ว อา/ว อา/ว
ค่าเริ่มต้น 0 0 0 0 0 0 0 0

PINB - ที่อยู่พินอินพุตพอร์ต B

นิดหน่อย 7 6 5 4 3 2 1 0
ขนาด 0x16 พินบี5 พินบี4 พินบี3 พินบี2 พินบี1 พินบี0 พินบ์
อ่าน/เขียน R R อา/ว อา/ว อา/ว อา/ว อา/ว อา/ว
ค่าเริ่มต้น 0 0 ไม่มีข้อมูล ไม่มีข้อมูล ไม่มีข้อมูล ไม่มีข้อมูล ไม่มีข้อมูล ไม่มีข้อมูล

8-bit Timer / Counter0 พร้อม PWM

คุณสมบัติ

หน่วยเปรียบเทียบเอาต์พุตอิสระสองหน่วย

Double Buffered Output เปรียบเทียบรีจิสเตอร์

ล้างตัวจับเวลาในการเปรียบเทียบการจับคู่ (โหลดอัตโนมัติ)

Glitch Free ตัวปรับความกว้างพัลส์เฟสที่ถูกต้อง (PWM)

ช่วงเวลา PWM ตัวแปร

เครื่องกำเนิดความถี่

แหล่งที่มาของการขัดจังหวะอิสระสามแหล่ง (TOV0, OCF0A และ OCF0B)

เกินview

Timer / Counter0 เป็นโมดูลตัวจับเวลา / ตัวนับ 8 บิตสำหรับวัตถุประสงค์ทั่วไปโดยมีหน่วยเปรียบเทียบเอาต์พุตอิสระสองหน่วยและด้วยการสนับสนุน PWM ช่วยให้สามารถกำหนดเวลาการดำเนินการของโปรแกรมได้อย่างแม่นยำ (การจัดการเหตุการณ์) และการสร้างคลื่น

แผนภาพบล็อกที่เรียบง่ายของตัวจับเวลา / ตัวนับ 8 บิตจะแสดงในรูปแบบ รูปที่ 11-1. สำหรับตำแหน่งที่แท้จริงของพิน I / O โปรดดูที่ “ Pinout ATtiny25 / 45/85” บนหน้าที่ 2. ซีพียู I / O รีจิสเตอร์ที่สามารถเข้าถึงได้รวมถึงบิต I / O และพิน I / O จะแสดงเป็นตัวหนา การลงทะเบียน I / O เฉพาะอุปกรณ์และตำแหน่งบิตแสดงอยู่ในไฟล์ “ ลงทะเบียนคำอธิบาย” บนหน้าที่ 77.

ตัวจับเวลา/ตัวนับ (TCNT0) และเอาต์พุตเปรียบเทียบรีจิสเตอร์ (OCR0A และ OCR0B) เป็นรีจิสเตอร์ 8 บิต สัญญาณคำขอขัดจังหวะ (ตัวย่อคือ Int.Req. ในรูป) สามารถมองเห็นได้ใน Timer Interrupt Flag Register (TIFR) การขัดจังหวะทั้งหมดถูกปิดบังแยกกันด้วย Timer Interrupt Mask Register (TIMSK) TIFR และ TIMSK ไม่ได้แสดงอยู่ในรูป

ตัวจับเวลา/ตัวนับสามารถโอเวอร์คล็อกภายใน ผ่านพรีสเกลเลอร์ หรือโดยแหล่งสัญญาณนาฬิกาภายนอกบนพิน T0 ลอจิกบล็อกเลือกนาฬิกาจะควบคุมแหล่งสัญญาณนาฬิกาและขอบที่ Timer/Counter ใช้เพื่อเพิ่ม (หรือลด) ค่าของมัน ตัวจับเวลา/ตัวนับไม่ทำงานเมื่อไม่ได้เลือกแหล่งสัญญาณนาฬิกา เอาต์พุตจากตรรกะการเลือกนาฬิกาเรียกว่านาฬิกาจับเวลา (clkT0)

รีจิสเตอร์เปรียบเทียบเอาต์พุตที่บัฟเฟอร์สองครั้ง (OCR0A และ OCR0B) จะถูกเปรียบเทียบกับค่าตัวจับเวลา / ตัวนับตลอดเวลา ผลลัพธ์ของการเปรียบเทียบสามารถใช้โดย Waveform Generator เพื่อสร้าง PWM หรือเอาต์พุตความถี่ตัวแปรบนพิน Output Compare (OC0A และ OC0B) ดู“ หน่วยเปรียบเทียบผลลัพธ์” ที่หน้า 69 เพื่อดูรายละเอียด เหตุการณ์เปรียบเทียบการจับคู่จะตั้งค่าสถานะการเปรียบเทียบ (OCF0A หรือ OCF0B) ซึ่งสามารถใช้เพื่อสร้างคำขอขัดจังหวะการเปรียบเทียบผลลัพธ์

คำจำกัดความ

การอ้างอิงรีจิสเตอร์และบิตจำนวนมากในส่วนนี้เขียนในรูปแบบทั่วไป ตัวพิมพ์เล็ก“ n” แทนที่ตัวจับเวลา / หมายเลขตัวนับในกรณีนี้ 0 ตัวพิมพ์เล็ก“ x” แทนที่หน่วยเปรียบเทียบผลลัพธ์ในกรณีนี้เปรียบเทียบหน่วย A หรือเปรียบเทียบหน่วย B อย่างไรก็ตามเมื่อใช้รีจิสเตอร์หรือบิตกำหนด ในโปรแกรมต้องใช้รูปแบบที่แม่นยำเช่น TCNT0 สำหรับการเข้าถึงค่าตัวนับ Timer / Counter0 เป็นต้น

คำจำกัดความใน ตาราง 11-1 นอกจากนี้ยังมีการใช้อย่างกว้างขวางทั่วทั้งเอกสาร

ตารางที่ 11-1. คำจำกัดความ

คงที่ คำอธิบาย
ด้านล่าง ตัวนับถึง BOTTOM เมื่อมันกลายเป็น 0x00
แม็กซ์ ตัวนับถึง MAXimum เมื่อกลายเป็น 0xFF (ทศนิยม 255)
สูงสุด ตัวนับถึงจุดสูงสุดเมื่อมีค่าเท่ากับค่าสูงสุดในลำดับการนับ ค่า TOP สามารถกำหนดให้เป็นค่าคงที่ 0xFF (MAX) หรือค่าที่เก็บไว้ในทะเบียน OCR0A การมอบหมายงานขึ้นอยู่กับโหมดการทำงาน

Timer / Counter Prescaler และ Clock Sources

ตัวจับเวลา / ตัวนับสามารถตอกบัตรได้จากแหล่งนาฬิกาภายในหรือภายนอก แหล่งสัญญาณนาฬิกาถูกเลือกโดยลอจิก Clock Select ซึ่งควบคุมโดยบิต Clock Select (c) ที่อยู่ใน Timer / Counter0 Control Register (TCCR0B)

แหล่งนาฬิกาภายในพร้อม Prescaler

Timer/Counter0 สามารถโอเวอร์คล็อกได้โดยตรงจากนาฬิการะบบ (โดยการตั้งค่า CS0[2:0] = 1) ซึ่งให้การทำงานที่รวดเร็วที่สุด โดยมีความถี่สัญญาณนาฬิกาของตัวจับเวลา/ตัวนับสูงสุดเท่ากับความถี่สัญญาณนาฬิกาของระบบ (fCLK_I/O) อีกทางหนึ่ง สามารถใช้การแตะหนึ่งในสี่จากพรีสเกลเลอร์เป็นแหล่งสัญญาณนาฬิกาได้ นาฬิกาที่ปรับล่วงหน้ามีความถี่อย่างใดอย่างหนึ่ง

รีเซ็ต Prescaler

Prescaler ทำงานได้ฟรี กล่าวคือ ทำงานโดยไม่ขึ้นกับลอจิกการเลือกนาฬิกาของ Timer/Counter0 เนื่องจากพรีสเกลเลอร์ไม่ได้รับผลกระทบจากการเลือกนาฬิกาของตัวจับเวลา/ตัวนับ สถานะของพรีสเกลเลอร์จะมีผลกับสถานการณ์ที่ใช้นาฬิกาที่ปรับสเกลล่วงหน้า อดีตหนึ่งampไฟล์ของสิ่งประดิษฐ์ที่ปรับมาตราส่วนล่วงหน้าคือเมื่อมีการเปิดใช้งานตัวจับเวลา/ตัวนับและโอเวอร์คล็อกโดยตัววัดล่วงหน้า (6 > CS0[2:0] > 1) จำนวนรอบสัญญาณนาฬิกาของระบบตั้งแต่เมื่อเปิดใช้งานตัวจับเวลาจนถึงการนับครั้งแรกเกิดขึ้นได้ตั้งแต่ 1 ถึง N+1 รอบสัญญาณนาฬิกาของระบบ โดยที่ N เท่ากับตัวหารพรีสเกลเลอร์ (8, 64, 256 หรือ 1024)

เป็นไปได้ที่จะใช้ Prescaler Reset เพื่อซิงโครไนซ์ Timer / Counter เพื่อดำเนินการโปรแกรม

แหล่งสัญญาณนาฬิกาภายนอก

แหล่งสัญญาณนาฬิกาภายนอกที่ใช้กับพิน T0 สามารถใช้เป็นนาฬิกาจับเวลา/นับถอยหลัง (clkT0) พิน T0 คือ sampนำทุกๆ รอบนาฬิกาของระบบโดยลอจิกการซิงโครไนซ์พิน ซิงโครไนซ์ (sampled) ส่งสัญญาณแล้ว

ผ่านเครื่องตรวจจับขอบ รูปที่ 11-2 แสดงบล็อกไดอะแกรมเทียบเท่าการทำงานของการซิงโครไนซ์ T0 และลอจิกตัวตรวจจับขอบ รีจิสเตอร์จะโอเวอร์คล็อกที่ขอบด้านบวกของนาฬิการะบบภายใน (clkI/O) สลักมีความโปร่งใสในช่วงสูงของนาฬิการะบบภายใน

ตัวตรวจจับขอบจะสร้างพัลส์ clkT0 หนึ่งตัวสำหรับแต่ละขอบที่เป็นบวก (CS0[2:0] = 7) หรือลบ (CS0[2:0] = 6) ที่ตรวจพบ

รีจิสเตอร์ OCR0x จะถูกบัฟเฟอร์สองครั้งเมื่อใช้โหมด Pulse Width Modulation (PWM) ใด ๆ สำหรับโหมดการทำงานปกติและโหมด Clear Timer on Compare (CTC) การบัฟเฟอร์สองครั้งจะถูกปิดใช้งาน การบัฟเฟอร์สองครั้งจะซิงโครไนซ์การอัปเดตของ OCR0x Compare Registers ไปที่ด้านบนหรือด้านล่างของลำดับการนับ การซิงโครไนซ์จะป้องกันไม่ให้เกิดพัลส์ PWM ที่มีความยาวคี่และไม่สมมาตรซึ่งจะทำให้เอาต์พุตไม่มีความผิดพลาด

การเข้าถึงการลงทะเบียน OCR0x อาจดูซับซ้อน แต่ก็ไม่เป็นเช่นนั้น เมื่อเปิดใช้งานการบัฟเฟอร์สองครั้ง CPU จะสามารถเข้าถึงการลงทะเบียนบัฟเฟอร์ OCR0x และหากปิดใช้งานบัฟเฟอร์สองครั้ง CPU จะเข้าถึง OCR0x โดยตรง

เปรียบเทียบเอาท์พุทบังคับ

ในโหมดการสร้างรูปคลื่นที่ไม่ใช่ PWM เอาต์พุตการจับคู่ของตัวเปรียบเทียบสามารถบังคับได้โดยการเขียนหนึ่งไปยังบิต Force Output Compare (FOC0x) การบังคับเปรียบเทียบการจับคู่จะไม่ตั้งค่าสถานะ OCF0x หรือโหลดซ้ำ / ล้างตัวจับเวลา แต่พิน OC0x จะได้รับการอัปเดตราวกับว่ามีการเปรียบเทียบการจับคู่จริงเกิดขึ้น (การตั้งค่าบิต COM0x [1: 0] กำหนดว่าจะตั้งค่าพิน OC0x หรือไม่ หรือสลับ)

เปรียบเทียบ Match Blocking โดย TCNT0 Write

การดำเนินการเขียน CPU ทั้งหมดไปยัง TCNT0 Register จะบล็อกการจับคู่เปรียบเทียบใด ๆ ที่เกิดขึ้นในรอบนาฬิกาจับเวลาถัดไปแม้ว่าตัวจับเวลาจะหยุดลงก็ตาม คุณลักษณะนี้ช่วยให้ OCR0x สามารถเริ่มต้นด้วยค่าเดียวกับ TCNT0 ได้โดยไม่ทำให้เกิดการขัดจังหวะเมื่อเปิดใช้งานนาฬิกาจับเวลา / ตัวนับ

การใช้หน่วยเปรียบเทียบผลลัพธ์

เนื่องจากการเขียน TCNT0 ในโหมดการทำงานใด ๆ จะบล็อกการจับคู่เปรียบเทียบทั้งหมดสำหรับรอบนาฬิกาจับเวลาหนึ่งรอบจึงมีความเสี่ยงที่เกี่ยวข้องเมื่อเปลี่ยน TCNT0 เมื่อใช้หน่วยเปรียบเทียบผลลัพธ์โดยไม่ขึ้นอยู่กับว่าตัวจับเวลา / ตัวนับกำลังทำงานอยู่หรือไม่ หากค่าที่เขียนถึง TCNT0 เท่ากับค่า OCR0x การเปรียบเทียบการจับคู่จะพลาดทำให้การสร้างรูปคลื่นไม่ถูกต้อง ในทำนองเดียวกันอย่าเขียนค่า TCNT0 เท่ากับ BOTTOM เมื่อตัวนับนับถอยหลัง

ควรทำการตั้งค่า OC0x ก่อนตั้งค่า Data Direction Register สำหรับขาพอร์ตที่จะส่งออก วิธีที่ง่ายที่สุดในการตั้งค่า OC0x คือการใช้บิตแฟลช Force Output Compare (FOC0x) ในโหมด Normal OC0x Registers จะเก็บค่าไว้แม้ว่าจะเปลี่ยนไปมาระหว่างโหมด Waveform Generation ก็ตาม

โปรดทราบว่าบิต COM0x [1: 0] ไม่ได้บัฟเฟอร์สองเท่าพร้อมกับค่าเปรียบเทียบ การเปลี่ยนบิต COM0x [1: 0] จะมีผลทันที

เปรียบเทียบ Match Output Unit

บิตโหมดเปรียบเทียบเอาต์พุต (COM0x [1: 0]) มีสองฟังก์ชัน Waveform Generator ใช้บิต COM0x [1: 0] สำหรับการกำหนดสถานะ Output Compare (OC0x) ในการเปรียบเทียบรายการถัดไป นอกจากนี้บิต COM0x [1: 0] ยังควบคุมแหล่งเอาต์พุตพิน OC0x รูปที่ 11-6 แสดงแผนผังที่เรียบง่ายของตรรกะที่ได้รับผลกระทบจากการตั้งค่าบิต COM0x [1: 0] I / O Registers, I / O bits และ I / O pins ในรูปจะแสดงเป็นตัวหนา แสดงเฉพาะส่วนของรีจิสเตอร์ควบคุมพอร์ต I / O ทั่วไป (DDR และ PORT) ที่ได้รับผลกระทบจากบิต COM0x [1: 0] เมื่ออ้างถึงสถานะ OC0x การอ้างอิงมีไว้สำหรับการลงทะเบียน OC0x ภายในไม่ใช่พิน OC0x หากการรีเซ็ตระบบเกิดขึ้นการลงทะเบียน OC0x จะถูกรีเซ็ตเป็น“ 0”

เมื่อ OC0A / OC0B เชื่อมต่อกับพิน I / O ฟังก์ชันของ COM0A [1: 0] / COM0B [1: 0] บิตจะขึ้นอยู่กับการตั้งค่าบิต WGM0 [2: 0] ตาราง 11-2 แสดงฟังก์ชัน COM0x [1: 0] บิตเมื่อบิต WGM0 [2: 0] ถูกตั้งค่าเป็นโหมดปกติหรือโหมด CTC (ไม่ใช่ PWM)

ตารางที่ 11-2. เปรียบเทียบโหมดเอาต์พุต โหมดที่ไม่ใช่ PWM

คอม0A1 คอม0B1 คอม0A0 คอม0B0 คำอธิบาย
0 0 การทำงานของพอร์ตปกติตัดการเชื่อมต่อ OC0A / OC0B
0 1 สลับ OC0A / OC0B ในการเปรียบเทียบการจับคู่
1 0 ล้าง OC0A / OC0B ในการเปรียบเทียบการจับคู่
1 1 ตั้งค่า OC0A / OC0B ในการเปรียบเทียบการจับคู่

ตาราง 11-3 แสดงฟังก์ชัน COM0x [1: 0] บิตเมื่อบิต WGM0 [2: 0] ถูกตั้งค่าเป็นโหมด PWM แบบเร็ว

ตารางที่ 11-3. เปรียบเทียบโหมดเอาต์พุต โหมด PWM ที่รวดเร็ว(1)

คอม0A1 คอม0B1 คอม0A0 คอม0B0 คำอธิบาย
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 ในกรณีนี้ การเปรียบเทียบการจับคู่จะถูกละเว้น แต่การตั้งค่าหรือการล้างข้อมูลจะดำเนินการที่ด้านล่าง ดู “ โหมด Fast PWM” ที่หน้า 73 สำหรับรายละเอียดเพิ่มเติม

ตาราง 11-4 แสดงฟังก์ชัน COM0x [1: 0] บิตเมื่อบิต WGM0 [2: 0] ถูกตั้งค่าเป็นเฟสโหมด PWM ที่ถูกต้อง

ตารางที่ 11-4. เปรียบเทียบโหมดเอาต์พุต โหมด PWM ที่ถูกต้องของเฟส(1)

คอม0A1 คอม0B1 คอม0A0 คอม0B0 คำอธิบาย
0 0 การทำงานของพอร์ตปกติตัดการเชื่อมต่อ OC0A / OC0B
0 1 ที่สงวนไว้
1 0 ล้าง OC0A / OC0B บนเปรียบเทียบการจับคู่เมื่อนับเพิ่ม ตั้งค่า OC0A / OC0B บน Compare Match เมื่อนับถอยหลัง
1 1 ตั้งค่า OC0A / OC0B ในการเปรียบเทียบการจับคู่เมื่อนับขึ้น ล้าง OC0A / OC0B บน Compare Match เมื่อนับถอยหลัง

หมายเหตุ: 1. กรณีพิเศษเกิดขึ้นเมื่อ OCR0A หรือ OCR0B เท่ากับ TOP และตั้งค่า COM0A1/COM0B1 ในกรณีนี้ การเปรียบเทียบการจับคู่จะถูกละเว้น แต่การตั้งค่าหรือการล้างจะเสร็จสิ้นที่ TOP ดู “ Phase Correct PWM Mode” บนหน้าที่ 74 สำหรับรายละเอียดเพิ่มเติม

Bits 3: 2 - Res: Reserved Bits

บิตเหล่านี้เป็นบิตที่สงวนไว้ใน ATtiny25 / 45/85 และจะอ่านค่าเป็นศูนย์เสมอ

บิต 1: 0 - WGM0 [1: 0]: โหมดสร้างรูปคลื่น

เมื่อรวมกับบิต WGM02 ที่พบใน TCCR0B Register บิตเหล่านี้จะควบคุมลำดับการนับของตัวนับแหล่งที่มาสำหรับค่าตัวนับสูงสุด (TOP) และประเภทของการสร้างรูปคลื่นที่จะใช้ดู ตาราง 11-5. โหมดการทำงานที่สนับสนุนโดย Timer / Counter unit ได้แก่ โหมด Normal (ตัวนับ), Clear Timer ในโหมด Compare Match (CTC) และโหมด Pulse Width Modulation (PWM) สองประเภท (ดู “ โหมดการทำงาน” ในหน้า 71).

ตารางที่ 11-5. คำอธิบายบิตโหมดการสร้างรูปคลื่น

โหมด ดับเบิลยูจีเอ็ม 02 ดับเบิลยูจีเอ็ม 01 ดับเบิลยูจีเอ็ม 00 โหมดจับเวลา / ตัวนับการทำงาน สูงสุด อัพเดท OCRx ที่ ตั้งค่าสถานะ TOV บน
0 0 0 0 ปกติ 0xFF ทันที แม็กซ์(1)
1 0 0 1 PWM เฟสถูกต้อง 0xFF สูงสุด ด้านล่าง(2)
2 0 1 0 ซีทีซี โอซีอาร์เอ ทันที แม็กซ์(1)
3 0 1 1 PWM รวดเร็ว 0xFF ด้านล่าง(2) แม็กซ์(1)
4 1 0 0 ที่สงวนไว้
5 1 0 1 PWM เฟสถูกต้อง โอซีอาร์เอ สูงสุด ด้านล่าง(2)
6 1 1 0 ที่สงวนไว้
7 1 1 1 PWM รวดเร็ว โอซีอาร์เอ ด้านล่าง(2) สูงสุด

Bit 7 - FOC0A: Force Output เปรียบเทียบ A

บิต FOC0A จะทำงานเฉพาะเมื่อบิต WGM ระบุโหมดที่ไม่ใช่ PWM

อย่างไรก็ตามเพื่อให้มั่นใจว่าเข้ากันได้กับอุปกรณ์ในอนาคตบิตนี้จะต้องตั้งค่าเป็นศูนย์เมื่อ TCCR0B ถูกเขียนเมื่อทำงานในโหมด PWM เมื่อเขียนตรรกะไปยังบิต FOC0A การเปรียบเทียบการจับคู่ทันทีจะถูกบังคับบนหน่วยการสร้างรูปคลื่น เอาต์พุต OC0A จะเปลี่ยนไปตามการตั้งค่าบิต COM0A [1: 0] โปรดทราบว่าบิต FOC0A ถูกนำไปใช้เป็นไฟแฟลช ดังนั้นจึงเป็นค่าที่มีอยู่ในบิต COM0A [1: 0] ที่กำหนดผลของการเปรียบเทียบแบบบังคับ

แฟลช FOC0A จะไม่สร้างการขัดจังหวะใด ๆ และจะไม่ล้างตัวจับเวลาในโหมด CTC โดยใช้ OCR0A เป็น TOP FOC0A บิตจะอ่านค่าเป็นศูนย์เสมอ

Bit 6 - FOC0B: Force Output เปรียบเทียบ B

บิต FOC0B จะทำงานเฉพาะเมื่อบิต WGM ระบุโหมดที่ไม่ใช่ PWM

อย่างไรก็ตามเพื่อให้มั่นใจว่าเข้ากันได้กับอุปกรณ์ในอนาคตบิตนี้จะต้องตั้งค่าเป็นศูนย์เมื่อ TCCR0B ถูกเขียนเมื่อทำงานในโหมด PWM เมื่อเขียนตรรกะไปยังบิต FOC0B การเปรียบเทียบการจับคู่ทันทีจะถูกบังคับบนหน่วยการสร้างรูปคลื่น เอาต์พุต OC0B จะเปลี่ยนไปตามการตั้งค่าบิต COM0B [1: 0] โปรดทราบว่าบิต FOC0B ถูกนำไปใช้เป็นไฟแฟลช ดังนั้นจึงเป็นค่าที่มีอยู่ในบิต COM0B [1: 0] ที่กำหนดผลของการเปรียบเทียบแบบบังคับ

แฟลช FOC0B จะไม่สร้างการขัดจังหวะใด ๆ และจะไม่ล้างตัวจับเวลาในโหมด CTC โดยใช้ OCR0B เป็น TOP

บิต FOC0B จะอ่านเป็นศูนย์เสมอ

Bits 5: 4 - Res: Reserved Bits

บิตเหล่านี้เป็นบิตที่สงวนไว้ใน ATtiny25 / 45/85 และจะอ่านค่าเป็นศูนย์เสมอ

บิต 3 - WGM02: โหมดการสร้างรูปคลื่น

ดูคำอธิบายในไฟล์ “ TCCR0A - Timer / Counter Control Register A” บนหน้าที่ 77.

บิต 2: 0 - CS0 [2: 0]: เลือกนาฬิกา

บิตเลือกนาฬิกาสามตัวเลือกแหล่งสัญญาณนาฬิกาที่จะใช้โดยตัวจับเวลา / ตัวนับ

ตารางที่ 11-6. นาฬิกา เลือกคำอธิบายบิต

ซีเอส02 ซีเอส01 ซีเอส00 คำอธิบาย
0 0 0 ไม่มีแหล่งสัญญาณนาฬิกา (ตัวจับเวลา / ตัวนับหยุด)
0 0 1 clkI/O/(ไม่มีการปรับขนาดล่วงหน้า)
0 1 0 clkI/O/8 (จากพรีสเกลเลอร์)
0 1 1 clkI/O/64 (จากพรีสเกลเลอร์)
1 0 0 clkI/O/256 (จากพรีสเกลเลอร์)
1 0 1 clkI/O/1024 (จากพรีสเกลเลอร์)
1 1 0 แหล่งสัญญาณนาฬิกาภายนอกบนขา T0 นาฬิกาที่ขอบตก
1 1 1 แหล่งสัญญาณนาฬิกาภายนอกบนขา T0 นาฬิกาบนขอบที่เพิ่มขึ้น

หากใช้โหมดพินภายนอกสำหรับ Timer / Counter0 การเปลี่ยนบนพิน T0 จะนาฬิกาตัวนับแม้ว่าจะกำหนดค่าพินให้เป็นเอาท์พุตก็ตาม คุณสมบัตินี้ช่วยให้ซอฟต์แวร์ควบคุมการนับ

เคาน์เตอร์และเปรียบเทียบหน่วย

การทำงานทั่วไปของ Timer / Counter1 อธิบายไว้ในโหมดอะซิงโครนัสและการทำงานในโหมดซิงโครนัสจะกล่าวถึงก็ต่อเมื่อมีความแตกต่างระหว่างสองโหมดนี้ รูปที่ 12-2 แสดงแผนภาพบล็อกการซิงโครไนซ์ตัวจับเวลา / ตัวนับ 1 และความล่าช้าในการซิงโครไนซ์ระหว่างรีจิสเตอร์ โปรดทราบว่ารายละเอียดการรวบรวมนาฬิกาทั้งหมดไม่ได้แสดงไว้ในรูป ค่าการลงทะเบียน Timer / Counter1 จะผ่านการลงทะเบียนการซิงโครไนซ์ภายในซึ่งทำให้เกิดความล่าช้าในการซิงโครไนซ์อินพุตก่อนที่จะส่งผลต่อการดำเนินการตัวนับ การลงทะเบียน TCCR1, GTCCR, OCR1A, OCR1B และ OCR1C สามารถอ่านได้ทันทีหลังจากเขียนรีจิสเตอร์ ค่าที่อ่านกลับล่าช้าสำหรับรีจิสเตอร์ Timer / Counter1 (TCNT1) และแฟล็ก (OCF1A, OCF1B และ TOV1) เนื่องจากการซิงโครไนซ์อินพุตและเอาต์พุต

Timer / Counter1 มีความละเอียดสูงและการใช้งานที่มีความแม่นยำสูงพร้อมโอกาสในการกำหนดขนาดที่ต่ำกว่า นอกจากนี้ยังสามารถรองรับตัวปรับความกว้างพัลส์ 8 บิตที่แม่นยำความเร็วสูงสองตัวโดยใช้ความเร็วสัญญาณนาฬิกาสูงสุด 64 MHz (หรือ 32 MHz ในโหมดความเร็วต่ำ) ในโหมดนี้ Timer / Counter1 และรีจิสเตอร์การเปรียบเทียบเอาต์พุตจะทำหน้าที่เป็น PWM แบบสแตนด์อะโลนแบบคู่โดยมีเอาต์พุตที่ไม่ซ้อนทับกันและไม่กลับด้าน อ้างถึง หน้า 86 สำหรับคำอธิบายโดยละเอียดเกี่ยวกับฟังก์ชันนี้ ในทำนองเดียวกันโอกาสในการปรับขนาดที่สูงทำให้หน่วยนี้มีประโยชน์สำหรับฟังก์ชันความเร็วต่ำหรือฟังก์ชันกำหนดเวลาที่แน่นอนซึ่งมีการดำเนินการไม่บ่อยนัก

รูปที่ 12-2. ตัวจับเวลา/ตัวนับ 1 การซิงโครไนซ์ Register Block Diagram

Timer / Counter1 และ Prescaler อนุญาตให้เรียกใช้ CPU จากแหล่งสัญญาณนาฬิกาใด ๆ ในขณะที่ Prescaler ทำงานบนนาฬิกา PCK 64 MHz (หรือ 32 MHz ในโหมดความเร็วต่ำ) ในโหมดอะซิงโครนัส

โปรดทราบว่าความถี่สัญญาณนาฬิกาของระบบต้องต่ำกว่าหนึ่งในสามของความถี่ PCK กลไกการซิงโครไนซ์ของตัวจับเวลาแบบอะซิงโครนัส / ตัวนับ 1 ต้องการขอบ PCK อย่างน้อยสองขอบเมื่อนาฬิกาของระบบอยู่ในระดับสูง หากความถี่ของนาฬิการะบบสูงเกินไปจะมีความเสี่ยงที่ข้อมูลหรือค่าการควบคุมจะสูญหาย

ต่อไปนี้ รูปที่ 12-3 แสดงแผนภาพบล็อกสำหรับ Timer / Counter1

ตารางที่ 12-1. เปรียบเทียบโหมด เลือกในโหมด PWM

คอม1x1 คอม1x0 ผลกระทบต่อเอาท์พุทเปรียบเทียบพิน
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 และ Quantization, Gain และ Offset) VREF = 4V, VCC = 4V,

นาฬิกา ADC = 200 kHz

2 แอลเอสบี
VREF = 4V, VCC = 4V,

นาฬิกา ADC = 1 MHz

3 แอลเอสบี
VREF = 4V, VCC = 4V,

นาฬิกา ADC = 200 kHz

โหมดลดเสียงรบกวน

1.5 แอลเอสบี
VREF = 4V, VCC = 4V,

นาฬิกา ADC = 1 MHz

โหมดลดเสียงรบกวน

2.5 แอลเอสบี
อินทิกรัลไม่เป็นเชิงเส้น (INL) (ความถูกต้องหลังจากออฟเซ็ตและได้รับการสอบเทียบ) VREF = 4V, VCC = 4V,

นาฬิกา ADC = 200 kHz

1 แอลเอสบี
ความแตกต่างที่ไม่ใช่เชิงเส้น (DNL) VREF = 4V, VCC = 4V,

นาฬิกา ADC = 200 kHz

0.5 แอลเอสบี
ได้รับข้อผิดพลาด VREF = 4V, VCC = 4V,

นาฬิกา ADC = 200 kHz

2.5 แอลเอสบี
ข้อผิดพลาดออฟเซ็ต VREF = 4V, VCC = 4V,

นาฬิกา ADC = 200 kHz

1.5 แอลเอสบี
เวลาแปลง การแปลงการทำงานฟรี 14 280 ไมโครวินาที
ความถี่นาฬิกา 50 1000 เฮิร์ทซ์
หมายเลขประจำตัวผู้เสียภาษี อินพุต Voltage ก.ย.ด. VREF V
อินพุตแบนด์วิดท์ 38.4 เฮิร์ทซ์
อาเรฟ ฉบับอ้างอิงภายนอกtage 2.0 วีซีซี V
วิน ฉบับภายในtage อ้างอิง 1.0 1.1 1.2 V
ภายใน 2.56V อ้างอิง (1) VCC > 3.0V 2.3 2.56 2.8 V
รฟฟ 32
ฝน ความต้านทานอินพุตแบบอนาล็อก 100 เอ็มΩ
เอาต์พุต ADC 0 1023 แอลเอสบี

หมายเหตุ: 1. ค่าเป็นแนวทางเท่านั้น

ตารางที่ 21-9. ลักษณะ ADC, ช่องสัญญาณที่แตกต่างกัน (โหมด Unipolar) TA = -40°C ถึง +85°C

เครื่องหมาย พารามิเตอร์ เงื่อนไข นาที ประเภท แม็กซ์ หน่วย
ปณิธาน กำไร = 1x 10 บิต
กำไร = 20x 10 บิต
ความแม่นยำแน่นอน (รวมถึง INL, DNL และ

Quantization, Gain และ Offset Errors)

กำไร = 1x

VREF = 4V, VCC = 5V

นาฬิกา ADC = 50 - 200 kHz

10.0 แอลเอสบี
กำไร = 20x

VREF = 4V, VCC = 5V

นาฬิกา ADC = 50 - 200 kHz

20.0 แอลเอสบี
อินทิกรัลไม่เป็นเชิงเส้น (INL) (ความถูกต้องหลังจากออฟเซ็ตและได้รับการปรับเทียบ) กำไร = 1x

VREF = 4V, VCC = 5V

นาฬิกา ADC = 50 - 200 kHz

4.0 แอลเอสบี
กำไร = 20x

VREF = 4V, VCC = 5V

นาฬิกา ADC = 50 - 200 kHz

10.0 แอลเอสบี
ได้รับข้อผิดพลาด กำไร = 1x 10.0 แอลเอสบี
กำไร = 20x 15.0 แอลเอสบี
ข้อผิดพลาดออฟเซ็ต กำไร = 1x

VREF = 4V, VCC = 5V

นาฬิกา ADC = 50 - 200 kHz

3.0 แอลเอสบี
กำไร = 20x

VREF = 4V, VCC = 5V

นาฬิกา ADC = 50 - 200 kHz

4.0 แอลเอสบี
เวลาแปลง การแปลงการทำงานฟรี 70 280 ไมโครวินาที
ความถี่นาฬิกา 50 200 เฮิร์ทซ์
หมายเลขประจำตัวผู้เสียภาษี อินพุต Voltage ก.ย.ด. วีซีซี V
วีดีไอเอฟ อินพุตดิฟเฟอเรนเชียลVoltage VREF/กำไร V
อินพุตแบนด์วิดท์ 4 เฮิร์ทซ์
อาเรฟ ฉบับอ้างอิงภายนอกtage 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
รฟฟ ความต้านทานอินพุตอ้างอิง 32
ฝน ความต้านทานอินพุตแบบอนาล็อก 100 เอ็มΩ
เอาต์พุตการแปลง ADC 0 1023 แอลเอสบี

หมายเหตุ: ค่าเป็นแนวทางเท่านั้น

ตารางที่ 21-10. ลักษณะ ADC, ดิฟเฟอเรนเชียลแชนเนล (โหมดไบโพลาร์) TA = -40°C ถึง +85°C

เครื่องหมาย พารามิเตอร์ เงื่อนไข นาที ประเภท แม็กซ์ หน่วย
ปณิธาน กำไร = 1x 10 บิต
กำไร = 20x 10 บิต
ความแม่นยำแน่นอน (รวมถึง INL, DNL และ

Quantization, Gain และ Offset Errors)

กำไร = 1x

VREF = 4V, VCC = 5V

นาฬิกา ADC = 50 - 200 kHz

8.0 แอลเอสบี
กำไร = 20x

VREF = 4V, VCC = 5V

นาฬิกา ADC = 50 - 200 kHz

8.0 แอลเอสบี
อินทิกรัลไม่เป็นเชิงเส้น (INL) (ความถูกต้องหลังจากออฟเซ็ตและได้รับการปรับเทียบ) กำไร = 1x

VREF = 4V, VCC = 5V

นาฬิกา ADC = 50 - 200 kHz

4.0 แอลเอสบี
กำไร = 20x

VREF = 4V, VCC = 5V

นาฬิกา ADC = 50 - 200 kHz

5.0 แอลเอสบี
ได้รับข้อผิดพลาด กำไร = 1x 4.0 แอลเอสบี
กำไร = 20x 5.0 แอลเอสบี
ข้อผิดพลาดออฟเซ็ต กำไร = 1x

VREF = 4V, VCC = 5V

นาฬิกา ADC = 50 - 200 kHz

3.0 แอลเอสบี
กำไร = 20x

VREF = 4V, VCC = 5V

นาฬิกา ADC = 50 - 200 kHz

4.0 แอลเอสบี
เวลาแปลง การแปลงการทำงานฟรี 70 280 ไมโครวินาที
ความถี่นาฬิกา 50 200 เฮิร์ทซ์
หมายเลขประจำตัวผู้เสียภาษี อินพุต Voltage ก.ย.ด. วีซีซี V
วีดีไอเอฟ อินพุตดิฟเฟอเรนเชียลVoltage VREF/กำไร V
อินพุตแบนด์วิดท์ 4 เฮิร์ทซ์
อาเรฟ ฉบับอ้างอิงภายนอกtage 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
รฟฟ ความต้านทานอินพุตอ้างอิง 32
ฝน ความต้านทานอินพุตแบบอนาล็อก 100 เอ็มΩ
เอาต์พุตการแปลง ADC -512 511 แอลเอสบี

สรุปชุดคำสั่ง

การช่วยจำ โอเปร่า คำอธิบาย การดำเนินการ ธง # นาฬิกา
คำแนะนำทางคณิตศาสตร์และตรรกะ
เพิ่ม เพิ่มสองรีจิสเตอร์ ถ ← ถ + ร Z, C, N, V, H. 1
เอดีซี เพิ่มด้วย Carry two Registers ถ ← ถ + ร + ค Z, C, N, V, H. 1
เอดิว เพิ่มทันทีใน Word ถ:ถด ← ถด:ถดล + K Z, C, N, V, S 2
ซับ ลบสองรีจิสเตอร์ ถ ← ถ – ร Z, C, N, V, H. 1
ขึ้น ลบค่าคงที่ออกจากการลงทะเบียน ถ ← ถ – เค Z, C, N, V, H. 1
เอสบีซี ลบด้วย Carry สองรีจิสเตอร์ ถ ← ถ – Rr – C Z, C, N, V, H. 1
สบส. ลบด้วย Carry Constant จาก Reg. ถ ← ถ – K – C Z, C, N, V, H. 1
สบีไอ ลบทันทีจาก Word Rdh:Rdl ← Rdh:Rdl – K Z, C, N, V, S 2
และ ตรรกะและรีจิสเตอร์ ถ ← ถ ∙ ร Z, N, V. 1
แอนดี้ ตรรกะและการลงทะเบียนและค่าคงที่ ถ ← ถ ∙ K Z, N, V. 1
OR ตรรกะหรือรีจิสเตอร์ ถ ← ถ v ร Z, N, V. 1
ออริ ตรรกะหรือการลงทะเบียนและค่าคงที่ ถ ← ถ v เค Z, N, V. 1
อีโออาร์ เอกสิทธิ์หรือลงทะเบียน ถ ← ถ ⊕ ร Z, N, V. 1
คอม Rd ส่วนเสริมของหนึ่ง ถ ← 0xFF − ถ Z, C, N, V 1
NEG Rd คอมพลีเมนต์สอง ถ ← 0x00 − ถ Z, C, N, V, H. 1
เอสบีอาร์ ตั้งค่าบิตในการลงทะเบียน ถ ← ถ v เค Z, N, V. 1
ซีบีอาร์ ล้างบิตในการลงทะเบียน ถ ← ถ ∙ (0xFF – K) Z, N, V. 1
อิงค์ Rd เพิ่ม ถ ← ถ + 1 Z, N, V. 1
ธ.ค. Rd การลดลง ถ ← ถ − 1 Z, N, V. 1
ทีเอสที Rd ทดสอบศูนย์หรือลบ ถ ← ถ ∙ ถ Z, N, V. 1
ซีแอลอาร์ Rd ล้างทะเบียน ถ ← ถ ⊕ ถ Z, N, V. 1
เซอร Rd ตั้งค่าการลงทะเบียน ถ ← 0xFF ไม่มี 1
คำแนะนำสาขา
อาร์เจเอ็มพี k กระโดดสัมพัทธ์ พีซี ← พีซี + k + 1 ไม่มี 2
ไอเจเอ็มพี ข้ามไปที่ (Z) ทางอ้อม พีซี ← Z ไม่มี 2
อาร์คอล k การเรียกรูทีนย่อยสัมพัทธ์ พีซี ← พีซี + k + 1 ไม่มี 3
ไอคอล โทรทางอ้อมไปที่ (Z) พีซี ← Z ไม่มี 3
รีท การส่งคืนรูทีนย่อย พีซี ← กอง ไม่มี 4
เรติ ขัดจังหวะการส่งคืน พีซี ← กอง I 4
สพฐ. เปรียบเทียบข้ามถ้าเท่ากัน ถ้า (Rd = Rr) PC ← PC + 2 หรือ 3 ไม่มี 1/2/3
CP เปรียบเทียบ ถ. - ร Z, N, V, C, H. 1
ซีพีซี เปรียบเทียบกับ Carry ถ − Rr − C Z, N, V, C, H. 1
ดัชนีราคาผู้บริโภค เปรียบเทียบลงทะเบียนกับทันที ถ.–เค Z, N, V, C, H. 1
สบรซี Rr ข ข้ามไปหากล้าง Bit in Register ถ้า (Rr(b)=0) PC ← PC + 2 หรือ 3 ไม่มี 1/2/3
เอสบีอาร์เอส Rr ข ข้ามไปหากตั้งค่า Bit in Register ไว้ ถ้า (Rr(b)=1) PC ← PC + 2 หรือ 3 ไม่มี 1/2/3
เอสบีไอซี P, ข ข้ามไปหากล้างข้อมูล Bit ใน I / O Register ถ้า (P(b)=0) PC ← PC + 2 หรือ 3 ไม่มี 1/2/3
เอสบีไอเอส P, ข ข้ามไปหากตั้งค่า Bit ใน I / O Register ไว้ ถ้า (P(b)=1) PC ← PC + 2 หรือ 3 ไม่มี 1/2/3
บีอาร์บีเอส เอส, เค สาขาหากตั้งค่าสถานะสถานะ ถ้า (SREG(s) = 1) แล้ว PC←PC+k + 1 ไม่มี 1/2
บีอาร์บีซี เอส, เค สาขาถ้าสถานะสถานะถูกล้าง ถ้า (SREG(s) = 0) แล้ว PC←PC+k + 1 ไม่มี 1/2
ขนมปัง k แยกสาขาถ้าเท่ากัน ถ้า (Z = 1) แล้ว PC ← PC + k + 1 ไม่มี 1/2
บีอาร์เอ็นอี k แยกสาขาถ้าไม่เท่ากัน ถ้า (Z = 0) แล้ว PC ← PC + k + 1 ไม่มี 1/2
บีอาร์ซีเอส k สาขาถ้าพกชุด ถ้า (C = 1) แล้ว PC ← PC + k + 1 ไม่มี 1/2
บีอาร์ซีซี k สาขาหากดำเนินการเคลียร์ ถ้า (C = 0) แล้ว PC ← PC + k + 1 ไม่มี 1/2
บช k สาขาถ้าเท่ากันหรือสูงกว่า ถ้า (C = 0) แล้ว PC ← PC + k + 1 ไม่มี 1/2
บร k สาขาถ้าต่ำกว่า ถ้า (C = 1) แล้ว PC ← PC + k + 1 ไม่มี 1/2
บีอาร์เอ็มไอ k สาขาถ้าลบ ถ้า (N = 1) แล้ว PC ← PC + k + 1 ไม่มี 1/2
บีอาร์พีแอล k สาขาถ้าพลัส ถ้า (N = 0) แล้ว PC ← PC + k + 1 ไม่มี 1/2
บีอาร์จีอี k สาขาถ้ามากกว่าหรือเท่ากันลงนาม ถ้า (N ⊕ V= 0) แล้ว PC ← PC + k + 1 ไม่มี 1/2
บีอาร์แอลที k สาขาถ้าน้อยกว่าศูนย์ลงนาม ถ้า (N ⊕ V= 1) แล้ว PC ← PC + k + 1 ไม่มี 1/2
บชส k สาขาถ้าตั้งค่าสถานะ Half Carry ถ้า (H = 1) แล้ว PC ← PC + k + 1 ไม่มี 1/2
บีอาร์เอชซี k สาขาถ้าแฟล็กพกพาครึ่งหนึ่งถูกล้าง ถ้า (H = 0) แล้ว PC ← PC + k + 1 ไม่มี 1/2
บีอาร์ทีเอส k สาขาหากตั้งค่าสถานะ T ถ้า (T = 1) แล้ว PC ← PC + k + 1 ไม่มี 1/2
บีอาร์ทีซี k สาขาถ้า T Flag ถูกล้าง ถ้า (T = 0) แล้ว PC ← PC + k + 1 ไม่มี 1/2
บีอาร์วีเอส k สาขาหากตั้งค่าสถานะล้น ถ้า (V = 1) แล้ว PC ← PC + k + 1 ไม่มี 1/2
บีอาร์วีซี k สาขาหากล้างค่าสถานะล้น ถ้า (V = 0) แล้ว PC ← PC + k + 1 ไม่มี 1/2
บรี k สาขาหากเปิดใช้งานการขัดจังหวะ ถ้า ( I = 1) แล้ว PC ← PC + k + 1 ไม่มี 1/2
บริด k สาขาถ้าขัดจังหวะปิดใช้งาน ถ้า ( I = 0) แล้ว PC ← PC + k + 1 ไม่มี 1/2
คำแนะนำในการทดสอบบิตและบิต
เอสบีไอ P, ข ตั้งค่าบิตในการลงทะเบียน I / O I/O(P,b) ← 1 ไม่มี 2
ซีบีไอ P, ข ล้างบิตในการลงทะเบียน I / O I/O(P,b) ← 0 ไม่มี 2
แอลเอสแอล Rd การเลื่อนตรรกะไปทางซ้าย ถ(n+1) ← ถ(n), ถ(0) ← 0 Z, C, N, V 1
แอลเอสอาร์ Rd การเลื่อนตรรกะไปทางขวา ถ(n) ← ถ(n+1), ถ(7) ← 0 Z, C, N, V 1
บทบาท Rd หมุนซ้ายผ่านการพกพา ถ(0)←C,ถ(n+1)← ถ(n),C←ถ(7) Z, C, N, V 1
ร.อ. Rd หมุนขวาผ่านการพกพา ถ(7)←C,ถ(n)← ถ(n+1),C←ถ(0) Z, C, N, V 1
เอเอสอาร์ Rd เลขคณิตเลื่อนไปทางขวา ถ(n) ← ถ(n+1), n=0..6 Z, C, N, V 1
การช่วยจำ โอเปร่า คำอธิบาย การดำเนินการ ธง # นาฬิกา
แลกเปลี่ยน Rd สลับ Nibbles Rd(3..0)←Rd(7..4),Rd(7..4)←Rd(3..0) ไม่มี 1
บีเอสที s ตั้งค่าสถานะ SREG(s) ← 1 SREG 1
บีซีแอลอาร์ s ตั้งค่าสถานะชัดเจน SREG(s) ← 0 SREG 1
บีเอสที Rr ข Bit Store จาก Register ถึง T T ← Rr(ข) T 1
บีแอลดี ถ. ข โหลดบิตจาก T เพื่อลงทะเบียน ถ(ข) ← ต ไม่มี 1
วินาที ตั้งค่าการพกพา ค ← 1 C 1
ซีแอลซี เคลียร์ Carry ค ← 0 C 1
เซ็น ตั้งค่าสถานะเชิงลบ น ← 1 N 1
ซีแอลเอ็น ล้างค่าสถานะเชิงลบ น ← 0 N 1
เขตเศรษฐกิจพิเศษ เซ็ตซีโร่แฟล็ก ซี ← 1 Z 1
ซีแอลแซด ล้างค่าสถานะเป็นศูนย์ ซี ← 0 Z 1
เซอิ เปิดใช้งานการขัดจังหวะทั่วโลก ฉัน ← 1 I 1
ซีแอลไอ ปิดการใช้งาน Global Interrupt ฉัน ← 0 I 1
เอสอีเอส ตั้งค่าสถานะการทดสอบที่ลงชื่อ ส ← 1 S 1
ซีแอลเอส ล้างค่าสถานะทดสอบที่มีลายเซ็น ส ← 0 S 1
เซเว่นอีเลฟ ตั้งค่า Twos Complement Overflow วี ← 1 V 1
ซีแอลวี เคลียร์ Twos Complement Overflow วี ← 0 V 1
ชุด ตั้งค่า T ใน SREG ท ← 1 T 1
ซีแอลที ล้าง T ใน SREG ท ← 0 T 1
SEH ตั้งค่าสถานะ Half Carry ใน SREG ฮ ← 1 H 1
ซีแอลเอช ล้างแฟล็ก Half Carry ใน SREG ฮ ← 0 H 1
คำแนะนำในการโอนข้อมูล
เอ็มโอวี ย้ายไปมาระหว่างรีจิสเตอร์ ถ ← ร ไม่มี 1
มูฟวี่ คัดลอกลงทะเบียน Word ถ+1:ถ ← Rr+1:ร ไม่มี 1
แอลดีไอ โหลดทันที ถ ← พ ไม่มี 1
LD ถ. X โหลดทางอ้อม ถ ← (X) ไม่มี 2
LD ถ, X + โหลดทางอ้อมและ Post-Inc. ถ ← (X), X ← X + 1 ไม่มี 2
LD ถ - X โหลดทางอ้อมและก่อน ธ.ค. X ← X – 1, ถ ← (X) ไม่มี 2
LD ถ. ย โหลดทางอ้อม ถ ← (Y) ไม่มี 2
LD ถ. Y + โหลดทางอ้อมและ Post-Inc. ถ ← (ย), ย ← ย + 1 ไม่มี 2
LD ถ - ย โหลดทางอ้อมและก่อน ธ.ค. Y ← Y – 1, ถ ← (Y) ไม่มี 2
แอลดีดี ถ, Y + q โหลดทางอ้อมด้วย Displacement ถ ← (Y + q) ไม่มี 2
LD ถ. Z โหลดทางอ้อม ถ ← (Z) ไม่มี 2
LD ถ. Z + โหลดทางอ้อมและ Post-Inc. ถ ← (Z), Z ← Z+1 ไม่มี 2
LD ถ. -Z โหลดทางอ้อมและก่อน ธ.ค. Z ← Z – 1, ถ ← (Z) ไม่มี 2
แอลดีดี ถ, Z + q โหลดทางอ้อมด้วย Displacement ถ ← (Z + q) ไม่มี 2
แอลดีเอส ถ. k โหลดโดยตรงจาก SRAM ถ ← (k) ไม่มี 2
ST X, RR จัดเก็บทางอ้อม (X) ← ร ไม่มี 2
ST X +, Rr จัดเก็บทางอ้อมและ Post-Inc. (X) ← ร, X ← X + 1 ไม่มี 2
ST - X, Rr จัดเก็บทางอ้อมและก่อน ธ.ค. X ← X – 1, (X) ← ร ไม่มี 2
ST ย, ร จัดเก็บทางอ้อม (ย) ← ร ไม่มี 2
ST Y +, Rr จัดเก็บทางอ้อมและ Post-Inc. (ย) ← ร,ย ← ย + 1 ไม่มี 2
ST - ย, ร จัดเก็บทางอ้อมและก่อน ธ.ค. Y ← Y – 1, (Y) ← ร ไม่มี 2
โรคติดต่อทางเพศสัมพันธ์ Y + q, Rr จัดเก็บทางอ้อมด้วย Displacement (ย + คิว) ← ร ไม่มี 2
ST Z, ร จัดเก็บทางอ้อม (Z) ← ร ไม่มี 2
ST Z +, Rr จัดเก็บทางอ้อมและ Post-Inc. (Z) ← Rr, Z ← Z + 1 ไม่มี 2
ST -Z, ร จัดเก็บทางอ้อมและก่อน ธ.ค. Z ← Z – 1, (Z) ← ร ไม่มี 2
โรคติดต่อทางเพศสัมพันธ์ Z + q, Rr จัดเก็บทางอ้อมด้วย Displacement (Z + q) ← ร ไม่มี 2
สทส. k, ร จัดเก็บโดยตรงไปยัง SRAM (k) ← ร ไม่มี 2
ลิตรต่อนาที โหลดหน่วยความจำโปรแกรม R0 ← (Z) ไม่มี 3
ลิตรต่อนาที ถ. Z โหลดหน่วยความจำโปรแกรม ถ ← (Z) ไม่มี 3
ลิตรต่อนาที ถ. Z + โหลดหน่วยความจำโปรแกรมและ Post-Inc. ถ ← (Z), Z ← Z+1 ไม่มี 3
ส.พี.เอ็ม. จัดเก็บหน่วยความจำโปรแกรม (z) ← R1:R0 ไม่มี
IN ถ. ป ในพอร์ต ถ ← ป ไม่มี 1
ออก พี ร พอร์ตออก พี ← ร ไม่มี 1
ดัน Rr กดลงทะเบียนบนกอง กอง ← ฿ ไม่มี 2
โผล่ Rd ป๊อปลงทะเบียนจากกอง ถ ← STACK ไม่มี 2
คำแนะนำในการควบคุม MCU
น็อพ ไม่มีการดำเนินการ ไม่มี 1
นอน นอน (ดูคำอธิบายเฉพาะสำหรับฟังก์ชัน Sleep) ไม่มี 1
ดับเบิ้ลยูดีอาร์ รีเซ็ต Watchdog (ดูคำอธิบายเฉพาะสำหรับ WDR / Timer) ไม่มี 1
หยุดพัก หยุดพัก
ความเร็ว (MHz) (1) ปริมาณอุปทานtagอี (วี) ช่วงอุณหภูมิ บรรจุุภัณฑ์ (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
20 ล้าน 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
20 ล้าน ATtiny45-20MU ATtiny45-20MUR

หมายเหตุ: 1. สำหรับความเร็วเทียบกับปริมาณอุปทานtage ดูหัวข้อ 21.3“ ความเร็ว” ในหน้า 163.

บรรจุภัณฑ์ทั้งหมดปราศจาก Pb ปราศจากเฮไลด์และเป็นสีเขียวทั้งหมดและเป็นไปตามข้อกำหนดของยุโรปว่าด้วยการ จำกัด การใช้สารอันตราย (RoHS)

ตัวบ่งชี้รหัส

H: NiPdAu ตะกั่วเสร็จสิ้น

U: เคลือบดีบุก

R: เทปและรีล

อุปกรณ์เหล่านี้สามารถจัดจำหน่ายในรูปแบบเวเฟอร์ โปรดติดต่อสำนักงานขาย Atmel ในพื้นที่ของคุณสำหรับข้อมูลการสั่งซื้อโดยละเอียดและปริมาณขั้นต่ำ

พิมพ์ผิด

Errata ATtiny 25

จดหมายฉบับแก้ไขในส่วนนี้หมายถึงการแก้ไขอุปกรณ์ ATtiny25

รายได้ D - F

ไม่รู้จัก errata

รายได้ B - C

การอ่าน EEPROM อาจล้มเหลวเมื่อปริมาณอุปทานต่ำtage / ความถี่สัญญาณนาฬิกาต่ำ

การอ่าน EEPROM อาจล้มเหลวเมื่อปริมาณอุปทานต่ำtage / ความถี่สัญญาณนาฬิกาต่ำ

กำลังพยายามอ่าน EEPROM ที่ความถี่สัญญาณนาฬิกาต่ำและ/หรือแหล่งจ่ายพลังงานต่ำtage อาจส่งผลให้ข้อมูลไม่ถูกต้อง

การแก้ไขปัญหา / วิธีแก้ปัญหา

อย่าใช้ EEPROM เมื่อความถี่สัญญาณนาฬิกาต่ำกว่า 1MHz และจ่าย voltage ต่ำกว่า 2V หากความถี่ในการทำงานไม่สามารถยกให้สูงกว่า 1MHz ได้ ให้จ่าย voltage ควรมากกว่า 2V ในทำนองเดียวกัน ถ้าอุปทานปริมาณtagไม่สามารถยกขึ้นเหนือ 2V ได้ดังนั้นความถี่ในการทำงานควรมากกว่า 1MHz

คุณสมบัตินี้เป็นที่ทราบกันดีว่าขึ้นอยู่กับอุณหภูมิ แต่ยังไม่ได้รับการระบุลักษณะ คำแนะนำมีไว้สำหรับอุณหภูมิห้องเท่านั้น

Rev A.

ไม่เampนำ

Errata ATtiny 45

จดหมายฉบับแก้ไขในส่วนนี้หมายถึงการแก้ไขอุปกรณ์ ATtiny45

รายได้ F - G

ไม่รู้จัก errata

รายได้ D - E.

การอ่าน EEPROM อาจล้มเหลวเมื่อปริมาณอุปทานต่ำtage / ความถี่สัญญาณนาฬิกาต่ำ

การอ่าน EEPROM อาจล้มเหลวเมื่อปริมาณอุปทานต่ำtage / ความถี่สัญญาณนาฬิกาต่ำ

กำลังพยายามอ่าน EEPROM ที่ความถี่สัญญาณนาฬิกาต่ำและ/หรือแหล่งจ่ายพลังงานต่ำtage อาจส่งผลให้ข้อมูลไม่ถูกต้อง

การแก้ไขปัญหา / วิธีแก้ปัญหา

อย่าใช้ EEPROM เมื่อความถี่สัญญาณนาฬิกาต่ำกว่า 1MHz และจ่าย voltage ต่ำกว่า 2V หากความถี่ในการทำงานไม่สามารถยกให้สูงกว่า 1MHz ได้ ให้จ่าย voltage ควรมากกว่า 2V ในทำนองเดียวกัน ถ้าอุปทานปริมาณtagไม่สามารถยกขึ้นเหนือ 2V ได้ดังนั้นความถี่ในการทำงานควรมากกว่า 1MHz

คุณสมบัตินี้เป็นที่ทราบกันดีว่าขึ้นอยู่กับอุณหภูมิ แต่ยังไม่ได้รับการระบุลักษณะ คำแนะนำมีไว้สำหรับอุณหภูมิห้องเท่านั้น

รายได้ B - C

PLL ไม่ล็อค

EEPROM อ่านจากรหัสแอปพลิเคชันไม่ทำงานในโหมดล็อคบิต 3

การอ่าน EEPROM อาจล้มเหลวเมื่อปริมาณอุปทานต่ำtage / ความถี่สัญญาณนาฬิกาต่ำ

Timer Counter 1 การสร้างเอาต์พุต PWM บน OC1B- XOC1B ทำงานไม่ถูกต้อง

PLL ไม่ล็อค

เมื่อความถี่ต่ำกว่า 6.0 MHz PLL จะไม่ล็อค

แก้ไขปัญหา / วิธีแก้ปัญหา

เมื่อใช้ PLL ให้รันที่ 6.0 MHz หรือสูงกว่า

EEPROM อ่านจากรหัสแอปพลิเคชันไม่ทำงานในโหมดล็อคบิต 3

เมื่อ Memory Lock Bits LB2 และ LB1 ถูกตั้งโปรแกรมเป็นโหมด 3 การอ่าน EEPROM จะไม่ทำงานจากรหัสแอปพลิเคชัน

แก้ไขปัญหา / แก้ไขปัญหา

อย่าตั้งค่า Lock Bit Protection Mode 3 เมื่อต้องการอ่านรหัสแอปพลิเคชันจาก EEPROM

การอ่าน EEPROM อาจล้มเหลวเมื่อปริมาณอุปทานต่ำtage / ความถี่สัญญาณนาฬิกาต่ำ

กำลังพยายามอ่าน EEPROM ที่ความถี่สัญญาณนาฬิกาต่ำและ/หรือแหล่งจ่ายพลังงานต่ำtage อาจส่งผลให้ข้อมูลไม่ถูกต้อง

การแก้ไขปัญหา / วิธีแก้ปัญหา

อย่าใช้ EEPROM เมื่อความถี่สัญญาณนาฬิกาต่ำกว่า 1MHz และจ่าย voltage ต่ำกว่า 2V หากความถี่ในการทำงานไม่สามารถยกให้สูงกว่า 1MHz ได้ ให้จ่าย voltage ควรมากกว่า 2V ในทำนองเดียวกัน ถ้าอุปทานปริมาณtagไม่สามารถยกขึ้นเหนือ 2V ได้ดังนั้นความถี่ในการทำงานควรมากกว่า 1MHz

คุณสมบัตินี้เป็นที่ทราบกันดีว่าขึ้นอยู่กับอุณหภูมิ แต่ยังไม่ได้รับการระบุลักษณะ คำแนะนำมีไว้สำหรับอุณหภูมิห้องเท่านั้น

Timer Counter 1 การสร้างเอาต์พุต PWM บน OC1B - XOC1B ทำงานไม่ถูกต้อง

Timer Counter1 เอาต์พุต PWM OC1B-XOC1B ทำงานไม่ถูกต้อง เฉพาะในกรณีที่บิตควบคุม COM1B1 และ COM1B0 อยู่ในโหมดเดียวกับ COM1A1 และ COM1A0 ตามลำดับการเอาท์พุท OC1B-XOC1B จะทำงานได้อย่างถูกต้อง

แก้ไขปัญหา / แก้ไขปัญหา

วิธีแก้ปัญหาเดียวคือใช้การตั้งค่าการควบคุมเดียวกันบนบิตควบคุม COM1A [1: 0] และ COM1B [1: 0] ดูตารางที่ 14-4 ในแผ่นข้อมูล ปัญหาได้รับการแก้ไขสำหรับ Tiny45 rev D

Rev A.

การใช้พลังงานปิดเครื่องสูงเกินไป

DebugWIRE สูญเสียการสื่อสารเมื่อก้าวเข้าสู่การขัดจังหวะเพียงครั้งเดียว

PLL ไม่ล็อค

EEPROM อ่านจากรหัสแอปพลิเคชันไม่ทำงานในโหมดล็อคบิต 3

การอ่าน EEPROM อาจล้มเหลวเมื่อปริมาณอุปทานต่ำtage / ความถี่สัญญาณนาฬิกาต่ำ

การใช้พลังงานปิดเครื่องสูงเกินไป

สามสถานการณ์จะนำไปสู่การใช้พลังงานปิดเครื่องสูงเกินไป เหล่านี้คือ:

ฟิวส์เลือกนาฬิกาภายนอก แต่ I / O PORT ยังคงเปิดใช้งานเป็นเอาต์พุต

EEPROM ถูกอ่านก่อนที่จะเข้าสู่การปิดเครื่อง

VCC คือ 4.5 โวลต์หรือสูงกว่า

ข้อจำกัดความรับผิดชอบ: ข้อมูลในเอกสารนี้มีให้โดยเกี่ยวข้องกับผลิตภัณฑ์ของ Atmel ไม่มีการอนุญาตโดยชัดแจ้งหรือโดยปริยายโดยกฎหมายปิดปากหรืออื่น ๆ สำหรับสิทธิ์ในทรัพย์สินทางปัญญาใด ๆ ที่ได้รับจากเอกสารนี้หรือเกี่ยวข้องกับการขายผลิตภัณฑ์ Atmel ยกเว้นที่กำหนดไว้ในข้อกำหนดและเงื่อนไขการขายของ ATMEL ที่อยู่ใน ATMEL WEBเว็บไซต์ ATMEL จะไม่รับผิดชอบใด ๆ และปฏิเสธการรับประกันใด ๆ โดยชัดแจ้ง โดยนัย หรือตามกฎหมายที่เกี่ยวข้องกับผลิตภัณฑ์ รวมถึงแต่ไม่จำกัดเพียง การรับประกันโดยนัยของสินค้า ความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ หรือการไม่ละเมิด ไม่ว่าในกรณีใด ATMEL จะไม่รับผิดต่อความเสียหายโดยตรง ทางอ้อม ผลสืบเนื่อง เชิงลงโทษ ความเสียหายพิเศษหรือโดยบังเอิญ (รวมถึงแต่ไม่จำกัดเพียง ความเสียหายจากการสูญเสียและกำไร การหยุดชะงักทางธุรกิจ หรือการสูญหายของข้อมูล) ที่เกิดขึ้นจากการใช้งานหรือการไม่สามารถใช้ได้ เอกสารนี้แม้ว่า ATMEL จะได้รับคำแนะนำถึงความเป็นไปได้ของความเสียหายดังกล่าวแล้วก็ตาม

Atmel ไม่รับรองหรือรับประกันเกี่ยวกับความถูกต้องหรือความสมบูรณ์ของเนื้อหาในเอกสารนี้ และขอสงวนสิทธิ์ในการเปลี่ยนแปลงข้อมูลจำเพาะและคำอธิบายผลิตภัณฑ์ได้ตลอดเวลาโดยไม่ต้องแจ้งให้ทราบล่วงหน้า Atmel ไม่มีข้อผูกมัดใด ๆ ในการอัปเดตข้อมูลที่มีอยู่ในที่นี้ เว้นแต่จะระบุไว้เป็นอย่างอื่น ผลิตภัณฑ์ Atmel ไม่เหมาะสำหรับและไม่ควรนำไปใช้ในยานยนต์ ผลิตภัณฑ์ Atmel ไม่ได้มีวัตถุประสงค์ อนุญาต หรือรับประกันสำหรับใช้เป็นส่วนประกอบในการใช้งานที่มีวัตถุประสงค์เพื่อสนับสนุนหรือค้ำจุนชีวิต

อ้างอิง

ฝากความคิดเห็น

ที่อยู่อีเมลของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องกรอกข้อมูลมีเครื่องหมาย *