Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Вот >>

Отправлено Юрий_СВ (213.5.199.158) 30 ноября 2010, г. 14:01
В ответ на: Если не требуется экстремальная экономия памяти программ - таблица - абсолютно правильное решение. Если же требуется, то может так ? >> отправлено Юрий_СВ 30 ноября 2010, г. 14:01

typedef struct
{
unsigned char n;
unsigned char m;
unsigned int res; // фактически полученное усиление
} para_t;
//-----------------------------------------------------------------
void calc_G(para_t * para, unsigned int G1) // G1 - требуемое усиление от 1 до 256
{
unsigned char Gt;
if(G1<=16) {para.n=G; para.m=1; return;};

para->res=0; Gt=G1>>1; // т.к. второй множитель не может бусть менее 2

for(n=Gt; n>=m; n--) // перебор начинаем с максимальных усилений первого усилителя
{
for(m=2; m<16; m+)
{
unsigned int x;
x=m*n;
if ((x<=G1)&&(x>para.res)) {para.res=x; para.n=n; para.m=m;}
}
}
//-----------------------------------------------------------------
//использование функции :
para_t para;
calc_G(¶, 47);
G2=((--para.n)<<4) | (--para.m);


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 45:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru