Timer/Counter/CCP
 
  วิธีการศึกษา
•โมดูล Timer แต่ละตัวมีขนาดเท่าไร
• ขอบเขตในการนับ หรือ สร้างฐานเวลา มีค่าเท่าไร
• การอ่านสัญาณญาณจากภายนอก หรือการส่งสัญญาณ ออกสู่ภายนอก ของแต่ละโมดูลที่ขาใด สำหรับการเพื่อไว้ในการออกแบบ
• คุณสมบัติพิเศษของ Timer แต่ละตัวและช่องทางเลือก
 
 
  - Timer0 จะใช้ prescaler ร่วมกับ watchdog จะต้องเลือกอย่างใดอย่างหนึ่ง  
  - Timer2 จะถูกใช้แบฐานเวลาให้กับ โมดูลสื่อสารข้อมูล อนุกรมแบบซิงโครนัส  
     
 
  • การใช้งาน Timer ร่วมกับโมดูล CCP อย่างไร  
     
     
 

Timer0

 
  • ใช้เป็น timer/counter ขนาด 8-bit (00-FFh)
•รีจิสเตอร์ Timer0 สามารถเขียนอ่านได้
• มีตัวหาร (prescaler) ขนาด 8-bit คือสามารถเลือกอัตราส่วนเป็น 2,4,8,16,32,64,128,256
และตัวเพิ่มค่า (Postscaler) เวลาสำหรับ watchdog สามารถเลือกอัตราส่วนเป็น 1,2,4,8,16,32,64,128
โดยสามารถเลือกให้งานได้อย่างใดอย่างหนึ่ง
• สามารถเลือกแหล่งสัญญาณนาฬิกาจากภายใน หรือภายนอกผ่านขา RA4/T0CKI
• มี Interrupt เมื่อการนับเปลี่ยนจาก FFh ไปเป็น 00h (overflow )
• เมื่อใช้แหล่งสัญญาณนาฬิกาจากภายนอก สามารถเลือกได้ว่าจะนับที่ขอบขาขึ้นหรือขาลง
 
     
  Timer1  
 

• ใช้เป็น timer/counter ขนาด 16-bit (0000-c)
•รีจิสเตอร์ Timer1 สามารถเขียนอ่านได้
• มีตัวหาร (prescaler) ขนาด 8-bit คือสามารถเลือกอัตราส่วนเป็น 1,2,4,8
• สามารถเลือกแหล่งสัญญาณนาฬิกาจากภายใน หรือภายนอก
• เมื่อทำงานในโหมด Counter จะรับสัญญาณจากภายนอกผ่านทางขา RB6/T1CKI
สามารถให้ Synchronous กับสัญญาณนาฬิกา ภายในได้
และถ้าเป็นแบบ Asynchronous Timer1 ยังคงทำงานอยู่ ถึงแม้และอยู่ในโหมด sleep
• มี Interrupt เมื่อการนับเปลี่ยนจาก FFFFhไปเป็น 0000h (overflow ) หาก Enable Interrupt ไว้ เมื่ออยู่ในโหมด sleep จะทำให้ ไมโครคอนโทรลเลอร์ Wake-up
•มีวงจรออสซิลเลเตอร์พลังงานต่ำสามารถผลิตความถี่ได้สูงสุด 200KHz เมื่อต่อ XTAL ที่ขา RB7/TIOSI,RB6/TIOS
•สามารถใช้โมดูล CCP(Capture/Compare/PWM) ได้ 2 โหมดคือ Capture/Compare
เมื่อ Timer1 นับจนกระทั้งมีค่าเท่ากันกับ ใน CCP1 จะทำให้เกิดการ Interrupt
- CCPR1 มีขนาด 16 บิทประกอบด้วย CCPR1H และ CCPR1L

 
     
  Timer2  
 

•ใช้เป็น timer ขนาด 8-bit (00-FFh) นับได้ 256 ค่า
•รีจิสเตอร์ Timer2 สามารถเขียนอ่านได้
•สามารถใช้สัญญาณนาฬิกาได้จากเฉพาะภายในเท่านั้น
• มี Interrupt เมื่อการนับเปลี่ยนจาก FFh ไปเป็น 00h (overflow )
•มีทั้งตัวลดทอนการส่งออก (postscaler) มีค่า 1-16 ,ตัวหารความถออสซิลเลเตอร์( prescaler) สามารถเลือกอัตราส่วนเป็น 1,4,16 และ รีจิสเตอร์คาบเวลา (period register)
•สามารถใช้โมดูล CCP(Capture/Compare/PWM) ได้ 1โหมดคือ PWM ในการควบคุม duty cycle ของสัญญาณ PWM
ออกทางขา RB3/CCP1
•สัญญาณเอาต์พุตของ Timer 2 ยังถูกใช้ใน โมดูลสื่อสาร ข้อมูลอนุกรม แบบซิงโครนัส (Synchronous Serial Port module :SSP)

 
     
  CCP(Capture/Compare/PWM)  
  CPP1 เป็นโมดูลที่ใช้ร่วมกับ Timer มีหน้าที่ในการเก็บข้อมูลอยู่ 3 ลักษณะคือ  
  • เก็บข้อมูลในการตรวจจับสัญญาณ (Capture) ใช้งานร่วมกับ timer1
• เก็บข้อมูลเปรียบเทียบสัญญาณ (Compare) ใช้งานร่วมกับ timer1
• เก็บค่า duty cycle ในการมอดูเลชั่นทางความกว้างของพัลส์ (PWM Pulse Width Modulator) ใช้งานร่วมกับ timer2
 
     
     
 
 
  ตัวอย่างโปรแกรม  
 
Timer0  
  การใช้งาน Timer0  
  ตัวอย่างการใช้งาน Timer0 ในการหาคาบเวลา  
  การใช้งาน WatchDog timer (WDT)  
Timer1  
  การใช้งาน Timer1  
  ตัวอย่างการทำงานของ Timer1เป็นนาฬิกาจับเวลา  
     
Timer2  
  การใช้งาน Timer2  
  ตัวอย่างการใช้งาน Timer2 ในการหาคาบเวลา  
     
CCP(Capture/Compare/PWM)  
  ตัวอย่างการใช้งาน Capture ร่วมกับ Timer1เป็นเครื่องนับความถี่  
  ตัวอย่างการทำงาน CCP1 ร่วมกับ Timer1ใ นโหมดเปรียบเทียบข้อมูล (Compare)  
  ตัวอย่างการใช้งาน PWM ร่วมกับ Timer2ผลิตความถี่ 1 KHz duty cycle 50%  
   
Tools  
  การใช้ PIC กำเนิดความถี่เพื่อใช้ทดสอบ 10 Hz,100 Hz, 1KHz  
 
     
     
 
SMITDH EMSOMBAT
 
 
ศมิทธิ์ เอมสมบัติ