Trích:
Nguyên văn bởi bluexylitol
Ok, thanks 2 bạn. Vấn dề 2 mình đã hiểu, đặc biệt là phần giải thích của bạn @namqn "Nếu chọn giá trị cho bộ chia trước là 1:n thì sau n lần ngõ ra bộ so sánh đổi trạng thái từ '0' lên '1', cờ ngắt TMR2IF mới được bật". Nhưng vấn đề 1 thì mình vẫn chưa rõ:
Về sự khác nhau giữa INTOSC và INTOSCIO mình ok. nhưng vấn đề của mình là thế này: SCS quy định bộ dao động nội hoặc clock source được định nghĩa trong FCSC. Mình thấy cả 2 cái INTOSC và INTOSCIO cũng đều là dao động nội tuy nhiện lại được chọn khi SCS=0 và được định nghĩa bởi giá trị của FCSC (100 & 101). 2 dao động này khác với dao động nội khi ta chọn SCS=1 như thế nào?
Thanks!
|
SCS = 1 hay dùng SCS = 0 kết hợp với FOSC<2:0> = 100/101 thì đều cho kết quả là PIC dùng bộ dao động nội (tần số bằng bao nhiêu thì do IRCF<2:0> trong thanh ghi OSCCON quyết định). Tuy nhiên, FOSC<2:0> thì không thể được thay đổi khi đang thực thi chương trình (vì chúng là các bit trong từ cấu hình), còn SCS thì có thể được thay đổi khi đang thực thi chương trình.
Việc dùng SCS cho phép chương trình ứng dụng linh hoạt chuyển đổi nguồn xung clock hệ thống. Ví dụ, bạn có thể dùng thạch anh ngoài 20 MHz để đạt tốc độ xử lý nhanh nhất có thể có, và cấu hình tần số bộ dao động nội ở giá trị thấp nhất để tiết kiệm điện năng. Khi chương trình ứng dụng thực thi, bạn chỉ cần thay đổi giá trị SCS để chuyển đổi giữa hai nguồn xung clock, nhằm đáp ứng tốt với các yêu cầu tính toán, cũng như tiết kiệm được điện năng trong lúc chờ thông tin từ người dùng (vòng lặp chờ người dùng nhấn phím hoặc delay thì bạn đâu cần cho PIC chạy ở tốc độ tối đa).
Thân,