👍Чтобы выходной сигнал не искажался около нуля, необходимо отключить встроенный буфер. Для тестов на осциллограф можно напрямую, а в схемах имеет смысл поставить внешний буфер на ОУ с двуполярным питанием. Где-то на середине синуса наблюдается странный излом, да и в целом похоже, что форма искажена. Я бы использовал внешнюю табличную генерацию точек. Должно быть все красиво.
@NRelectronics2 жыл бұрын
Возможно действительно встроенный буфер сделал своё дело. Форма норм, а на середине есть небольшой действительно переход.
@ElliottGrosvenor2 жыл бұрын
Я тоже не понял, зачем в цикле все точки пересчитывать снова и снова.
@NRelectronics2 жыл бұрын
Ну вы даёте. Чтобы синус был непрерывный во времени.
@NRelectronics2 жыл бұрын
Проверил с выключенным все же буфером, излом сохранился, дело точно не в нем. Буфер как бы и не должен влиять на форму, на то он и буфер...
@oldbrowze36782 жыл бұрын
@@NRelectronics имеется ввиду, что достаточно один раз создать массив значений, а уже в цикле подставлять из массива
@Сергеймиролюбов-э6г2 жыл бұрын
Благодарю за информацию, интерестно
@NRelectronics2 жыл бұрын
Пожалуйста, заходите ещё.
@ewfreg5nythyhtewt4w8 ай бұрын
число PI чуть чуть неточное в коде :D
@NRelectronics8 ай бұрын
Чуть чуть можно 😀👍
@makhsumbairamov939 Жыл бұрын
можете обьяснить как вы код подключили в синусу в этой программе amcap
@NRelectronics Жыл бұрын
Не совсем понял вопрос. Как я подключил синус или программу amcap?
@antonGoldinov Жыл бұрын
Как Вы это все поняли) моё увожения
@NRelectronics Жыл бұрын
Сам до сих пор не понимаю как я это понял)) спасибо Вам!
@toshibamaster22103 ай бұрын
как сделать синусоиду симетричную относительно нуля и чтобы во время инициализации котролера не было выброса ?
@NRelectronics3 ай бұрын
Запрограммировать)
@toshibamaster22103 ай бұрын
@@NRelectronics цап и шим однополярные если делать смещение 3.3 / 2 на буферном ОУ то до инициализации МК выходное напряжение уйдет в минус. при чем зесь программирование ??
@NRelectronics3 ай бұрын
Программирование всегда необходимо. В минус не уйдет при одноподярном питании. Значит синус схемотехникой надо "смещать" вниз.
@denisgluk431 Жыл бұрын
Давно хочу, если руки дойдут, ЖКИ индикатор попробовать через эту штуку подключить, там какой-то хитрый аналоговый сигнал для управления надо.. Бывает конечно встроенный контроль, но это для больших индикаторов и сам контроллер километрового размера надо брать...
@NRelectronics Жыл бұрын
Даведите руки до этого.
@kalobyte2 жыл бұрын
не совсем понял, зачем ты создал массив sine_value, если ты только одно значение там храниш и оно у тебя выводится сразу же в цап
@NRelectronics2 жыл бұрын
Это с первого примера остаток, когда просто числа были.
@Mishukan404 Жыл бұрын
Не получается получить контролируемые значения частоты синуса через прерывания TIM6_DAC_IRQHandler(). :( Хотябы 1 МГц. Юзаю G431.Запихиваю в обработчик функцию HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_1, DAC_ALIGN_12B_R, sin_table[i++]); само собой обнуляя i при достижении 256. i берется из табличных значений, что быстрее чем по формуле. Все равно в лучшем случае какие-то жалкие сотни герц. Счет TIM6 до 1, прескейлер 0. Частота мк 150МГц. Не ужели изза тормознутости функции? или я туплю?
@NRelectronics Жыл бұрын
возможна где-то ошибка у вас, ибо звук выводят довольно не убого качества. По таблице да, быстрее выводить.
@Mishukan404 Жыл бұрын
@@NRelectronics Да понять бы где :( Голоу уже сломал :( Вот содержимое обработчика и настройки таймера. Вроде всё правильно. А на выходе имею 1.7 кГц при частоте мк 150мГц. Массив со значениями sin_table взял из комментов ниже void TIM6_DAC_IRQHandler(void) { HAL_TIM_IRQHandler(&htim6); HAL_DAC_IRQHandler(&hdac1); static uint32_t i = 0; HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_1, DAC_ALIGN_12B_R, sin_table[i++]); if (i > 255) i = 0; } htim6.Instance = TIM6; htim6.Init.Prescaler = 0; htim6.Init.CounterMode = TIM_COUNTERMODE_UP; htim6.Init.Period = 1; htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
@NRelectronics Жыл бұрын
В обработчике не вижу что отсутствует сброс какого либо флага по попаданию в него. Это общий момент работы обработчиков.
@odissey24 ай бұрын
Синус,однако, получился весьма условный. В чём причина? Ведь DAC весьма неплохой.
@NRelectronics4 ай бұрын
мало точек видимо ...
@odissey24 ай бұрын
@@NRelectronics для 256 точек странная форма. Может нужен выходной буффер?
@NRelectronics4 ай бұрын
думаю нет, не перегружен выход
@alex225559 Жыл бұрын
Как то стнус больше на треугольник похож со скруглёнными вершинами
@NRelectronics Жыл бұрын
Так и получается синус))
@alex225559 Жыл бұрын
@@NRelectronics я часто вижу синус/косинус с преобразователей , как то немного по другому выглядит , или в STM линейность DAC не совсем линейная .
@by0uki Жыл бұрын
@@alex225559как будто цикл отрабатывает напрямую без таймера, и синус кривой из-за того что расчет разных значений синуса происходит за разное количество тактов
@marina1635010 ай бұрын
Для второго примера синтеза синуса по 256 отсчетам через 12р DAC. Сначала в инициализационной части, перед вечным циклом должна быть рассчитана таблица отсчетов sin_value[256] по правильной формуле: for (unsigned int i=0; i
@IgorChudakov Жыл бұрын
0xFFF != 4096 😏
@NRelectronics Жыл бұрын
Где такое, было? Допускаю что оговорка, подскажите где?