View Single Post
Old 27-12-2008, 11:09 AM   #10
ham_hoc_hoi
Đệ tử 1 túi
 
Tham gia ngày: Dec 2008
Bài gửi: 25
:
nếu ADCBUF0 >> 1 của em là 0x01F8 là 504
và POSCNT là 124 xung/10ms (0x007C xung/10ms) ==> POSCNT*0x0003 = 327 ( 0x0174)
vậy ControlHistory[n] = fooPID.controlReference - fooPID.measuredOutput
= 0x01F8 - 0x0174 = 0x0084 = 132
ControlHistory[n] là số frac thì kết quả như này có đúng ko
EM giả sử
controlOutput[n] = controlHistory[n] * abcCoefficient[0] (coi các hệ số khác = 0)
khi đó controlHistory[n] là số frac nhân với abcCoefficient[0] là số Q15 ví dụ abcCoefficient[0] = 0,7
controlOutput[n] là số frac
khi đó controlOutput[n] = 0x0084 * 0,7 thì ra dạng số j, có phải là số frac ko, và nó có giá trị bằng bao nhiêu, em muốn chuyển sang số int để đưa vào thanh ghi PDC1 thì làm thế nào.
còn số abcCoefficient[0] là số Q15 thì em muốn khai báo 1 số lơn hơn 1 thì làm thế nào
Mong các bác nhiệt tình giúp em với, em đang bị bí phần này quá
ham_hoc_hoi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn