Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 25.04.2020
Сообщений: 15
1

Программа ФВЧ в среде Keil

20.12.2020, 19:50. Просмотров 378. Ответов 4

Доброго времени суток. Пытаюсь запрограммировать перестраиваемый фильтр ФВЧ в Keil. Программа работает некорректно: загружаю hex файл программы в протеус, подаю на вход синусоиду, но на выход приходит не таже синусоида (хотя должна), а полная чушь (как на рисунке). А Архиве все есть.
0
Миниатюры
Программа ФВЧ в среде Keil  
Вложения
Тип файла: zip Архив.zip (944.6 Кб, 45 просмотров)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2020, 19:50
Ответы с готовыми решениями:

Вопрос по среде keil
Можно ли как-то подключить в keil стандартные виндовые библиотеки, математические, к примеру? Не...

Программа не запускается без отладчика?! (KEIL 5.21)
Не ругайте сразу. Не могу понять почему программы не запускаются без отладчика (некоторые)......

ФВЧ на ОУ
Добрый день. Имеется вот такая схемка. Требуется расчитать компоненты для нее и подобрать...

ФВЧ. Графический метод
Хотел узнать,правильно ли я построил схемку,а также её графики АЧХ И ФЧХ,и рассчитал парметры.Если...

4
1479 / 741 / 305
Регистрация: 11.10.2018
Сообщений: 3,877
20.12.2020, 20:37 2
Какой микроконтроллер? Приведите программу, пожалуйста.
(не грузится просто).
0
0 / 0 / 0
Регистрация: 25.04.2020
Сообщений: 15
20.12.2020, 20:42  [ТС] 3
LPC 2148.
Код проги:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <lpc214x.h>
#include "ADC.h"
#include <stdint.h>
 
      float U;
            float wsreza; 
            float Td = 0.001;
            float a10 = 0.0, a11= 0.0, a12= 0.0;
            float a20= 0.0, a21= 0.0, a22= 0.0;
            float a30= 0.0, a31= 0.0, a32= 0.0;
            float a40= 0.0, a41= 0.0, a42= 0.0;
            
            float xn1, yn1, un1, un1_0 = 0.0, un1_1 = 0.0, un1_2 = 0.0, un1_3 = 0.0, un1_4 = 0.0; 
      float yn2, un2, un2_0 = 0.0, un2_1 = 0.0, un2_2 = 0.0, un2_3 = 0.0, un2_4 = 0.0; 
      float yn3, un3, un3_0 = 0.0, un3_1 = 0.0, un3_2 = 0.0, un3_3 = 0.0, un3_4 = 0.0; 
      float yn4, un4, un4_0 = 0.0, un4_1 = 0.0, un4_2 = 0.0, un4_3 = 0.0, un4_4 = 0.0; 
 
            float y_out;
 
 
void delay_ms(uint16_t j)
{
uint16_t x,i;
for(i=0;i<j;i++)
{
for(x=0; x<6000; x++){}; 
}
}
 
int main()
{
      int Yvihod;
    IO1DIR=0xffffffff;
    IO0DIR=0x00000000;
    PINSEL0=0x0300;
    VPBDIV=0x02;
 
    PINSEL1 = 0x00080000; 
 
      xn1=adc(0,6);// Read the ADC value of ADC0_6
      U=adc(0,7);// Read the ADC value of ADC0_7
 
            wsreza = 20 + (U/1)*80 ;
            
      // Peremen.1 aicheiki
       a10 = 2.5858640136*(wsreza*Td)*(wsreza*Td)+0.4511823472*wsreza*Td+10.4668728128;
       a11 = 5.1717280272*(wsreza*Td)*(wsreza*Td)-20.9337456256;
             a12 = 2.5858640136*(wsreza*Td)*(wsreza*Td)-0.4511823472*wsreza*Td+10.4668728128;
      // Peremen.2 aicheiki
       a20 = 2.5858640136*(wsreza*Td)*(wsreza*Td)+1.2848586196*wsreza*Td+7.6679537736;
       a21 = 5.1717280272*(wsreza*Td)*(wsreza*Td)-15.3359075472;
             a22 = 2.5858640136*(wsreza*Td)*(wsreza*Td)-1.2848586196*wsreza*Td+7.6679537736;
      // Peremen.3 aicheiki
       a30 = 2.5858640136*(wsreza*Td)*(wsreza*Td)+1.9229268142*wsreza*Td+3.709684508;
       a31 = 5.1717280272*(wsreza*Td)*(wsreza*Td)-7.419369016;
             a32 = 2.5858640136*(wsreza*Td)*(wsreza*Td)-1.9229268142*wsreza*Td+3.709684508;
      // Peremen.4 aicheiki
       a40 = 2.5858640136*(wsreza*Td)*(wsreza*Td)+2.268246833*wsreza*Td+0.9107654684;
       a41 = 5.1717280272*(wsreza*Td)*(wsreza*Td)-1.8215309368;
             a42 = 2.5858640136*(wsreza*Td)*(wsreza*Td)-2.268246833*wsreza*Td+0.9107654684;
    
    
while(1)
{   
       un1 =  xn1 - (a11/a10) * un1_1 - (a12/a10) * un1_2; 
       un1_2 = un1_1; 
       un1_1 = un1; 
       yn1 = (4/a10) * un1 + (-8/a10) * un1_1 + (4/a10) * un1_2; 
    
       un2 =  yn1 - (a21/a20) * un2_1 - (a22/a20) * un2_2;
       un2_2 = un2_1; 
       un2_1 = un2;
       yn2 = (4/a20) * un2 + (-8/a20) * un2_1 + (4/a20) * un2_2;
    
       un3 =  yn2 - (a31/a30) * un3_1 - (a32/a30) * un3_2;
       un3_2 = un3_1; 
       un3_1 = un3;
       yn3 = (4/a30) * un3 + (-8/a30) * un3_1 + (4/a30) * un3_2;
    
       un4 =  yn3 - (a41/a40) * un4_1 - (a42/a40) * un4_2;
       un4_2 = un4_1; 
       un4_1 = un4;
       yn4 = (4/a40) * un4 + (-8/a40) * un4_1 + (4/a40) * un4_2;
         
             Yvihod = yn4;
    
       DACR = ( (1<<16) | (Yvihod<<6) );
}
}
Код библиотеки
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 #include "ADC.h"
unsigned int val;
unsigned int adc(int,int);
 
unsigned int adc(int no,int ch)
{
    switch(no)                                    //select adc
    {
        case 0: AD0CR=0x00200600|(1<<ch);       //select channel
                AD0CR|=(1<<24);                 //start conversion
                while((AD0GDR& (1<<31))==0);
                val=AD0GDR;
                break;
 
        case 1: AD1CR=0x00200600|(1<<ch);       //select channel
                AD1CR|=(1<<24);                 //start conversion
                while((AD1GDR&(1<<31))==0);
                val=AD1GDR;
                break;
    }
    val=(val >> 6) & 0x03FF;                   // bit 6:15 is 10 bit AD value
 
    return val;
}
0
1479 / 741 / 305
Регистрация: 11.10.2018
Сообщений: 3,877
20.12.2020, 21:18 4
А по какому алгоритму частота фильтруется?
0
0 / 0 / 0
Регистрация: 25.04.2020
Сообщений: 15
20.12.2020, 21:22  [ТС] 5
Это рекурсивный фильтр в канонической форме. Могу от него маткадовский файл прислать
0
Вложения
Тип файла: zip KR4.zip (132.6 Кб, 3 просмотров)
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.12.2020, 21:22

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

T-образный ФВЧ типа К
Условие задачи: Построить высокочастотный T-образный фильтра типа k, если граничная частота f1 =...

Принцип работы ФВЧ и ФНЧ
Доброго времени суток. Пытаюсь понять принципы работы фильтров, начнем с ФВЧ. Схема: ...

Цифровой фильтр ФВЧ (ASM)
В общем программа &quot;Цифровой фильтр (верхних частот)&quot;, в начале я ввожу максимальный входной отсчет...

Моделирование цифрового ФВЧ Чебышева
Добрый день. Подскажите пожалуйста. Спроектировал ФВЧ Чебешева I рода. Как отфильтровать входной...

программа в среде Delphi
Помогите, пожалуйста, написать программу в среде Deiphi. Вывести в столбец произведения чисел а =...

Программа на в среде Delphi 7 /
Очень срочно нужна программа !! Нужно сделать проекцию дома и при нажатии на кнопку был вид...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.