Хочу спросить у Вас: "Кто чем пользуется? Может есть решение попроще?".
P.S. stm32f103 + keil
Код: Выделить всё
// --- Преобразование строки в число ---
void StrTo() {
number=0;
ret = 0;
ret=retstr[0]-0x30;
number=ret*1000000;
ret=retstr[1]-0x30;
number=number+ret*100000;
ret=retstr[2]-0x30;
number=number+ret*10000;
ret=retstr[3]-0x30;
number=number+ret*1000;
ret=retstr[4]-0x30;
number=number+ret*100;
ret=retstr[5]-0x30;
number=number+ret*10;
ret=retstr[6]-0x30;
number=number+ret;
}
// --- Преобразование числа в строку ---
void ToStr() {
uint32_t i;
i=number/1000000;
number=number-i*1000000;
retstr[0] = i + 0x30;
i=number/100000;
number=number-i*100000;
retstr[1] = i + 0x30;
i=number/10000;
number=number-i*10000;
retstr[2] = i + 0x30;
i=number/1000;
number=number-i*1000;
retstr[3] = i + 0x30;
i=number/100;
number=number-i*100;
retstr[4] = i + 0x30;
i=number/10;
number=number-i*10;
retstr[5] = i + 0x30;
retstr[6] = number + 0x30;
}
да ARM и софт-float пережует и не поперхнется - о чем вообще речь?! AVR и тот float считает с приемлемой для термометра производительностью, а тут ARM!КРАМ писал(а):32-разрядный МК реализует в ЦЕЛЫХ числах (фиксированная точка) аж 9,5 ДЕСЯТИЧНЫХ разрядов.
Думать нужно ВСЕГДА.ARV писал(а):для того и простор, чтобы меньше думать о пути...
А зачем ? Чтобы потом, для вывода, переводить обратно ?spongebob писал(а):а из них можно сделать float
Чушь.Andrew Martin писал(а):Float может понадобиться ежели
Лови:Andrew Martin писал(а):Особенно интересно как реализуешь извлечение квадратного корня
Код: Выделить всё
;--- SQRT (W1:W0 -> W0)
sqrt:
mov # 0x8000, W5
clr W6
lp_sq:
ior W6, W5, W6
mul.uu W6, W6, W2
sub W0, W2, W4
subb W1, W3, W4
btss SR, # C
sub W6, W5, W6
lsr W5, W5
bra NC, lp_sq
mov W6, W0
return
Код: Выделить всё
;---------------------------
;--- ФНЧ-17
; прореживание через 7 отсчетов
LPF:
mov # buf_calc, W10
;--- фильтр 17 порядка
mov # psvoffset(tab_FIR), W8
clr B, [W8]+=2, W4, [W10]+=2, W5
do # 31, end_LPF
repeat # 16
mac W4*W5, B, [W8]+=2, W4, [W10]+=2, W5
mov # psvoffset(tab_FIR), W8
mov [W8++], W4
sub W10, # 20, W10
end_LPF: mov [W10++], W5
mov shift_lpf, W0
and # 0b11, W0
mov # 8, W1
sub W1, W0, W0
sftac B, W0
mov ACCBH, W0
btsc ACCBL, # 15
inc W0, W0
mov W0, [W7]
return
;---------------------------