ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 апреля
1312580 Топик полностью
Toчкa oпopы (24.05.2023 22:54, просмотров: 228) ответил SciFi на Предполагаю, это прошло по категории "ненужные навороты" :-)
Я так сделал целочисленный на ассемблере AVR. Дискуссию припоминаю, но почему-то думал, что там будённовец зажигал. 
.....
.....
.....
.equ	M = 8	/*	M = 2, 3, ... 7, 8	Параметр программного ФНЧ.	*/
.def	zero_register = R1
.def	Int_temp_1 = r14	// Временные регистры прерываний, также - ZL:ZH
.def	Int_temp_2 = r15
.def	Filtered_data = r25
.def	Data_LPF_L = r26
.def	Data_LPF_H = r27
/*	Данные программного ФНЧ с фиксированной точкой. Положение точки определяется
параметром M - от 14.2 при M=2, до 8.8 при M=8. */ ..... ..... ..... .org ADCCaddr // Готовность данных АЦП rjmp data_new ..... ..... ..... data_new: /* Прерывание от АЦП - считывание данных и БИХ ФНЧ Закрыл неочевидную для меня "засаду" с целочисленной реализацией рекурсивного фильтра, которая может "залипать" при изменении входных данных менее, чем на 2^M и перешёл к вычислениям с фиксированной точкой. Биты Data_LPF 15..M+1 - целая часть, M..0 - дробная
Y(n) = [(Y(n-1)*(2^M-1) + Xn]/2^M ===> Data_LPF = Data_LPF + (ADCH - Filtered_data) Filtered_data = round(Data_LPF) / 2^M */
load Int_temp_2,SREG load Int_temp_1,ADCH // 8-битные входные данные
add Data_LPF_L,Int_temp_1 adc Data_LPF_H,zero_register sub Data_LPF_L,Filtered_data sbc Data_LPF_H,zero_register
/* Извлечение данных из ФНЧ. Filtered_data = round(Data_LPF) >> M */ ldi ZL,exp2(M-1) // K.L + 0.5 mov ZH,Data_LPF_H // Подготовка к округлению add ZL,Data_LPF_L adc ZH,zero_register .if (M==5) lsl ZL rol ZH .endif .if (M==6)|(M==5) lsl ZL rol ZH .endif .if (M==7)|(M==6)|(M==5) lsl ZL rol ZH .endif .if (M>=5) mov Filtered_data,ZH .endif .if (M==4) lsr ZH ror ZL .endif .if (M==3)|(M==4) lsr ZH ror ZL .endif .if (M==2)|(M==3)|(M==4) lsr ZH ror ZL .endif .if (M<=4) lsr ZH ror ZL mov Filtered_data,ZL .endif // Filtered_data = round(Data_LPF) >> M
store SREG,Int_temp_2 reti
..... ..... .....
Заказать импортные ЭК - https://shop.fulcrum.ru/buy