bekor

8 Битная Таблица Синуса

33 сообщения в этой теме

bekor    2

помогите пожалуйста найти таблицу синуса для подачи на 8 битный ЦАП

у меня есть но она для одного полного периуда а мне нужен полупериуд с 8 битной дискретизацией

если у кого есть киньте пожалуйста сюда

заранее спасибо

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

0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,
0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,
0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf5,
0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,
0xf6,0xf5,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe2,0xe0,0xde,0xdc,
0xda,0xd8,0xd5,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb3,
0xb0,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x98,0x95,0x92,0x8f,0x8c,0x89,0x86,0x83,
0x80,0x7c,0x79,0x76,0x73,0x70,0x6d,0x6a,0x67,0x63,0x60,0x5d,0x5a,0x57,0x54,0x51,
0x4f,0x4c,0x49,0x46,0x43,0x40,0x3e,0x3b,0x38,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27,
0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x13,0x12,0x10,0x0f,0x0d,0x0c,0x0a,
0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08,
0x09,0x0a,0x0c,0x0d,0x0f,0x10,0x12,0x13,0x15,0x17,0x19,0x1b,0x1d,0x1f,0x21,0x23,
0x25,0x27,0x2a,0x2c,0x2e,0x31,0x33,0x36,0x38,0x3b,0x3e,0x40,0x43,0x46,0x49,0x4c,
0x4f,0x51,0x54,0x57,0x5a,0x5d,0x60,0x63,0x67,0x6a,0x6d,0x70,0x73,0x76,0x79,0x7c

нужен такойже но для одного полупериуда ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    560
у меня есть но она для одного полного периуда
Дак выкеньте полвину таблицы и будет Вам ПолПерода :)

0x80 это начало полупериода. Обратите внимание, в середине оно повторяется, а дальше, 2-ая половина, это инверсные значения 1-ой половины.

Такую таблицу можно самостоятельно создать, с помощью калькулятора :)

PS: Период пишеться через О, а не через У .

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    560

Вот, написал маленькую програмку для вычесления синусных значений sin.rar

Пожалуйста, пользуйтесь :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
bekor    2

Alex Большое вам спасибо за програмку

но кажется вы меня неправильно поняли :(

если взять половину этой таблицы то получиться полупериод НО будет не 8 битная разрядность а 7 битная

ктомуже амплитуда будет не от 0 до 255 а от 0 до 127 или от 127 до 255

а мне нужно чтобы полпериод имел 8 битную разрядность и мин. макс. точки были 0х00 и 0xFF

на рисунке виднее

нужен такой

post-25321-1256018016_thumb.jpg

а не такой

post-25321-1256018026_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
my504    357

becor, вообще нет никакой проблемы. Открываете Excel и строите таблицу с нужным шагом и последнюю колонку выводите в гексакоде (есть встроенная матфункция децимал в хекс). И прямо ее и копируете копипастом в тело программы...

ЗЫ. Кстати требуется только 90 градусов, поскольку остальное выбирается путем расчета адреса (правильная индексация массива)

Изменено пользователем my504

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    560
на рисунке виднее

нужен такой

На рисунке у Вас не синус, а косинус :)

Вобщем смысл ясен, Вам нужно без смещения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
NebsteR    743

полдня прошло с момента открытия темы))) уж наверное можно было-бы сделать таблицу и самому))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
bekor    2
Открываете Excel и строите таблицу .........

к сожалению я экзелем невладею :(

Алекс немогли бы вы переделать вашу програмку чтобы она выводила табличку для

полупериода с 8 битной дискретизацией

был бы очень признателен :rolleyes:

полдня прошло с момента открытия темы))) уж наверное можно было-бы сделать таблицу и самому))

еслибы я мог составить эту таблицу сам, то необратился бы к вам за помосчю

В математике я несилен :huh:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
wowa    4

вот с вашей же таблицы!! Только там может быть на конце будет один байт лишний...

0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,
0xf6,0xf5,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe2,0xe0,0xde,0xdc,
0xda,0xd8,0xd5,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb3,
0xb0,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x98,0x95,0x92,0x8f,0x8c,0x89,0x86,0x83,
0x80,0x7c,0x79,0x76,0x73,0x70,0x6d,0x6a,0x67,0x63,0x60,0x5d,0x5a,0x57,0x54,0x51,
0x4f,0x4c,0x49,0x46,0x43,0x40,0x3e,0x3b,0x38,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27,
0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x13,0x12,0x10,0x0f,0x0d,0x0c,0x0a,
0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
0x00,0x00

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
bekor    2
вот с вашей же таблицы!!

Нет нет это совсем нето :(

ладно я объясню суть проблемы тогда может станет яснее

короче надо управлять нагрузкой синусоидальным током через полномостовой драйвер

так вот выводим последовательно всю таблицу (полупериод) на ЦАП, потом меняем полярность тока,

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

получается полный период синусного тока.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
wowa    4

Полный синус можно посчитать и из четверти табицы!!! Дело не в этом. Если у вас есть место для полной таблицы - непарьте голову и залейте её туда!!! Проще её будет пользовать.. Все эти обрезания таблицы делают исключительно для экономии места в флеши!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
bekor    2

да нет дело вовсе не в экономии памяти

дело в том что мне нужен только полупериод с амплитудой 0-255

тоесть итого у меня будет от -255 до 255

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    560
Алекс немогли бы вы переделать вашу програмку чтобы она выводила табличку для

полупериода с 8 битной дискретизацией

Вечером сделаю, исходник дома. Заного не хочется писать :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Alex    560

Пожалуйста. Сделал для Вашего случая :)

sin.rar

Таблица 256 точек

0x00,0x03,0x06,0x09,0x0C,0x0F,0x12,0x15,0x18,0x1C,0x1F,0x22,0x25,0x28,0x2B,0x2E,0x31,0x34,0x37,0x3A,0x3D,0x40,
0x44,0x47,0x4A,0x4D,0x4F,0x52,0x55,0x58,0x5B,0x5E,0x61,0x64,0x67,0x6A,0x6D,0x6F,0x72,0x75,0x78,0x7A,0x7D,0x80,0x83,0x85,
0x88,0x8B,0x8D,0x90,0x92,0x95,0x97,0x9A,0x9C,0x9F,0xA1,0xA4,0xA6,0xA8,0xAB,0xAD,0xAF,0xB2,0xB4,0xB6,0xB8,0xBA,0xBC,
0xBF,0xC1,0xC3,0xC5,0xC7,0xC9,0xCA,0xCC,0xCE,0xD0,0xD2,0xD4,0xD5,0xD7,0xD9,0xDA,0xDC,0xDD,0xDF,0xE0,0xE2,0xE3,
0xE5,0xE6,0xE7,0xE9,0xEA,0xEB,0xEC,0xED,0xEF,0xF0,0xF1,0xF2,0xF3,0xF4,0xF4,0xF5,0xF6,0xF7,0xF8,0xF8,0xF9,0xFA,0xFA,0xFB,
0xFB,0xFC,0xFC,0xFD,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFD,0xFD,0xFD,0xFC,
0xFC,0xFB,0xFB,0xFA,0xFA,0xF9,0xF8,0xF8,0xF7,0xF6,0xF5,0xF4,0xF4,0xF3,0xF2,0xF1,0xF0,0xEF,0xED,0xEC,0xEB,0xEA,0xE9,0xE7,
0xE6,0xE5,0xE3,0xE2,0xE0,0xDF,0xDD,0xDC,0xDA,0xD9,0xD7,0xD5,0xD4,0xD2,0xD0,0xCE,0xCC,0xCA,0xC9,0xC7,0xC5,0xC3,0xC1,
0xBF,0xBC,0xBA,0xB8,0xB6,0xB4,0xB2,0xAF,0xAD,0xAB,0xA8,0xA6,0xA4,0xA1,0x9F,0x9C,0x9A,0x97,0x95,0x92,0x90,0x8D,0x8B,0x88,
0x85,0x83,0x80,0x7D,0x7A,0x78,0x75,0x72,0x6F,0x6D,0x6A,0x67,0x64,0x61,0x5E,0x5B,0x58,0x55,0x52,0x4F,0x4D,0x4A,0x47,0x44,
0x40,0x3D,0x3A,0x37,0x34,0x31,0x2E,0x2B,0x28,0x25,0x22,0x1F,0x1C,0x18,0x15,0x12,0x0F,0x0C,0x09,0x06,0x03,0x00

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
bekor    2
Пожалуйста. Сделал для Вашего случая :)

sin.rar

Круто, теперь это то что надо !!!

Алекс, большое вам человеческое СПАСИБО

вы мне очень очень помогли :rolleyes: :rolleyes: :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
NebsteR    743

а может проще по формуле высчитывать динамически, чем тратить ценную память?)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
terminal    0
Пожалуйста. Сделал для Вашего случая

sin.rar ( 3,87 килобайт ) Кол-во скачиваний: 5

А Можно написать на все случаи жизни, тоже очень надо.

Я обычно в экселе мучаюсь.

Хотелось бы переменную амплитуду от 0-255,пременную длинну 0-255, и разные формы полукруг,треугольник,элепс,трапецию.

Если не сложно конечно :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
my504    357
.......Я обычно в экселе мучаюсь.

"Вы просто не умеете его готовить..." (с)

Эксель позволяет впрямую копипастить полученный расчет в программу. Для этого нужно сформатировать выходные данные в синтаксисе исходного листинга (асм или си).

Это совершенно универсальный инструмент...

Слово "элепс" пишется по русски ЭЛЛИПС..., а существительное длиНа с одной Н, в отличии от прилагательного "длинный", где одна Н от корня, а вторая - суффикс...

Изменено пользователем my504

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
terminal    0
.......Я обычно в экселе мучаюсь.

"Вы просто не умеете его готовить..." (с)

Эксель позволяет впрямую копипастить полученный расчет в программу. Для этого нужно сформатировать выходные данные в синтаксисе исходного листинга (асм или си).

Это совершенно универсальный инструмент...

Слово "элепс" пишется по русски ЭЛЛИПС..., а существительное длиНа с одной Н, в отличии от прилагательного "длинный", где одна Н от корня, а вторая - суффикс...

Учить меня Русскому уже позно, он ко мне не липнет.Пробовал несколько раз изучать заново, бесполезно. :(

"Вы просто не умеете его готовить..." (с)

Эксель позволяет впрямую копипастить полученный расчет в программу. Для этого нужно сформатировать выходные данные в синтаксисе исходного листинга (асм или си).

Это совершенно универсальный инструмент...

Если Вам не трудно, опишите алгоритм передачи данных.

Изменено пользователем terminal

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
my504    357

Ну словом "алгоритм" - этот процесс назвать нельзя. Собственно процесс - простое копирование Ctrl-C ... Ctrl-V, а вот форматирование под синтаксис асма или си имеет следующие особенности.

Сначала готовим обычную вертикальную таблицу: первая колонка - аргумент (шаг аргумента выбираете сами, в памяти МК нумерация будет от нуля) , вторая - функция (все в десятичном представлении). Я очень надеюсь, что Вы умеете размножать функциональные ячейки путем протягивания крестообразным указателем правой нижней угловой точки ячейки, иначе действительно будут мучения. Если не умеете, скажите - объясню.

Третья колонка - это отнормированная к единице функция. И одновременно умноженная на максимальное число в разрядности МК. Т.е. для синуса получится, что нормировки не требуется (он и так максимум равен 1), а вот умножить на 255 (для 8 разр. представления) необходимо.

Итак, имеем вертикальный столбец с десятичным представлением. Можно его перевести в шестнадцатиричное имеющейся в Экселе функцией, но можно оставить и так.

Теперь вставляем ПЕРЕД финишной колонкой еще одну пустую. В ней копируем необходимые перед числами символы: пустая колонка - один пробел, заполненная - ее текстовое содержимое плюс один пробел. Что бы перед числом была точка без пробела (десятичное представление) или 0x (для гекса), нужно отформатировать ячейки финишной колонки. Для этого их нужно выделить обычным методом и открыть меню форматирования ячейки (формат представления чисел). В этом меню есть строка "все форматы", выбираем ее и в открывшемся окне зыписываем текст перед величиной в кавычках) - можно выбрать как основу для исправления имеющиеся в этом окне варианты. Там интуитивно понятен синтаксис форматирования. После подтверждения выбранного и исправленного, текст в колонке результата примет необходимый для копирования вид.

Далее выделяете необходимые для копирования колонки и вставляете в код. Все.

Изменено пользователем my504

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
terminal    0
Ну словом "алгоритм" - этот процесс назвать нельзя. Собственно процесс - простое копирование Ctrl-C ... Ctrl-V, а вот форматирование под синтаксис асма или си имеет следующие особенности.

Сначала готовим обычную вертикальную таблицу: первая колонка - аргумент (шаг аргумента выбираете сами, в памяти МК нумерация будет от нуля) , вторая - функция (все в десятичном представлении). Я очень надеюсь, что Вы умеете размножать функциональные ячейки путем протягивания крестообразным указателем правой нижней угловой точки ячейки, иначе действительно будут мучения. Если не умеете, скажите - объясню.

Третья колонка - это отнормированная к единице функция. И одновременно умноженная на максимальное число в разрядности МК. Т.е. для синуса получится, что нормировки не требуется (он и так максимум равен 1), а вот умножить на 255 (для 8 разр. представления) необходимо.

Итак, имеем вертикальный столбец с десятичным представлением. Можно его перевести в шестнадцатиричное имеющейся в Экселе функцией, но можно оставить и так.

Теперь вставляем ПЕРЕД финишной колонкой еще одну пустую. В ней копируем необходимые перед числами символы: пустая колонка - один пробел, заполненная - ее текстовое содержимое плюс один пробел. Что бы перед числом была точка без пробела (десятичное представление) или 0x (для гекса), нужно отформатировать ячейки финишной колонки. Для этого их нужно выделить обычным методом и открыть меню форматирования ячейки (формат представления чисел). В этом меню есть строка "все форматы", выбираем ее и в открывшемся окне зыписываем текст перед величиной в кавычках) - можно выбрать как основу для исправления имеющиеся в этом окне варианты. Там интуитивно понятен синтаксис форматирования. После подтверждения выбранного и исправленного, текст в колонке результата примет необходимый для копирования вид.

Далее выделяете необходимые для копирования колонки и вставляете в код. Все.

Ну это я и так делаю.Просто эксель в копируемых данных всавляет лишний пробел который приходится удалять, еще он копирует все в одну строку в этом случае тоже приходится править.

		.db  0,   6, 13, 19, 25, 31, 38, 44
	.db 50,  56, 62, 69, 75, 81, 87, 92
	.db 98, 104,110,115,121,127,132,137
	.db 143,148,153,158,163,168,172,177

а эксель 3, 6, 9, 12, 16, 19, 22, 25, 28, 31, 34, 37, 40, 43, 46, 49, 51,

PS: Форум автоматически удалил лишние пробелы

P.S.S. Используйте правильные ТЕГИ и будет всё пучком!!! / Wowa.

В строке экселя, а не кода.

Изменено пользователем terminal

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
my504    357

Пробел перед величиной не влияет на код, наоборот читабельность повышается.

У меня копирует ровно так же, как в таблице - данные в колонку - копия в колонку, данные в строку - копия в коде тоже в строку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
terminal    0
Пробел перед величиной не влияет на код, наоборот читабельность повышается.

У меня копирует ровно так же, как в таблице - данные в колонку - копия в колонку, данные в строку - копия в коде тоже в строку.

С этим не согласен, был момент когда после такого копирования ASM вставил ноль в код.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
my504    357

Что это за момент? И что за "ноль в коде"? :o Приведите пример.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
terminal    0
Что это за момент? И что за "ноль в коде"? :o Приведите пример.

Копировал из Экселя длинную таблицу когда в AVR Studio 4, скомпилировал оказалось что не работает, начал проверять пошагово оказалось что каким то образом компилятор вставил ноль в нутрь таблицы.Удалил все пробелы сформированные Экселем, все заработало.Теперь удаляю их всегда.

Пример в коде 0xff,0,0xff в таблице 0xff,пробел от экселя 0xff

Изменено пользователем terminal

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сообщения

    • Есть мать от компа с накрытым мостом и куча элементов на ней Разбираю на запчасти Капнул олово на микросхему - пристало зараза а назад никак. Пробовал и 60-ваттным и 25-ваттным - никак. Даже пробовал разогревать плату обычным феном - олово плавится, микросхема стоит. Резисторы тоже даже самые маленькие не отпаивает отводит тепло сразу На газовой плите отпаивается но после этого детали не рабочие и надо держать аж 5 минут Паяльного фена нет. Пробовал припаивать - припаивает а назад никак Я уже паял смд и с такой проблемой не сталкивался, это только мать с компа...
    • Он сначала задал вопрос гостем, а потом решил зарегистрироваться. Так что никакой смены ников не было. И я всегда читаю темы с первого поста и считаю, что хамите Вы. Не надо срываться.
    • Это общее видимое действие, в реальности чуть сложнее. PLL - это управляемый напряжением генератор высокой частоты (VCO) + управляемые делители образцовой и выходной частот + фазовый детектор + аналоговый фильтр. Всё вместе получается PLL - дико нестабильная штука, с диким фазовым шумом, и с невероятной чувствительностью к напряжению питания и температуре. Но благодаря обратной связи в виде фазового детектора - выходная частота всегда совпадает по фазе с образцовой частотой. Фазовый шум не исчезает полностью, по этому для очень ответственных вещей нужно что-то внешнее.  PLL - это блок который не может стартовать мгновенно, или заранее. Ему сначала нужно подать готовую, заранее стабильную входную частоту. В случае с внешним кварцем - необходимо дождаться пока он станет стабильным (опрос флагов готовности). Записать значения делителей в PLL. И только после этого можно включать PLL. + нужно дождаться пока он станет стабильным.  Есно переключаться на использование PLL в качестве основной частоты мк - можно после настройки делителей за основным переключателем + настройки латентности флеша. Вся схема из кубика читается стандартно слева на право и сверху вниз. И точно так-же обслуживается.
    • Ну, это как бы и не у нас, а в Бердске, радиозавод "Вега" помнишь?
      Дык там был нормальный винзавод, и всё в порядке, просто лет 5-10 назад прекратились вагонные поставки плодовоягодного сырья, с чего все вина и стряпали. У меня там кент был, Петрович, главным инженером, мы общались постоянно, пока я там жил.
      Ну, и как я понял, перешли они потом на производство слабоалкогольных газированных напитков.
      И нормально трудилися, да в поте лиц своих все.
      А тут раз, проверка, и документов на 25 тонн спирта нету! А спирт там нормальный был.
      А ща. ФССП, наняли бригаду людей, которые якобы, будут этот спирт разбавлять водой, и сливать в канализацию!
      Этож надо подумать! 25 тонн спирта разбавить, это во первых, а во вторых слить его в канализацию!
      Этож им надо будет оплатить ещё и за водоотведение 120 тонн слива, как минимум!
      Разбавлять разрешили вроде в течении месяца, и до 10%.
      Дык там рыба вся будет бухая плавать в Оби!
    • Крашер,ты дурака из себя не выжимай! На старости то лет....
    • Вообще-то в простых схемах обходятся так: