PIC16C5X MICROCONTROLLER



นาย สุรศักดิ์ พาณิชย์วิสัย 36055812
นางสาว สุนทริน วงศ์ศิริกุล 36056869


สารบัญ

º·¹Ó ¡ÒÃÊѺà»ÅÕ蹡ÒÃãªé§Ò¹»ÃÕÊà¡ Å àÅÍÃì ¡ÒÃà¢éÒÊÙèâËÁ´»¡µÔ
¤Ø³ÅѡɳзÕèÊӤѭ ÊÃØ»ªØ´¤ÓÊÑ觾×é¹°Ò¹ ÃٻẺ¢Í§¿ÔÇÊì
ÃÕ¨ÔÊàµÍÃì¾ÍÃìµ ÍÔ¹¾Øµ/àÍÒ·ì¾Øµ Ç͵ªì´çÍ¡ä·àÁÍÃì ÃËÑÊ»ÃШӵÑǢͧÅÙ¡¤éÒ
¡ÒÃÍÔ¹àµÍÃìà¿Ê¡Ñº¾ÍÃìµ ÍÔ¹¾Øµ/àÍÒ·ì¾Øµ ¤ÒºàÇÅҢͧÇ͵ªì´çÍ¡ä·àÁÍÃì ¡Òûéͧ¡Ñ¹ÃËÑÊ
ÃÕ¨ÔÊàµÍÃìãªé§Ò¹·ÑèÇä» Ç§¨ÃÍÍÊ«ÔÅàÅàµÍÃì ¡ÒõÃǨÊͺã¹Êèǹ¡Òûéͧ¡Ñ¹ ÃËÑÊ
ÃÕ¨ÔÊàµÍÃì§Ò¹¾ÔàÈÉ ÍÍÊ«ÔÅàÅàµÍÃìẺ¤ÃÔʵÍÅ àÍ¡ÊÒÃÍéÒ§ÍÔ§
ÊÀÒÇÐÃÕ૵ ÍÍÊ«ÔÅàÅàµÍÃìẺ RC
»ÃÕÊà¡ÅàÅÍÃì ÊÅÕ»âËÁ´

บทนำ

ไมโครคอนโทรลเลอร์ PIC16C5X เป็นชิ พที่ใช้เทคโนโลยี CMOSซึ่งมีราคาถูกแต่ให้ performance สูง PIC16C5X เป็นสถาปัตยกรรมแบบ RISC โดยมีชุดคำสั่งเพียง 33 single word/single cycle คำสั่งทั้งหมดเป็นไซเคิลเดี่ยว (200 นาโนวินาที) ยกเว้นคำสั่งที่ใช้ในการ กระโดดข้ามโปรแกรมจะใช้ 2 ไซเคิล

ผลิตภัณฑ์ที่ใช้ชิพ PIC16C5X จะมีคุณลักษณะพิเศษคือ ช่วยลดต้นทุนของระบบและประหยัดไฟ ทั้งยังมีเครื่องมือ (tool) มากมายคอยสนับสนุน ได้แก่ แอสเซมเบลอร์ (assembler), ซอฟแวร์ซิมูเลเตอร์ (software simulator),in-circuit emulator และ production quality programmer โดยที่เครื่องมือเหล่านี้สามารถใช้ได้บนเครื่อง IBM PC

PIC16C5X เหมาะสำหรับใช้งานในเครื่อง จักรกลที่ต้องการความเร็วสูง (high-speed automotive) และ เครื่องใช้ ที่ควบคุมด้วยมอเตอร์

เทคโนโลยี EPROM ทำให้การใช้งานโปรแกรมประยุกต์ (transmitter codes, motor speeds, receiver frequencies, etc.) เป็นไป อย่างรวดเร็วและสะดวกสบาย

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


คุณลักษณะที่สำคัญ

อุปกรณ์จำนวน ขาอินพุต/เอาท์พุตEPROM/ROMRAM
PIC16C54181251225
PIC16CR54181251225
PIC16C5618121K25
PIC16C55282051224
PIC16C5728202K72
PIC16CR57A28202K72
PIC16C58A28202K73
PIC16CR58A28202K73

รีจิสเตอร์พอร์ตอินพุต/เอาท์พุต

รีจิสเตอร์ นี้สามารถถูกเขียนและอ่านภายใต้การควบคุมข องโปรแกรมเหมือนกันรีจิสเตอร์ไฟล์ คำสั่งอ่าน เช่น MOVE, PORTB, W โดยปกติจะอ่านจากขาอินพุต/เอาต์พุต โดยไม่สนใจว่าขานั้นจะกำหนดให้เป็นขา อินพุตหรือเอาต์พุต
เมื่อเริ่มต้นรีเซตเครื่องใหม่พอร์ต ทั้งหมดจะถูกกำหนดให้เป็นอินพุต (โหมด ความต้านทานสูง) และรีจิสเตอร์ควบคุมอินพุต/เอาต์พุต (TRISA, TRISB, TRISC) จะถูกเซ็ตค่าเป็น "1" ทั้งหมด
คำสั่ง TRISf จะนำค่าที่เก็บในรีจิ สเตอร์ W ไปเซ็ตรีจิสเอตร์พอร์ตอินพุตเอาต์พุตทั้ง 3 พอร์ต ตัวกำหนดให้ W เป็น "0" คำสั่ง TRISf จะทำให้ขาที่ถูกเซ็ตเป็นขาเอาต์พุตโดย f คือค่าของพอร์ต A,B และ C

การอินเตอร์เฟสกับพอร์ตอินพุต/เอาท์พุต

วงจรสำหรับบิตบิตหนึ่งของพอร์ต อินพุต/เอาต์พุต แสดงในรูปข้างล่างนี้ สามารถกำหนดได้ว่าพอร์ตไหนจะเป็นอินพุตหรือเอาต์พุต การใช้งานเป็นพอร์ตอินพุตสัญญาณจะไม่ถูกแลตซ์เอาไว้ การป้อนสัญญาณอินพุต ต้องคงค่าจนกระทั่งทำการอ่านโดยคำสั่งอินพุต จนครบ (เช่น MOV PORTB, W) แต่สำหรับการใช้งานเป็นพอร์ตเอาต์พุ ตนั้นข้อมูลจะถูกแลตซ์เอาไว้ และจะไม่มีการเปลี่ยนค่าจนกว่าจะมีการเขียนข้อมูลใหม่ส่งมาอีกครั้ง การกำหนดพอร์ต ในตำแหน่งขาต่างๆ ให้เป็นเอาต์พุตจะต้องสั่งให้บิต ควบคุมทิศทาง (TRISA, TRISB, TRISC) มีค่าเป็น "0" แต่ถ้าต้องการให้เป็นขาอินพุตจะต้องเซ็ตบิต ควบคุมให้มีค่าเป็น "1"

รีจิสเตอร์ใช้งานทั่วไป

รีจิสเตอร์ใช้งานพิเศษ

W
(working register) เก็บค่าโอเปอแรนด์ ที่สองในคำสั่งที่มี 2 โอเปอแรนด์ (และ/หรือ สนับ สนุนการเคลื่อนย้ายข้อมูลภายใน)
TRISA
ควบคุมอินพุต/เอาต์พุต สำหรับพอร์ต A บิต 0 ถึง 3 เท่านั้นที่ใช้ได้ ใช้เพื่อให้สอดคล้องกับพอร์ต อินพุต/เอาต์พุต (f5) ที่มีแค่ 4 บิต
TRISB
ควบคุมอินพุต/เอาต์พุต สำหรับพอร์ต B
TRISC
ควบคุมอินพุต/เอาต์พุต สำหรับพอร์ต C
รีจิสเตอร์ควบคุมพอร์ตอินพุต/เอาต์พุต
จะถูกโหลดด้วยค่าในรีจิสเตอร์ W เมื่อมีการทำคำสั่ง TRISf โดยค่า "1" ที่ใส่ในรีจิ สเตอร์ควบคุมจะทำให้ขาอินพุต/เอาต์พุต อยู่ในสถานะความต้านทานสูงทำหน้าที่เป็นขา อินพุต และค่า "0" ที่ใส่ในรีจิสเตอร์ ควบคุมจะทำให้ขาอินพุต/เอาต์พุ ตที่ถูกเลือกของพอร์ตนั้นมีสถานะเป็นขาเอาต์พุต
รีจิสเตอร์ออปชั่น (OPTION), RTCC, ปรีสเกลเลอร์
รีจิสเตอร์ออปชั่นใช้กำหนดว่าปรีสเกลเลอร์จะใช้กับรีจิ สเตอร์ RTCC หรือ WDT, กำหนดค่าในตัวตั้งค่า, กำหนดรูปแบบของสัญญาณ และขอบขาของสัญญาณที่ป้อนให้แก่ RTCC รีจิสเตอร์ออปชั่น มีขนาด 6 บิต เมื่อมีการทำคำสั่ง OPTION ค่าในรีจิสเตอร์ W จะถูกเคลื่อนย้ายเข้าในรีจิสเตอร์ออปชั่นนี้
รีจิสเตอร์ข้างต้นนี้สามารถเขียนได้อย่างเดียว และจะถูกเซตให้เป็น "1" ทั้งหมดเมื่อทำการรีเซ็ ต

สภาวะรีเซต

สภาวะรีเซตอาจเกิดจาก
- การที่เริ่มป้อนไฟเลี้ยงให้แก่ชิป
- ป้อนค่าลอจิก "0" เข้าที่ขา
- เกิดจากตัว WDT เกิดไทม์เอาต์
ชิ ปจะอยู่ในสภาวะรีเซตตราบเท่าที่ขา ยังคงมีค่าลอจิก "0" หรือตัว OST (oscillator start up timer) แอกทีฟ

ตัว OST จะแอกทีฟทันทีที่ขา มีค่าลอจิกเป็น "1" สรุปได้ว่า ในกรณีการรีเซตเนื่องจากการป้อนไฟเลี้ยง ทำให้โดยการผูกขา เข้ากับขา VDD และตัว OST จะเริ่มทำงานหลังจากป้อนไฟเลี้ยง ในกรณีที่ WDT เกิดไทม์เอาต์ ตัว OST เริ่มทำงานเมื่อตัว WDT เกิดไทม์เอาต์ (ในขณะที่ขา มีค่าลอจิก "1" ในกรณีที่รีเซตขา ตัว OST จะเริ่มทำงานอีกครั้ง เมื่อขา มีค่าลอจิก "1" ) โดยปกติตัว OST จะมีช่วงคาบเวลาเท่ากับ 18 มิ ลลิวินาที ซึ่งจะกล่าวถึงรายละเอียดของ OST อีกครั้งในตอนหลังในสภาวะรีเซต PIC16C5X จะมีสถานะดังนี้
- ออสซิลเลเตอร์จะทำงานหรือเริ่มต้นทำงาน (ป้อนไฟเลี้ยงหรือตื่นจากโหมด SLEEP)
- ขาของพอร์ตอินพุต/เอาพุตทุกขา (RA0-RA3, RB0-RB7, RC0-RC7) จะอยู่ในสถานะความต้านทานสูง โดยจะรีเซตให้รีจิสเตอร์ "TRIS" มีค่าเป็น "1" ทั้งหมด (โหมดอินพุต)
- โปรแกรมเคาน์เตอร์ถูกเซตเป็น "1" ทั้งหมด (1FFh ใน PIC16C54/55, 3FFh ใน PIC16C56 และ 3FFh ใน PIC16C57)
- รีจิสเตอร์ออปชั่นถูกเซตเป็น "1" ทั้งหมด
- ตัว WDT และปรีสเกลเลอร์ จะถูกเคลีย
- 3 บิตบน (บิตเลือกเพจ) ในรี่จิสเตอร์ สถานะถูกเคลียเป็น "0"
- เฉพาะชิปที่ใช้ออสซิลเลเตอร์แบบ RC สัญญาณ CLKOUT ที่ขา OSC2 จะมีค่าเป็นลอจิก "0"

ปรีสเกลเลอร์

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


รูปที่ 10 บล็อกไดอะแกรมแสดงการทำงานของวอตช์ด็ อกไทเมอร์ และปรีสเกลเลอร์
ซึ่งจะเห็นว่าปรีสเกลเลอร์ ตัวเดียวสามารถใช้ร่วมกันได้ระหว่างตัว RTCC กับตัว WDT ดังนั้นเมื่อนำปรีสเกลเลอร์มาใช้กับ RTCC ก็หมายความว่าจะไม่มีปรีสเกลเลอร์ที่จะใช้กับตัว WDT และในทางกลับกันถ้าถูกใช้ด้วย WDT RTCC ก็ไม่สามารถจะใช้ปรีสเกลเลอร์ ได้อีก
บิต PSA และบิต PS0-PS2 ในรีจิสเตอร์ออปชั่น จะใช้กำหนดค่าในปรีสเกลเลอร์และค่าอัตราส่วนในปรี สเกลเลอร์

การสับเปลี่ยนการใช้งานปรีสเกลเลอร์

การเปลี่ยนการใช้งานปรีสเกลเลอร์ที่ใช้กับ RTCC ให้ไปใช้กับตัว WDT

การสับเปลี่ยนการใช้งานปรีสเกลเลอร์ ภายใต้การควบคุมของซอฟต์แวร์ เช่น กาสับเปลี่ยนในช่วงที่โปรแกรมกำลังเอ็กซีคิวต์ อยู่ เพื่อหลีกเลี่ยนการที่ต้องรีเซตอุปกรณ์โดยไม่จำเป็น คำสั่งดังต่อไปนี้จะต้องถูกเอ็ก ซีคิวต์ เมื่อต้องการเปลี่ยนการใช้งานปรีสเกลเลอร์ ที่ใช้กับ RTCC ให้ไปใช้กับ WDT
  1. MOVLW B 'xxx0x0xx' : เลือกใช้สัญญาณนาฬิกาภายในและเลือกค่าใหม่ให้ ปรีสเกลเลอร์
  2. OPTION : ถ้าค่าใหม่เป็น "000" หรือ "001" ให้เลือกค่าสำหรับปรีสเกลเลอร์เป็นค่าอื่นชั่วคราว
  3. CLRF 1 : เคลียค่าใน RTCC และปรีสเกลเลอร์
  4. MOVLW B ''xxxx1xxx' : เลือก WDT โดยไม่เปลี่ยนค่าสำหรับปรี สเกลเลอร์
  5. OPTION
  6. CLRWDT : เคลียค่า WDT และปรีสเกลเลอร์
  7. MOVLW B 'xxxx1xxx' : เลือกค่าใหม่ให้แก่ปรีสเกลเลอร์
  8. OPTION
จะทำขั้นตอนที่ 1 และ 2 ในขณะที่ RTCC ใช้สัญญาณนาฬิกาจากภายนอกในขั้นตอนที่ 7 และ 8 จะต้องทำก็ต่อเมื่อค่าในปรีสเกลเลอร์ ที่ต้องการเป็น "000" หรือ "001"

การเปลี่ยนปรีสเกลเลอร์ที่ใช้งานกับ WDT ให้ไปใช้กับ RTCC

การเปลี่ยนปรีสเกลเลอร์ที่ใช้กับ WDT ให้ไปใช้ กับ RTCC ต้องใช้ขั้นตอนดังนี้
  1. CLRWDT : เคลียค่า WDT และปรีสเกลเลอร์
  2. MOVLW B 'xxxx0xxx' : เลือก RTCC ค่าใหม่สำหรับปรีสเกลเลอร์ และแหล่งกำเนิดสัญญาณนาฬิกา
  3. OPTION

สรุปชุดคำสั่งพื้นฐาน

วอตช์ด็อกไทเมอร์

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

คาบเวลาของวอตช์ด็อกไทเมอร์

ตัววอตช์ด็อกไทเมอร์ มีช่วงคาบเวลาโดยปกติอยู่ในช่วง 18 มิลลิวินาที (โดยไม่ใช้ปรีสเกลเลอร์)

ปัจจัยที่มีผลต่อช่วงคาบเวลาดังกล่าว ได้แก่

ถ้าต้องการช่วงคาบเวลาที่ยาวนานมากขึ้น สามารถทำได้โดยการกำหนดค่าในปรีสเกลเลอร์ ให้มีอัตราส่วนเป็น 1:128 ซึ่งทำได้โดยใช้ซอฟแวร์ มาควบคุมตัววอตช์ด็อกไทเมอร์ ซึ่งจะเขียนค่าลงในรีจิสเตอร์ OPTION ดังนั้น ช่วงคาบเวลาสูงสุดจะมีค่าได้ถึง 2.5 วินาที

คำสั่ง CLRWDT และ SLEEP จะลบค่าในวอตช์ด็อกไทเมอร์ และค่าในปรีสเกลเลอร์ การใช้คำสั่งนี้จะช่วยป้องกันไม่ให้เกิดการสร้างสัญญาณไทม์เอาต์และทำให้ชิปอยู่ในส ภาวะรีเซต บิตสถานะ TO ในรีจิสเตอร์สถานะจะถูกลบเมื่อ WDT เกิดไทม์เอาต

วงจรออสซิลเลเตอร์

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

การเลือกใช้ตัวเก็บประจุ (C1,C2) สำหรับวงจรรีโซเนเตอร์แบบเซรามิก จะคำนึงถึงความถี่ต่างๆที่ใช้ ดังแสดงในตาราง

ออสซิลเลเตอร์แบบความถี่รีโซเนเตอร์ ช่วงของค่าตัวเก็บประจุ (pF)
XT445 kHz150-330
2.0 MHz20-330
4.0 MHz20-330
HS8.0 MHz20-200

ชิปแบบ XT เป็นออสซิลเลเตอร์คริสตอลแบบมาตรฐาน ซึ่งอาจต้องการคริสตอลแบบสตริปคัต AT (AT strip-cut) เพื่อหลีกเลี่ยงการโอเวอร์ไดรฟ์ (overdrive) ส่วนชิปแบบ HS เป็นออสซิลเลเตอร์คริสตอลชนิดความเร็วสูง ซึ่งอาจจะต้องใช้ตัวต้านทานต่อเชื่อมด้วยใ นกรณีที่ต้องการให้เกิดความถี่ออสซิลเลชั่น ที่น้อยกว่า 20 เมกกะเฮิร์ตซ์

ออสซิลเลเตอร์แบบคริสตอล

PIC16C5X แบบ XT,HS หรือ LP จะต้องใช้วงจรรีโซเนเตอร์ แบบเซรามิกหรือคริสตอลต่อเข้าที่ขา OSC1 และ OSC2 เพื่อทำให้เกิดสัญญาณนาฬิกาดังรูป

การเลือกใช้ตัวเก็บประจุ (C1,C2) สำหรับวงจรรีโซเนเตอร์แบบเซรามิก จะคำนึงถึงความถี่ต่างๆที่ใช้ ดังแสดงในตาราง

ออสซิลเลเตอร์แบบ ความถี่รีโซเนเตอร์ ช่วงของค่าตัวเก็บประจุ (pF)
XT445 kHz150-330
2.0 MHz20-330
4.0 MHz20-330
HS8.0 MHz20-200

ชิปแบบ XT เป็นออสซิลเลเตอร์คริสตอลแบบมาตรฐาน ซึ่งอาจต้องการคริสตอลแบบสตริปคัต AT (AT strip-cut) เพื่อหลีกเลี่ยงการโอเวอร์ไดรฟ์ (overdrive)

ส่วนชิปแบบ HS เป็นออสซิลเลเตอร์คริสตอลชนิดความเร็วสูง ซึ่งอาจจะต้องใช้ตัวต้านทานต่อเชื่อมด้วยใ นกรณีที่ต้องการให้เกิดความถี่ออสซิลเลชั่น ที่น้อยกว่า 20 เมกกะเฮิร์ตซ

ออสซิลเลเตอร์แบบ RC

เหมาะกับ งานที่ไม่ต้องการความเที่ยงตรงมากนัก อีกทั้งราคาก็ถูกกว่าแบบอื่น

ความถี่จากวงจรออสซิลเลเตอร์แบบ RC จะขึ้นอยู่ กับ

ออสซิลเลเตอร์ชนิด RC (เฉพาะชนิด RC)

จากรูปแสดงถึงวิธีการเชื่อมต่ออุ ปกรณ์ R/C เข้ากับ PIC16C5X สำหรับค่า Rext ที่น้อยกว่า 2.2 กิโลโอห์ม สัญญาณออสซิลเลเตอร์ ที่ได้อาจจะไม่คงที่หรือหยุดนิ่งสำหรับค่า Rext ที่มีค่าสูงมากๆ (เช่น 1 เมกะโอห์ม) ออสซิลเตอร์ จะมีความไวต่อสัญญาณรบกวนความชื้นและสภาวะ แวดล้อมภายนอก ดังนั้น เราจะต้องรักษาค่า Rext ให้มีค่าอยู่ในช่วง 5 กิโลโอห์ม ถึง 100 กิโลโอห์ม

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

การเลือกตัวเก็บประจุสำหรับออสซิลเล เตอร์ชนิดคริสตอล สามารถพิจารณาได้ดังตาราง

ออสซิลเลเตอร์ ความถี่C1 C2
LP32 kHz15 pF15 pF
XT100 kHz15-30 pF200-300 pF
200 kHz15-30 pF100-200 pF
455 kHz15-30 pF15-100 pF
1 MHz15-30pF15-30 pF
2 MHz15 pF15 pF
4 MHz15 pF15 pF
HS 4 MHz15 pF 15 pF
8 MHz 15 pF 15 pF
20 MHz 15pF15 pF

ช่วงเวลาเริ่มต้นของวงจรออสซิลเลเตอร์ : OST (Oscillator Start-up Timer)

วงจรออสซิลเลเตอร์สร้างจากวงจรรีโซแนนต์ชนิด คริสตอลหรือเซรามิ กซึ่งต้องการเวลาเริ่มต้นค่าหนึ่งหลังจากป ้อนไฟเข้าไปเพื่อทำให้เกิดการสร้างออสซิลเลชั่น ที่คงที่ ช่วงเวลาเริ่มต้นของวงจรออสซิลเลเตอร์ ในชิปหนึ่งๆ จะเป็นตัวกำหนดว่าอุปกรณ์นั้นจะอยู่ในสภาวะรีเซตนานแค่ไหน โดยทั่วไปจะประมาณ 18 มิลลิวินาที หลังจากที่ศักดาไฟฟ้าที่ขา MCLR มีค่าจนถึงระดับลอจิกสูง (VIH-MC) ซึ่งตัวต้านทานและตัวเก็บประจุภายนอกที่ต่ อเชื่อมเข้าขา MCLR นี้จะไม่ได้ใช้งานบ่อยนักจึงทำให้ประ หยัดค่าใช้จ่ายในส่วนนี้

ช่วงเวลาเริ่มต้นของวงจรออสซิลเลเตอร์ จะไปกระตุ้นให้วอตช์ด็อกไทเมอร์เกิดไทเอาต์ ซึ่งเป็นสิ่งที่สำคัญมาก ไปปลุก PIC16C5X จากโหมด Sleep โดยอัตโนมัติ

OST จะไม่สามารถใช้ได้กับวงจรคริสต อลความถี่ต่ำๆที่ต้องการช่วงเวลานานกว่า 18 มิ ลลิวินาที ในการเริ่มต้นและทำให้ความถี่คงที่

PIC16C5X จะมีวงจรรีเซตขณะเปิดเครื่อง รวมอยู่ในชิปด้วย โดยวงจรรีเซตนี้จะช่วยให้เกิดการรีเซ ตภายในเมื่อเริ่มป้อนไฟเลี้ยง วิธีการใช้วงจรนี้ทำได้โดยการต่อขา MCLR เข้ากับไฟเลี้ยง VDD เท่านั้น

แผนภาพข้างล่างนี้จะแสดงวงจรรี เซตขณะเปิดเครื่องภายในชิปอย่างคร่าวๆ

วงจรรีเซตขณะเปิดเครื่อง และวงจรเริ่มต้นออสซิลเลเตอร์ มีความสัมพันธ์กันอย่างใกล้ชิด เมื่อเริ่มป้อนไฟเลี้ยงวงจรคงค่าการรีเซต< wbr>จะได้รับการเซตและวงจรจับเวลาจะถูกรีเซต วงจรจับเวลาจะเริ่มต้นนับในทันที ที่ตรวจจับได้ว่า MCLR มีค่า ลอจิกสูงหลังจากที่เกิดช่วงไทม์เอาต์ (ประมาณ 18 มิ ลลิวินาที)

จากรูปข้างต้น แสดงการเริ่มป้อนไฟเลี้ยงซึ่งค่า VDD จะมีค่าเพิ่มขึ้นอย่างรวดเร็ว ค่า VDD จะมีค่าเพิ่มขึ้นจนกระทั่งคงที่ก่อนที่ค่า ที่ขา MCLR จะมีค่าลอจิกชิปจะมีค่าช่วงเวลา OST ตามจริง หลังจากที่ MCLR มีค่าลอจิกสูง

จากรูปเป็นการใช้วงจรรีเซตบนชิ ป (ขา MCLR กับ VDD ต่อเข้าหากัน) ขา VDD จะมีค่าคงที่ก่อนที่วงจรจับเวลาเริ่ม ต้นจะเกิดไทม์เอาต์ ซึ่งจะทำให้ไม่มีปัญหาใดๆ ในการรีเซตนี้

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

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

สลีปโหมด

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

ในสลีปโหมดนี้จะทำให้การกินไฟต่ำสุด ขาอินพุต/เอาต์พุตทุกขาจะมีค่าเป็น VDD หรือไม่ก็เป็น VSS หากไม่ได้ต่อเชื่อมกับ วงจรภายนอกที่มีการดึงกระแสจากขา อินพุต/เอาต์พุต ขาอินพุต/เอาต์พุตที่อยู่ในโหมด ความต้านทานสูงควรต่อเข้ากับ อุปกรณ์ภายนอกศักดาไฟฟ้าสูงหรือต่ำ ก็ได้เพื่อกันการสวิตช์ ของกระแสที่เกิดจากการปล่อยขาอินพุตลอยไว้ ขาอินพุตของ RTCC ควรจะมีค่าเป็น VDD หรือ VSS เพื่อให้การกินกำลังไฟฟ้ามีค่าน้อยที่สุด< P> ขา MCLR จะต้องมีค่าเท่ากับ VIHMC

การเข้าสู่โหมดปกติ

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

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

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

รูปแบบของฟิวส์

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

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

ชิป OST, QTP จะมีการกำหนดออสซิลเลเตอร์ ที่ใช้จากโรงงานและจะมีการทดสอบส่วนต ่างๆเป็นที่เรียบร้อย ชิปจะถูกทำเครื่อง หมายคำนำหน้าไว้ว่าเป็น XT, RC, HS หรือ LP ตามชนิดของออสซิลเลเตอร์ภายในและช่วงการใช้งาน

รหัสประจำตัวของลูกค้า

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

การป้องกันรหัส

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

จากที่กล่าวมานี้ก็เป็นไปได้ที่จะใช้ตำแหน่ง 000h-03Fh ของโปรแกรมในการเก็บค่ารหัสประจำตัวและค่า ฟิวส์รูปแบบต่างๆ

ข้อสังเกต รูปแบบของฟิวส์และบิต รหัสประจำตัวสามารถอ่านได้ ถึงแม้ว่าจะมีการใช้การป้องกันรหัส

การตรวจสอบในส่วนการป้องกันรหัส

เมื่อมีการใช้การป้องกันรหัสตำแหน่ง ต่างๆในหน่วยความจำโปรแกรมจะอ่านค่าเป็นค่าเอาต ์พุตที่มีค่าเท่ากับ "00000000XXXX" (ฐานสอง) โดย X มีค่าเป็น 1 หรือ 0 วิธีการตรวจสอบชิ ปหลังจากใช้การป้องกันรหัสทำได้โดยกระบวนก ารดังนี้

ก. เริ่ม แรกโปรแกรมและตรวจสอบดูว่าอุปกรณ์นั้นดีและไม่มีการใช้การป้องกันรหัส

ข. ต่อไป ใส่ฟิวส์ป้องกันรหัสลงไปและโหลด ค่าข้อมูลในไฟล์หนึ่งๆลงไปเก็บ

ค . ตรวจสอบการป้องกันรหัสว่าช่วยป้องกันไฟล์นี้หรือไม่

เอกสารอ้างอิง


[
บทเรียน ] [ 204421 ] [ รายวิชา ]
[ ภาควิชาวิศวกรรมคอมพิวเตอร์ ] [ คณะวิศวกรรมศาสตร์ ] [ มหาวิทยาลัยเกษตรศาสตร์ ]