| |
|
|
| |
|
|
| |
|
|
| |
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เป็นเครื่องนับความถี่ |
|
| |
|
|