[an error occurred while processing this directive]
0xFF. Не дайте умереть от недосыпа !!!! Код в студии
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Nikolaj 27 июля 2006 г. 23:08

Назначение функции: линейная аппроксимация и расчет промежуточных точек по узловым;
Среда: IAR AVR 3.20С;
Проблема: при отрицательных К расчитанная координата Y равна хрен знает чему. Для примера приведено построение трапеции. Ошибка в работе IAR-а? Расчет "на бумажке" и прогон этого же в VS ... сами понимаете...

Код _______________________________________________________________


void CalcAndLoadEpuresToPLD(void){
unsigned char i;
int I;
int iTemp;
float k, b;

putchar(0x0D);
printf("CalcAndLoadEpuresToPLD...");
putchar(0x0D);

i = 0; while(Points[++i].n){
// Coefficient calc
// k = (U2 - U1)/(Code_2 - Code_1);
// b = U1 - k*Code_1;
k = ((float)(Points[i].I_n - Points[i - 1].I_n))/((float)(Points[i].t_n - Points[i - 1].t_n));
b = ((float)Points[i - 1].I_n) - k*((float)Points[i - 1].t_n);

putchar(0x0D);
putchar(0x0D);
printf(" X = %d;", Points[i - 1].t_n); printf(" Y = %d;", Points[i - 1].I_n);
I = (int)(k*100);
printf(" k = %d.%d;", I/100, I%100);
printf(" b = %d;", (int)b);
putchar(0x0D);
putchar(0x0D);

// Calc epures and write data to PLD
for(I = Points[i - 1].t_n; I < Points[i].t_n; I++){
iTemp = (int)(k*I + b); // Calc of Yi
printf(" Yi = %d;", iTemp); // print Y coordinate
WriteData(iTemp, I); // print X coordinate and '.' for grafics
}

}// End of "while(Points[++i].n)"
return;}


Результат _________________________________________________________

CalcAndLoadEpuresToPLD...


X = 0; Y = 0; k = 5.0; b = 0;

Yi = 0; Xi = 000 |.
Yi = 5; Xi = 001 | .
Yi = 10; Xi = 002 | .
Yi = 15; Xi = 003 | .
Yi = 20; Xi = 004 | .
Yi = 25; Xi = 005 | .
Yi = 30; Xi = 006 | .
Yi = 35; Xi = 007 | .
Yi = 40; Xi = 008 | .
Yi = 45; Xi = 009 | .


X = 10; Y = 50; k = 0.0; b = 50;

Yi = 50; Xi = 010 | .
Yi = 50; Xi = 011 | .
Yi = 50; Xi = 012 | .
Yi = 50; Xi = 013 | .
Yi = 50; Xi = 014 | .
Yi = 50; Xi = 015 | .
Yi = 50; Xi = 016 | .
Yi = 50; Xi = 017 | .
Yi = 50; Xi = 018 | .
Yi = 50; Xi = 019 | .
Yi = 50; Xi = 020 | .
Yi = 50; Xi = 021 | .
Yi = 50; Xi = 022 | .
Yi = 50; Xi = 023 | .
Yi = 50; Xi = 024 | .
Yi = 50; Xi = 025 | .
Yi = 50; Xi = 026 | .
Yi = 50; Xi = 027 | .
Yi = 50; Xi = 028 | .
Yi = 50; Xi = 029 | .
Yi = 50; Xi = 030 | .
Yi = 50; Xi = 031 | .
Yi = 50; Xi = 032 | .
Yi = 50; Xi = 033 | .
Yi = 50; Xi = 034 | .
Yi = 50; Xi = 035 | .
Yi = 50; Xi = 036 | .
Yi = 50; Xi = 037 | .
Yi = 50; Xi = 038 | .
Yi = 50; Xi = 039 | .


X = 40; Y = 50; k = -5.0; b = 250;

Yi = 50; Xi = 040 | .
Yi = 6598; Xi = 041 |
.
Yi = 13147; Xi = 042 |
Yi = 19695; Xi = 043 |
.
Yi = 26244; Xi = 044 |
Yi = -32743; Xi = 045 | .
Yi = -26195; Xi = 046 |
Yi = -19646; Xi = 047 |
Yi = -13098; Xi = 048 |
.
Yi = -6549; Xi = 049 |
_______________________________________________________________

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание