![]() |
|
Tài trợ cho PIC Vietnam |
dsPIC - Bộ điều khiển tín hiệu số 16-bit Theo dự kiến của Microchip, vào khoảng năm 2011 dsPIC sẽ có doanh số lớn hơn PIC |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#5 |
Nhập môn đệ tử
Tham gia ngày: Jun 2008
Bài gửi: 9
: |
Giải thích code cho dsPIC
Cảm ơn anh Nam và mong anh tiếp tục đọc chủ đề của em
Cách tính giá trị timer3avg như sau: Code:
#define INDEX 1 #define POLEPAIRS 5 // động cơ BLDC có 5 cặp cực unsigned int HallValue; unsigned int timer3value; unsigned int timer3avg; unsigned char polecount; // dùng để đếm số cặp cực if (HallValue == INDEX) // has the same position been sensed? if (polecount++ == POLEPAIRS) //has one mech rev elasped? { // yes then read timer 3 timer3value = TMR3; TMR3 = 0; timer3avg = ((timer3avg + timer3value) >> 1); polecount = 1; } Trong đó, với module Timer3 em khởi tạo như sau: Code:
void InitTMR3(void) { T3CON = 0x0030; // internal Tcy/256 clock TMR3 = 0; PR3 = 0xFFFF; } Cho em hỏi thêm: Với cấu hình thanh ghi T3CON = 0x0030 thì thanh ghi TMR3 tăng lên một đơn vị sẽ tốn 256 chu kì lệnh? thay đổi nội dung bởi: namqn, 02-01-2009 lúc 05:41 PM. |
![]() |
![]() |
|
|