Гы...;О) Ну стоит у меня в готовом девайсе переключаемый полосовичок на м8, теперь, правда на м48. Бо при той-же тактовой(16М) жрёт меньше. По уровню -60дБ около 30-35Гц на 50Гц. На 75гЦ получше, на 25, похуже. Около 200-250тап на фильтер. 2003г, уже не помню. 24р коэфф и 10р данные. Фсэмпл, кажысь, 800Гц. Арифметика, ессно, знаковая.
Ну там ещё мелочи типа АРУ, пикового детектора, интерполятора перехода через "0". Причём, это составная часть прибора. А весь прибор прошёл все серт испытания, получил тип и лежит в каталоге срецтв измерения. Повторять его смысла не вижу ;О). Достаточно нарисовать МАС с 24*16signed и 6 или 7байтным аккумулятором для длины фильтера, скажем, 200(надо прикинуть, ну х с ним, пусть будет 7). И посчитать тактики на МАС. 1250мкс/200=6,25мкс=62 такта при 10Мгц и 100тактов при 16. И посмотреть, помещается наш МАС в это время или нет. В АВР на 16 поместился с 10-15% запасом.
;начало из беньчморка эти такты щщитать не бум, бо копейки.
ldi temporary1,high(circular_buffer_for_LPF_bot)
UHF_level_data_filtering_loop:
cpi xl,low(circular_buffer_for_LPF_bot) ;1
cpc xh,temporary1 ;1
brcs UHF_level_data_filtering_ptr ;2
ldi xl,low(circular_buffer_for_UHF_LPF)
ldi xh,high(circular_buffer_for_UHF_LPF)
UHF_level_data_filtering_ptr:
ld sy_s_l,x+ ;2
ld sy_s_h,x+ ;2
lpm coff_s_l,z+ ;3
lpm coff_s_m,z+ ;3
lpm coff_s_h,z+ ;3
muls coff_s_h,sy_s_h ;2
movw mres_3,r0 ;1
mul coff_s_m,sy_s_l ;2
movw mres_1,r0 ;1
mulsu coff_s_h,sy_s_l ;2
sbc mres_4,zero_reg ;1
add mres_2,r0 ;1
adc mres_3,r1 ;1
adc mres_4,zero_reg ;1
mulsu sy_s_h,coff_s_m ;2
sbc mres_4,zero_reg ;1
add mres_2,r0 ;1
adc mres_3,r1 ;1
adc mres_4,zero_reg ;1
mulsu sy_s_h,coff_s_l ;2
sbc mres_3,zero_reg ;1
sbc mres_4,zero_reg ;1
add mres_1,r0 ;1
adc mres_2,r1 ;1
adc mres_3,zero_reg ;1
adc mres_4,zero_reg ;1
mul coff_s_l,sy_s_l ;2
add mres_1,r1 ;1
adc mres_2,zero_reg ;1
adc mres_3,zero_reg ;1
adc mres_4,zero_reg ;1
add acc0,mres_0 ;1
adc acc1,mres_1 ;1
adc acc2,mres_2 ;1
adc acc3,mres_3 ;1
adc acc4,mres_4 ;1
adc acc5,zero_reg ;1
adc acc6,zero_reg ;1
dec main_counter ;1
brne UHF_level_data_filtering_loop ;2
вот, вроде 63 такта получилось. Плюс другая работа по мелочи. Итого на 16МГц мега задачу покрывает с запасом.-
- Выкладывай в проекты. - =L.A.=(31.08.2006 15:37,
)
- Выкладывай в проекты. - =L.A.=(31.08.2006 15:37,