Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; 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);
Составить ответ
|
Вернуться на конференцию
Ответы
Gt - максимально возможное значение первого множителя. Хитрый значёк в вызове функции - указатель на объект para (para_t)
-
Юрий_СВ
(30.11.2010, 14:05:31
213.5.199.158
,
пустое
)
Я решил оставить таблицу.
-
Леонид Иванович
(30.11.2010, 14:15:17
87.252.227.56
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 45:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru