|
Tài trợ cho PIC Vietnam |
Câu hỏi dsPIC thường gặp Những vấn đề liên quan tới dsPIC30 và dsPIC33 và PIC24 |
|
Ðiều Chỉnh | Xếp Bài |
|
11-08-2007, 01:21 PM | #1 |
Nhập môn đệ tử
Tham gia ngày: Aug 2007
Bài gửi: 4
: |
Tính thời gian tràn cho Timer?
Em mới học cái này, thấy anh namnq có gửi lên máy bài tutorial, em thắc mắc một chút:
1. Thời gian tràn của timer tính như thế nào? Trong ví dụ, void Init_TMR1(void) { TMR1 = 0; //Xoa so dem trong TMR1 PR1 = 0xF424; //Nguong tran la 0,5 giay tuong ung //voi clock = 32 MHz _T1IF = 0; //Xoa co ngat cua Timer 1 T1CON = 0x8020; //Dung fcy lam clock, prescale = 1:64 _T1IE = 1; //Cho phep ngat Timer 1 Cái số 0xF424 kia tính thế nào để ra được là tràn 0.5s. Có công thức tính ko? 2. Prescale là gì? Công dụng của nó ra sao? Có mấy câu hỏi, ai biết chỉ dùm em với. |
11-08-2007, 02:07 PM | #2 |
...Damned...
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
: |
Prescaler là bộ chia trước. Trước khi xung nhịp được đưa vào cho bộ đếm, thì nó đã được chia, ở ví dụ trên là chia 64.
Với clock = 32MHz, tốc độ chip sẽ là 8MIPS (trừ dòng pic33, pic24), do đó chu kỳ lệnh (Tcy) là 125ns. Vì timer tràn khi giá trị timer = với giá trị trong thanh ghi period, nên thời gian tràn của timer sẽ được tính: T = Tcy * prescaler * period = (125e-9 * 64 * 62500) = 0.5s |
11-08-2007, 05:51 PM | #3 | |
Trưởng lão PIC bang
|
Trích:
http://www.picvietnam.com/forum//showthread.php?t=974 Câu hỏi 2 thì bien_van_khat đã trả lời rồi. Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
11-08-2007, 06:58 PM | #4 |
Nhập môn đệ tử
Tham gia ngày: Aug 2007
Bài gửi: 4
: |
Cảm ơn các anh nhiều lắm.
|
11-08-2007, 07:10 PM | #5 |
Nhập môn đệ tử
Tham gia ngày: Aug 2007
Bài gửi: 4
: |
còn 1 vấn đề nữa, nếu clock là 32MHz, làm sao suy ra được tốc độ chip là 8MIPS?
|
11-08-2007, 08:15 PM | #6 | |
Trưởng lão PIC bang
|
Trích:
PIC24 và dsPIC33F dùng 2 xung clock cho 1 lệnh, như vậy số MIPS (triệu lệnh/giây) = tần số clock (tính bằng MHz)/2. Câu hỏi của bạn cho thấy bạn chưa hiểu lắm về vi điều khiển, cũng như chưa biết cách diễn dịch những thông tin trong datasheet (ví dụ, trong datasheet của dsPIC30F4012 tại bảng 24-16, chú ý số 3 có nói 'there are 4 Q clocks per instruction cycle'). Đề nghị bạn xem lại những vấn đề cơ bản trước khi chuyển sang dùng dsPIC. Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 thay đổi nội dung bởi: namqn, 15-07-2008 lúc 06:14 PM. |
|
|
|