MPetrovich 6 31 июля, 2023 Опубликовано 31 июля, 2023 · Жалоба 41 minutes ago, EdgeAligned said: Но и максимальное значение увеличится до +2. Я потому и спросил). Можно уложить синус в диапазон 0...+1 применив формулу 0,5 + sin(x)/2. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 31 июля, 2023 Опубликовано 31 июля, 2023 · Жалоба Только что, MPetrovich сказал: Можно уложить синус в диапазон 0...+1 Как давно известно: значение синуса в военное время может достигать 2-х. А сейчас у нас какое время? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 83 31 июля, 2023 Опубликовано 31 июля, 2023 · Жалоба Так это прямой угол кипит при 100° в военное время 🙂 А вот если -1 разделить на 2 и прибавить +0,5, то получится... 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sayya_78 3 1 августа, 2023 Опубликовано 1 августа, 2023 · Жалоба 15 hours ago, EdgeAligned said: Так это прямой угол кипит при 100° в военное время 🙂 А вот если -1 разделить на 2 и прибавить +0,5, то получится... А что за калькулятор у Вас такой интересный? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 83 1 августа, 2023 Опубликовано 1 августа, 2023 · Жалоба Дак он практически у каждого есть, кто пользуется виндой. Это стандартный калькулятор, установленный в Win10 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sayya_78 3 1 августа, 2023 Опубликовано 1 августа, 2023 · Жалоба 4 minutes ago, EdgeAligned said: Дак он практически у каждого есть, кто пользуется виндой. Это стандартный калькулятор, установленный в Win10 Ясно, в 7рке старый простой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MPetrovich 6 1 августа, 2023 Опубликовано 1 августа, 2023 · Жалоба Я тут решил заставить МК ATMega128 считать мне таблицы синусов. Ага, разбежался))) После 15 минут ожидания завершения расчётов понял, что погорячился. Пришлось в EXEL делать таблицы и копировать в программу. Вот гемор то неожиданно! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 83 1 августа, 2023 Опубликовано 1 августа, 2023 · Жалоба Либо ваша АТМега работала на 32 кГц, либо таблица синусов на 8 тыс.точек 🙂 В принципе, в самом минимальном варианте достаточно 1/4 периода (0° - 90°), остальное отражается зеркально по оси X и по оси Y. И внутри этого сектора можно взять от 8 до 32 отсчетов. Получается компактно. Да, и вы можете просто забить табличку в эксель и перекопировать значения для инициализации константного массива, так тоже можно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MPetrovich 6 1 августа, 2023 Опубликовано 1 августа, 2023 · Жалоба Кстати, хочу узнать кто как управляет изменением периода синусоиды. Я пока просто 3 фазы на трёх выводах ОС1А, ОС1В и ОС1С получаю без управления периодом. ШИМ настроен на таймере1 8 бит не инвертированный. Значение DutyCycle устанавливаю в прерывании по переполнению таймера. Есть, на мой взгляд, такие варианты: изменять частоту ШИМ (что мне бы не хотелось); вставлять паузу; повторять значения DutyCycle. Может ещё какие варианты предложите? 7 minutes ago, EdgeAligned said: Либо ваша АТМега работала на 32 кГц, либо таблица синусов на 8 тыс.точек Тактовая частота 8МГц, а таблицы 3 шт по 256 точек. Я поставил признак окончания расчёта - гаснет светодиод. И этого я не дождался))) Вот код: void sincalc() { uint8_t i=0, iT=255; for(i=0; i<=iT; i++) //iT=255 { ifl=(((float)i)/iT ); F1 = sin(6.28*ifl) ; FI1[i] = (uint8_t)(256*(F1+1)/2); F2 = sin(6.28*ifl+(6.26/3)); FI2[i] = (uint8_t)(256*(F2+1)/2); F3 = sin(6.28*ifl -(6.26/3)); FI3[i] = (uint8_t)(256*(F3+1)/2); i++ ; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 83 1 августа, 2023 Опубликовано 1 августа, 2023 (изменено) · Жалоба Есть такой алгоритм, как DDS. Он используется в DDS-генераторах частоты. Правда, в этом случае таблица синуса должна быть достаточно большой, чтобы получить большой диапазон перестройки частоты. Изменено 1 августа, 2023 пользователем EdgeAligned Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MPetrovich 6 1 августа, 2023 Опубликовано 1 августа, 2023 · Жалоба 3 minutes ago, EdgeAligned said: И не дождетесь! uint8_t i=0, iT=255; А что не так то? 8-битное число без знака от 0 до 255. Если бы 256 было, тогда понятно. Вот в конце цикла лишнее i++; затесалось, но это не делает цикл бесконечным... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 1 августа, 2023 Опубликовано 1 августа, 2023 · Жалоба 21 минуту назад, EdgeAligned сказал: В принципе, в самом минимальном варианте достаточно 1/4 периода 1/8 периода Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 83 1 августа, 2023 Опубликовано 1 августа, 2023 · Жалоба Сорян, не так посмотрел, думал что это в цикле uint8_t. Заметил, убрал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 1 августа, 2023 Опубликовано 1 августа, 2023 · Жалоба 19 минут назад, MPetrovich сказал: Может ещё какие варианты предложите? Прямой цифровой синтез (DDS) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 83 1 августа, 2023 Опубликовано 1 августа, 2023 · Жалоба Только что, Сергей Борщ сказал: 1/8 периода Эммм... 360°/4 = 90°, вроде бы так. Сейчас на калькуляторе проверю на всякий случай 🙂 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться