Mình có đoạn code khai báo DCO 1Mhz thì 1 chu kì máy là 1uS nhưng thực tế kiểm tra với __delay_cycles thì lại ko đúng như thế:
Trong video mình viết đoạn code đảo giá trị P1 sau mỗi 10000 chu kì và 100000 chu kì.
Với delay 10000 chu kì, code asm gán R15 giá trị 0xD03 tương ứng 3331, sau đó tiến hành add.w #0xFFFF,R15 mất 1 chu kì máy và 1 lệnh jc nhảy lên làm lại add.w tốn 2 chu kì máy. Tổng cộng ta có 3331*3 chu kì máy=9993 chu kì máy. Theo như tính toán thì delay sẽ tiêu tốn thời gian là gần 10mS với DCO 1Mhz tương đương tần số tạo ra trên P1 là 50Hz.
Nhưng thực tế mình đo thì delay chỉ tiêu tốn 500uS tương ứng tần số 1000Hz lớn hơn 20 lần so với tính toán ??? ai biết tại sao giải thích giúp mình với.
Với delay 10000 chu kì, code asm gán R15 giá trị 0xD03 tương ứng 3331, sau đó tiến hành add.w #0xFFFF,R15 mất 1 chu kì máy và 1 lệnh jc nhảy lên làm lại add.w tốn 2 chu kì máy. Tổng cộng ta có 3331*3 chu kì máy=9993 chu kì máy. Theo như tính toán thì delay sẽ tiêu tốn thời gian là gần 10mS với DCO 1Mhz tương đương tần số tạo ra trên P1 là 50Hz.
Nhưng thực tế mình đo thì delay chỉ tiêu tốn 500uS tương ứng tần số 1000Hz lớn hơn 20 lần so với tính toán ??? ai biết tại sao giải thích giúp mình với.