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á
|