คงเป็นคำถามเดียวกับ
http://www.thaimicrotron.com/webboard2/index.php?topic=439.msg1331#msg1331จากคำถาม
หากผมใช้ timer0 ความถี่ XTAL= 20 Mhz
นับเวลา 6 ms ให้ได้ 6 ms. ตรงๆๆหรือใกล้เคียงนี้
ผมต้องใช้ prescale เท่าไหร่คับ
แล้วค่าเหล่านี้ล่ะคับต้องกำหนดยังงัย
หากผมใช้ timer1 ความถี่ XTAL= 20 MHz
อ่าน timer/counter ออกมา
ให้ได้เท่ากับใช้ Xtal 4 Mhz (clock ภายใน = 1 MHz)และ prescaler เป็น 1
ผมต้องใช้ prescale เท่าไหร่คับการใช้งาน Timer0
เมื่อไม่ใช้ prescaler หรือ prescaler =1
- หากคุณใช้ XTAL=4MHz สัญญาณนาฬิกาจากภายใน = fosc/4 = 1us
ค่าที่นับได้ 1 ก็คือ 1Us
- หากคุณใช้ XTAL=20MHz สัญญาณนาฬิกาจากภายใน = fosc/4 = 0.2us
ค่าที่นับได้ 1 ก็คือ 0.2Us
-เมื่อใช้ prescaler ขนาดของคาบเวลา=ค่าที่นับได้* prescaler
เช่น XTAL=20MHz ,prescaler = 4 , นับได้ 100
คาบเวลา = (100*0.2us)*4 = 80us
-แต่เนื่องจาก Timer0 มีขนาด 8 บิท (0-255)
XTAL=20MHz เมื่อไม่ใช้ prescaler จะนับได้ 255*0.2us = 51us เท่านั้น
คาบเวลาสูงสุดที่นับได้ เมื่อใช้ prescaler=256
51us *256 = 0.013sec หรือ 13 ms
ก็ยังใช้งานได้จากโจทย์ของคุณ ที่ต้องการนับเวลา 6 ms ครับ