|
|
|
|
|
|
|
|
|
|
Timer/Counter/Capture/Compare |
|
|
|
|
|
การใช้งานในโหมด
timer |
|
|
หลักการทำงานของ
Timer1 จะคล้ายกับของ Timer0 |
|
|
|
|
|
สูตรการหาค่าเริ่มต้นในการนับของ
TMR1 |
|
|
|
TMR1
= 65536-(Td/Pr) *(fosc/4 ) |
สมการที่
4 |
|
|
|
|
TMR1
เป็นค่าที่จะต้องโหลดเข้า timer1 ,Pr เป็นค่าของ prescaler |
|
Td
เป็นคาบเวลาทั้งหมด ,fosc เป็นความถี่ของ XTAL |
|
|
|
|
|
|
|
|
|
การใช้งานในโหมด Counter |
|
|
สูตรการหาค่าเริ่มต้นในการนับของ TMR1 |
|
|
-ใช้สัญญาณนาฬิกา จากแหล่งกำเนิด สัญญาณภายนอก ผ่านขา RB6/T1CKI |
|
|
|
|
|
|
TMR0
= 65536-(Time/Pr) *fext |
สมการที่
5 |
|
|
|
|
TMR0
เป็นค่าที่จะต้องโหลดเข้า timer1 ,Time ค่าเวลาของการนับ มีหน่วยเป็น
วินาที |
|
fext
คือความถี่ของสัญญาณนาฬิกาจากภายนอก ที่เข้ามาทางขา RB6/T1CKI |
|
|
|
|
|
|
|
|
|
การคำนวนหาคาบเวลาสูงสุด
tdmax |
|
|
TMR0 =65536-cycle
= 0 คือ cycle มีค่าเท่ากับ 65536 |
|
|
ค่าเริ่มต้นในการนับ
TMR1 = 0 (timer จะนับ 0-65536) และค่า prescaler มีค่าสูงสุด PR=8 |
|
|
|
|
|
จาก สมการที่ 1 |
|
|
|
cycle=(Td/Pr)*(fosc/4
)=65536 |
|
|
Td = 65536*(4/fosc)*PR |
|
|
Tdmax = 65536*(4/fosc)*8 |
PR=8 |
|
Tdmax = 65536*(4/fosc)
|
|
|
Tdmax
= 2097152/fosc |
สมการที่
6 |
|
|
|
|
|
|
|
|
|
เช่น fosc = 4
MHz ค่าคาบเวลาสูงสุดที่ timer1 จะทำได้คือ |
|
|
2097152/4*10^6
=0.5242879986763 sec |
|
|
|
|
|
|
|
|
การใช้งาน
Timer1 ด้วยภาษา C |
|
|
ตัวอย่างการใช้งาน
Capture
ร่วมกับ Timer1เป็นเครื่องนับความถี่ |
|
|
|
|