Юрий_48 Опубликовано 20 февраля, 2019 Поделиться Опубликовано 20 февраля, 2019 (изменено) STM32F103. Допустим работаем с таймером 2. В какой то момент надо изменить значения предделителя, автоперезагрузки и уровней компарирования в двух первых каналах. При чём так, чтобы при его новом старте он был как "новорождённый". Т.е. счётчики предделителя , основного счётчика и ещё чего там были равны нулю, как при старте камня. Менять то я меняю, но таймер стартует с произвольного состояния счётчиков. Какие действия я вижу для решения этой проблемы. 1. Остановить таймер. 2. Прописать в таймер все необходимые параметры, включая исходные состояния выходов. 3. Обнулить счётчики таймеров. 4. Запустить таймер. 5. Может ещё чего, что упустил. Наиболее актуальные вопросы: 1. Как правильно остановить таймер? Имеется ввиду останов счёта как основного счётчика, так и предделителя. 2. соответственно как потом "оживить" таймер так, чтобы оба канала начали работать одновременно? Работаю с Кубом и недавно, поэтому желательно увидеть примеры халовскими функциями. Изменено 20 февраля, 2019 пользователем Юрий_48 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
mail_robot Опубликовано 21 февраля, 2019 Поделиться Опубликовано 21 февраля, 2019 ну раз хал нужен, то для начала надо скачать мануал по халу официальный. Там есть раздел HAL_TIM. А там уже прописаны все функции для этого дела и порядок их использования Если качать и читать лень и ты владеешь нормально языком С, то открываешь исходники библиотеки на тему таймера и смотришь там макроопределения и функции. Там все русским языком практически написано с комментами остановить таймер ты сможешь, сделать флуш регистра счетчика сможешь, установить предделители и переинитить тоже, ну и запустить заново. И будет он как с нуля чист и свеж 1 Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
Юрий_48 Опубликовано 21 февраля, 2019 Автор Поделиться Опубликовано 21 февраля, 2019 12 часа назад, mail_robot сказал: Если качать и читать лень и ты владеешь нормально языком С, то открываешь исходники библиотеки на тему таймера и смотришь там макроопределения и функции. Там все русским языком практически написано с комментами Языком С как и английским владею не нормально. Хотя программировал много, но не языками инструкций. Уже не раз пробежался по разделам таймеров, кое чего попробовал, но положительного результата пока не добился. Надеюсь, что не отпугну знающих людей, если скажу, что цель у меня не изучить детально язык или микропроцессор, а поставить интересующий меня эксперимент. Поэтому для меня было бы бальзамом на сердце, если бы советы были в виде конкретных строчек кода. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
ruhi Опубликовано 22 февраля, 2019 Поделиться Опубликовано 22 февраля, 2019 В 20.02.2019 в 22:45, Юрий_48 сказал: Наиболее актуальные вопросы: 1. Как правильно остановить таймер? Имеется ввиду останов счёта как основного счётчика, так и предделителя. 2. соответственно как потом "оживить" таймер так, чтобы оба канала начали работать одновременно? Это беЗполезно спрашивать! надо самому писать инициализацию регистров и смотреть что получается в симуляторе! найди симулятор в котором видно как значения счетчиков таймера меняется по тикам процессора (от времени в тиках) в зависимости от значения в регистрах! Бесполезно читать всякие ХАЛы, если ты не понимаешь принцип работы таймера! - они предполагают знание этого принципа (знание цифровой схемотехники: тригеры, И, ИЛИ, НЕ,...) 0 Можно сделать все! Но чем больше можно, тем больше нельзя! Ссылка на комментарий Поделиться на другие сайты Поделиться
Юрий_48 Опубликовано 22 февраля, 2019 Автор Поделиться Опубликовано 22 февраля, 2019 (изменено) 8 часов назад, ruhi сказал: Это беЗполезно спрашивать! надо самому писать инициализацию регистров и смотреть что получается в симуляторе! найди симулятор в котором видно как значения счетчиков таймера меняется по тикам процессора (от времени в тиках) в зависимости от значения в регистрах! Правильно ли я воспринимаю эту фразу, как то, что никто этот путь ещё не проходил? Поверьте, что это сказано без ехидства. Т.е. на этом форуме мне никто обстоятельно не ответит на мои вопросы и надо смириться с мыслью о выделении для себя приличного времени для его изучения. 8 часов назад, ruhi сказал: Бесполезно читать всякие ХАЛы, если ты не понимаешь принцип работы таймера! - они предполагают знание этого принципа (знание цифровой схемотехники: тригеры, И, ИЛИ, НЕ,...) Совершенно верно. Только со всей этой схемотехникой я знаком уже не менее 30 лет. И с таймерами для этого камня более менее разобрался. По названию ХАЛовской функции трудно однозначно воспринять, что же она может, а изучать их свойства по самому коду - это сколько же время надо угрохать. Тем более, если учесть, что по причине своей богатой фантазии я, как правило, для выяснения всех обстоятельств и своих вопросов прохожу значительно больший путь, чем на самом деле нужен, может, и не оправдано, но такой уж я . Понятно, что, если в таком духе будет продолжаться тема, то волей не волей придётся тратить время на изучение второстепенных для меня вопросов, а жаль - время то хотел сократить. Изменено 22 февраля, 2019 пользователем Юрий_48 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterElectric Опубликовано 22 февраля, 2019 Поделиться Опубликовано 22 февраля, 2019 А что гугл совсем не может помочь? Про таймеры рассказали уже во многих статьях. Или вам нужен готовый код? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
AVI-crak Home Опубликовано 23 февраля, 2019 Поделиться Опубликовано 23 февраля, 2019 8 часов назад, Юрий_48 сказал: Правильно ли я воспринимаю эту фразу, как то, что никто этот путь ещё не проходил? Ну если рассматривать вопрос с остановкой таймера - то да, так просто не делают. Его либо запускают на разовое исполнение, либо на цикл. Остановить в процессе - это всегда лотерея. Таймер может управлять дма, однократной и множественной записью. Для однократной записи ничего трогать не нужно, она и так сработает. А для многократной придётся настраивать базисный адрес, смещение, и количество тиков дма на одно событие таймера. Причём смещение может быть очень жирным, например сразу на несколько разных периферийных узлов. Можно натравить на запись кучи регистров самого таймера - запретов нет, но тупиковых вариантов целая куча. У таймера есть теневые регистры предварительной загрузки. То-есть при записи значения - оно попадает в теневой регистр, и только при активном событии - происходит обновление. И ещё, 30 лет назад таймеры были очень простыми в обращении, с минимальным количество возможностей. А сейчас это почти комбайн. По этому читать доку на чип обязательно. http://www.unirail.org/wp-content/uploads/2016/04/STM_TIMERS.pdf https://arm-stm.blogspot.com/2016/01/stm32f-timer-diagramm.html 1 RtoS Ссылка на комментарий Поделиться на другие сайты Поделиться
mail_robot Опубликовано 23 февраля, 2019 Поделиться Опубликовано 23 февраля, 2019 (изменено) 10 hours ago, Юрий_48 said: время то хотел сократить по моему ты просто хотел взять чужое время вместо своего, чтобы ктото добрый в порыве чувств взял и написал все за тебя. Причем в формате принесито не знаю что. На форуме тебе дадут совет. Помогут скорректировать готовый код. Подкинут идею. Но писать за тебя и учить тебя читать доку никто не будет. Тут не один ты такой мудрый Задачу такого рода я лично решал. Причем ушло на это минут 15 времени. В какой пачке кода она осталась я уже не вспомню, но точно помню визуально обьем кода - 6 строчек на весь перезапуск таймера с новым периодом (причем на SPL). Так что из мухи слона то не выдувай. Ты просто еще вообще ничего не делал. Лентяй Изменено 23 февраля, 2019 пользователем mail_robot 1 Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух Ссылка на комментарий Поделиться на другие сайты Поделиться
snn_krs Опубликовано 23 февраля, 2019 Поделиться Опубликовано 23 февраля, 2019 Есть такой регистр RCC_APB1RSTR, а в нем бит TIM2RST установите его в 1 и все регистры таймера2 сбросятся, как при включении питания. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Юрий_48 Опубликовано 24 февраля, 2019 Автор Поделиться Опубликовано 24 февраля, 2019 В 23.02.2019 в 03:30, AVI-crak Home сказал: http://www.unirail.org/wp-content/uploads/2016/04/STM_TIMERS.pdf https://arm-stm.blogspot.com/2016/01/stm32f-timer-diagramm.html Спасибо. Таких красочных картинок таймеров ещё не видел В 23.02.2019 в 05:05, mail_robot сказал: Задачу такого рода я лично решал. Причем ушло на это минут 15 времени. В какой пачке кода она осталась я уже не вспомню, но точно помню визуально обьем кода - 6 строчек на весь перезапуск таймера с новым периодом (причем на SPL). Так что из мухи слона то не выдувай. Ты просто еще вообще ничего не делал. Лентяй Ну, что ж, называйте и раздавайте ярлыки как хотите. Но, может, не поленитесь и найдёте те 6 строчек, на которые Вы уже потратили 15 митнут не моего а своего времени. Если они дорого стоят, то не надо. В 23.02.2019 в 11:46, snn_krs сказал: Есть такой регистр RCC_APB1RSTR, а в нем бит TIM2RST установите его в 1 и все регистры таймера2 сбросятся, как при включении питания. Спасибо. Пробовал работать с битом UG в регистре EGR, но результата не дало. Попробую ваш совет. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Юрий_48 Опубликовано 24 февраля, 2019 Автор Поделиться Опубликовано 24 февраля, 2019 В 23.02.2019 в 11:46, snn_krs сказал: Есть такой регистр RCC_APB1RSTR, а в нем бит TIM2RST установите его в 1 и все регистры таймера2 сбросятся, как при включении питания. Что то сразу не въехал. Это ничего не даст. Мне то нужно не обнулить регистры, а, поскольку важны фазовые соотношения, нужно запустить два канала одного таймера одновременно с заданными делителями и компараторами. Да и счётчик DMA что бы стартовал с нуля. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterElectric Опубликовано 24 февраля, 2019 Поделиться Опубликовано 24 февраля, 2019 И что спустя 5 дней вы не нашли код? Странно. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Юрий_48 Опубликовано 24 февраля, 2019 Автор Поделиться Опубликовано 24 февраля, 2019 16 минут назад, MasterElectric сказал: И что спустя 5 дней вы не нашли код? Странно. И мне не только странно, но и печально. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
mail_robot Опубликовано 24 февраля, 2019 Поделиться Опубликовано 24 февраля, 2019 мне тоже очень и очень печально.... соболезную 0 Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterElectric Опубликовано 25 февраля, 2019 Поделиться Опубликовано 25 февраля, 2019 Я бы и помог, но я абсолютно ничего не понимаю в HAL. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Юрий_48 Опубликовано 25 февраля, 2019 Автор Поделиться Опубликовано 25 февраля, 2019 8 часов назад, MasterElectric сказал: Я бы и помог, но я абсолютно ничего не понимаю в HAL. Спасибо, как то слегка отлегло на душе - что то человеческое звучит в ваших словах. Сейчас покувыркаюсь немного, кажется нашёл зацепку. И, если что, то буду мучить дальше. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterElectric Опубликовано 25 февраля, 2019 Поделиться Опубликовано 25 февраля, 2019 @Юрий_48 Расскажите в подробностях что вам надо от таймера, вы его просто не трогайте в ХАЛ, могу помочь на CMSIS, дискавери у меня есть 407. Не могу спокойно на это смотреть уже неделя прошла. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Юрий_48 Опубликовано 25 февраля, 2019 Автор Поделиться Опубликовано 25 февраля, 2019 (изменено) Хорошо. Диаграмма нарисована для конкретного сигнала. На самом деле для эксперимента необходимо программно менять частоту F опроса АЦП с помощью ПП2 и АП2, задержку Фацп с помощью УК2.1 и УК2.2 и количество точек n на четверть периода с помощью ПП3 Вот правильный сигнал. Ещё приемлемый, но не желательный. Фаза сдвинута на 180 градусов Не приемлемый До сегодняшнего дня при смене параметров таймеров фаза сигнала получалась произвольной, как на последнем графике. Сегодня научился обнулять счётчик DMA. Это три предпоследних строчки кода. Считаю, что ситуация довольно радикально изменилась - в фазу стал попадать со значением 0 или 180 тоже произвольно. Очень редко фронт на одну точку смещается, что не допустимо (см. график внизу). Поигрался последовательностью действий, но безрезультатно. Функции Moi_TIM2_Init() и Moi_TIM3_Init() это переименованные функции инициализации таймеров генерированные Кубом, где числовые значения предделителей, автоперезагрузки и уровней компарирования мной заменены на переменные. Это работает. Пробовал уже много чего, всё не упомнишь. void Init_TIM (void) { RCC->APB1ENR &= ~RCC_APB1ENR_TIM2EN; // Выключить тактирование на TIM2 DMA1_Channel1->CCR &= ~DMA_CCR_EN; // Выключение канала1 DMA1 MX_DMA_Init(); Moi_TIM2_Init(); // Moi_TIM3_Init(); MX_ADC1_Init(); TIM3->EGR |= TIM_EGR_UG; // Обновление таймера 3 TIM2->EGR |= TIM_EGR_UG; // Обновление таймера 2 if (HAL_ADC_Start_DMA(&hadc1, (uint32_t *)aADCConvertedValues, ADCCONVERTEDVALUES_BUFFER_SIZE ) != HAL_OK) { // Start Error Error_Handler(); } HAL_TIM_OC_Start_IT(&htim3,TIM_CHANNEL_1); HAL_TIM_OC_Start_IT(&htim3,TIM_CHANNEL_2); HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1); HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2); DMA1_Channel1->CCR &= ~DMA_CCR_EN; // Выключение канала1 DMA1 DMA1_Channel1->CNDTR = ADCCONVERTEDVALUES_BUFFER_SIZE; // Запись в счётчик DMA значение буфера DMA1_Channel1->CCR |= DMA_CCR_EN; // Включение канала1 DMA1 RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; // Включить тактирование на TIM2 } Изменено 25 февраля, 2019 пользователем Юрий_48 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
AVI-crak Home Опубликовано 26 февраля, 2019 Поделиться Опубликовано 26 февраля, 2019 Ну теперь хотя-бы понятно как оно должно на выхлопе выглядеть. Насколько я верно понял - нужен статичный сдвиг на 90 градусов, при этом частота должна зависеть от "показаний" ацп... Во первых - ацп и таймер это два разных клока, синхронными они никогда не будут. Значит нужен промежуточный буфер в виде переменной в памяти мк. Ацп туда будет постоянно писать своё значение, а таймер - читать. Фазы не совпадут 100%, но ошибок не будет. Второе - насиловать кучу таймеров совершенно не обязательно, достаточно одного. Но на него нужно натравить сразу два дма: по переполнению - чтение нового значения в регистр счётчика, и по линии сравнения - на прямую запись в регистр BSRR выбранного порта. Первое дма - режим цикл: 1 отчёт. Второе дма: режим цикл - 4 отчёта. Регистр BSRR позволяет менять состояние произвольного количества битов выбранного порта, не затрагивая остальные. Причём приоритет имеет установка лог нуля. 0 RtoS Ссылка на комментарий Поделиться на другие сайты Поделиться
ruhi Опубликовано 26 февраля, 2019 Поделиться Опубликовано 26 февраля, 2019 10 часов назад, Юрий_48 сказал: Диаграмма нарисована для конкретного сигнала. На самом деле для эксперимента необходимо программно менять частоту F опроса АЦП с помощью ПП2 и АП2, задержку Фацп с помощью УК2.1 и УК2.2 и количество точек n на четверть периода с помощью ПП3 Тут вообще ничего НЕ понятно! И похоже вы сами не понимаете что вы хотите! В чем заключается эксперимент??? Что вы хотите увидеть, какой сигнал вы хотите оцифровать, какие у него диапазоны параметров? При чем тут синхронизация с таймерами?... Это просто какое-то абстрактное нагромождение букв, стрелок и квадратиков, пока ! Соответственно задача НЕ сформулирована, и, соответственно, не может быть решена - решать пока еще нечего! 0 Можно сделать все! Но чем больше можно, тем больше нельзя! Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterElectric Опубликовано 26 февраля, 2019 Поделиться Опубликовано 26 февраля, 2019 (изменено) Да нет достаточно 1 таймера самого простого и запрос на ДМА по переполнению, а там в цикле выводить сигнал на те же порты. Четыре периода таймера = 1 период требуемого сигнала. По переполнению еще и прерывание, там мы неспешно можем пенять период таймера потому как он буферизованый (ну и программный счетчик на 4). Таким образом выхлоп будет аппаратным и стабильным. Обычным ШИМ я не знаю как такое выдать можно, ладно если на 180° сдвиг. Еще это сильно похоже на задание в универе. Изменено 26 февраля, 2019 пользователем MasterElectric 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Юрий_48 Опубликовано 26 февраля, 2019 Автор Поделиться Опубликовано 26 февраля, 2019 2 часа назад, AVI-crak Home сказал: Ну теперь хотя-бы понятно как оно должно на выхлопе выглядеть. Насколько я верно понял - нужен статичный сдвиг на 90 градусов, при этом частота должна зависеть от "показаний" ацп... Во первых - ацп и таймер это два разных клока, синхронными они никогда не будут. Значит нужен промежуточный буфер в виде переменной в памяти мк. Ацп туда будет постоянно писать своё значение, а таймер - читать. Фазы не совпадут 100%, но ошибок не будет. Есть такое понятие - квадратурный сигнал. Он состоит как минимум из двух периодических сигналов, сдвинутых друг относительно друга на четверть периода. Так вот модулятор и является генератором квадратурного сигнала. Выход, который на диаграмме, обозначен, как запуск АЦП и запускает постоянно преобразование АЦП. А оно, в свою очередь, по ДМА записывает значения в его буфер. Вот, собственно, и синхронизация. 2 часа назад, ruhi сказал: Это просто какое-то абстрактное нагромождение букв, стрелок и квадратиков, пока ! Соответственно задача НЕ сформулирована, и, соответственно, не может быть решена - решать пока еще нечего! Обработка сигнала ведётся с помощью синхронной фильтрации. Если вам это что то говорит, то сами можете додумать какое нагромаждение букв, стрелок и квадратиков должно быть что бы его осуществить аппаратным образом. Боюсь, что у вас получится что то близкое или ещё более нагромаждённое. До встречи в эфире. 1 час назад, MasterElectric сказал: Да нет достаточно 1 таймера самого простого и запрос на ДМА по переполнению, а там в цикле выводить сигнал на те же порты. Четыре периода таймера = 1 период требуемого сигнала. По переполнению еще и прерывание, там мы неспешно можем пенять период таймера потому как он буферизованый (ну и программный счетчик на 4). Таким образом выхлоп будет аппаратным и стабильным. Обычным ШИМ я не знаю как такое выдать можно, ладно если на 180° сдвиг. Еще это сильно похоже на задание в универе. MasterElectric, с ходу не смог врубиться, что вы предлагаете. Вечерком попробую осмыслить. А на счёт задания в университете звучит довольно смешно (по хорошему), поскольку обратите внимание на моё имя - ни на какие мысли не наводит число 48? Если предположить, что это задание преподавателя студентам или аспирантам, то я и близко не стоял к преподавательской деятельности. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterElectric Опубликовано 26 февраля, 2019 Поделиться Опубликовано 26 февраля, 2019 (изменено) @Юрий_48 Еще вопрос этот квадратурный сигнал нужно выводить на ноги МК или это для внутренних целей логики, я вот не понял. То что я предложил касаеться пока только генерации квадратурного сигнала и изменения периода. Остальное нужно еще осмыслить и потом прикрутить к таймеру. Кстати такая генерация это как раз похоже на это: http://progcortex.mybb.ru/viewtopic.php?id=6 вариант №4 Изменено 26 февраля, 2019 пользователем MasterElectric 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
ruhi Опубликовано 26 февраля, 2019 Поделиться Опубликовано 26 февраля, 2019 (изменено) 47 минут назад, Юрий_48 сказал: Есть такое понятие - квадратурный сигнал. Он состоит как минимум из двух периодических сигналов, сдвинутых друг относительно друга на четверть периода. Почему же периодических то??? Четверть периода ЧЕГО??? Ужас!!! Я смотрю вы готовитесь изучать преобразование Гильберта это похвально, но начать лучше с преобразований Фурье и Лапласа. Потом генерация предполагает ЦАП, а у вас почему то только АЦП, вот здесь для меня (по крайней мере) что то не сходится, тоже. 51 минуту назад, Юрий_48 сказал: Обработка сигнала ведётся с помощью синхронной фильтрации. А-да, конечно, вот оно новое слово в радиотехнике! Только тот кто рассуждает о фильтрации всегда может сказать что и из чего он фильтрует, для этого опять же надо изучать преобразования Фурье и Лапласа. Изменено 26 февраля, 2019 пользователем ruhi 0 Можно сделать все! Но чем больше можно, тем больше нельзя! Ссылка на комментарий Поделиться на другие сайты Поделиться
Юрий_48 Опубликовано 26 февраля, 2019 Автор Поделиться Опубликовано 26 февраля, 2019 30 минут назад, MasterElectric сказал: @Юрий_48 Еще вопрос этот квадратурный сигнал нужно выводить на ноги МК или это для внутренних целей логики, я вот не понял. То что я предложил касаеться пока только генерации квадратурного сигнала и изменения периода. Остальное нужно еще осмыслить и потом прикрутить к таймеру. Кстати такая генерация это как раз похоже на это: http://progcortex.mybb.ru/viewtopic.php?id=6 вариант №4 Этой задаче могу уделять время только вечером пару-тройку часов. А сейчас зашёл только для того, чтобы извинится, поскольку понял, что надо было изначально сказать, что квадратурный сигнал требуется для воздействия на исследуемый объект. Т.е. он выводится на ножки камня. А предварительная обработка реакции объекта (АЦП) ведётся с помощью синхронной фильтрации, Потому то необходима вся эта бадяга с синхронизацией тактирования АЦП относительно квадратурного сигнала и синхронизацией начала записи в буфер ДМА опять же относительно квадратурного сигнала (передний фронт канала А). Что касается самого квадратурного сигнала, то по большому счёту он может быть любой формы лишь бы был периодический и сдвинут на четверть периода. Классический пример квадратурного сигнала это синусно косинусный сигнал. Вообще в своих исследованиях я предполагаю этап работы и с сигналом произвольной формы, но дойдёт ли до этого дело что то сильно сомневаюсь. А сейчас вполне достаточен меандр. Для отладки всей этой синхронизации в качестве модели объекта беру простой потенциометр - движок подключается к входу АЦП, а две остальные ножки к каналу А и Б квадратурного сигнала. Если надо проект, то могу выложить. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.