[an error occurred while processing this directive]
:-)) потому что синус и косинус себя так не ведут. (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено O.L. 11 января 2005 г. 15:33
В ответ на: Тогда спрошу по другому. отправлено анализатор 11 января 2005 г. 14:36

я ведь вам пример написал, ну неужели трудно просто проверить.

в моем примере таблица считается автоматически:


// start
sinx = 0x10; cosx = 0x18;
// tabbles XOR coparator output AND 0x10
(unsigned char)sinx^comp)&0x10
...
++sinx; //
++cosx; //

как это выглядит в bin
0x10 == 0x00010000 tabble sin == 1
0x11 == 0x00010001 tabble sin == 1
0x12 == 0x00010010 tabble sin == 1
...
0x1f == 0x00011111 tabble sin == 1
0x20 == 0x00100000 tabble sin == 0
0x21 == 0x00100001 tabble sin == 0
и т.д.
с косинусом то же самое, но сдвинутое на 1/4 периода

теперь в вашей программе


// Таблица значений знака синуса для частоты 1000 Герц
// с частотой дискретизации 4096 Гц
static u08 code sinTable[11] = {
0x0ee, 0x0e6, 0x066, 0x066, 0x077, 0x077, 0x077, 0x033, 0x033, 0x03b, 0x0bb
};


// calculate
(sinTable[countSig/8] << сountSig%8) & 0x080)

countSig == 0; countSig/8 == 0; сountSig%8 == 0; не сдвигаем.
countSig == 1; countSig/8 == 0; сountSig%8 == 1; сдвигаем на 1
countSig == 2; countSig/8 == 0; сountSig%8 == 2; сдвигаем на 2
и т.д. до 7

запишем эквивалент
countSig == 0; 0xee&0x80 == 1
countSig == 1; 0xdc&0x80 == 1
countSig == 2; 0xb8&0x80 == 1
countSig == 3; 0x70&0x80 == 0
countSig == 4; 0xe0&0x80 == 1
countSig == 5; 0xc0&0x80 == 1
countSig == 6; 0x80&0x80 == 1
countSig == 7; 0x00&0x80 == 0
но ведь это не синус!

В итоге вы пытаетесь отловить синусоидальный сигнал используя в качестве эталона не синусоидальную функцию


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

Ответы


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

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

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

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

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


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru