Trích:
Nguyên văn bởi bnthang
Nếu bạn muốn điều rộng xung thì tốt nhất nên dùng modul pwm trong pic, nếu dùng timer thì bạn phải tính tới thời gian thực hiện các dòng lệnh,if else,....các dòng lệnh này cũng mất thời gian, để xác định chính xác thời gian bạn cần xem file asm được dịch từ file .c hoặc dùng oscilloscope để đo xung out.
|
tất nhiên là t có tính đến thời gian thực thi trể do thực hiện các lệnh, như trong hàm ngắt trên thì thực hiện không quá 20us trong khi chu kỳ xuất xung tính toán vào khoảng 2ms , quá nhỏ so với 2ms này cho nên tần số ra sai có thể chấp nhận trong khoảng vài chục hz là chuyện thường nhưng ở đây là sai chỉ có vài hz nên không thể do những lệnh đó được bạn àh.rỏ ràng mình thấy lỗi ở chổ gọi hàm set_timer0(245); là không có tác dụng vì khi ngắt xảy ra thì ở hàm phục vụ ngắt thanh ghi timer0 phải được set về giá trị khởi tạo là 245 là nó không làm nên mới dẫn tới sai số rất lớn nhưng mình k hiểu vì sao nó lại không thực thi được hàm này ở bộ chia 2???