p_v 0 18 октября, 2021 Опубликовано 18 октября, 2021 · Жалоба STM32G030F6. Нужен одноканальный PWM, и чтобы после фронта, с задержкой в десяток микросекунд, запускался ADC, сканируя несколько каналов. Выливать ADC непрерывно через DMA я умею. Но тут надо чтобы он не сам гонял, а синхронно с PWM и небольшой задержкой после открытия ключа. Подскажите, как это лучше устроить. Если можно - сразу через CubeMX. Ну или на словах, какие таймеры как между собой стыковать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 18 октября, 2021 Опубликовано 18 октября, 2021 · Жалоба 25 минут назад, p_v сказал: Подскажите, как это лучше устроить. Можно взять что-то из XMC4xxx. Там это всё есть: разные сложные варианты синхронизации периферии между собой аппаратными сигналами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 18 октября, 2021 Опубликовано 18 октября, 2021 · Жалоба 3 minutes ago, jcxz said: Там это всё есть Без Azure нещитово, я так думаю :) 31 minutes ago, p_v said: Ну или на словах, какие таймеры как между собой стыковать. В мануале смотрите доступные триггеры АЦП, выбираете подходящий таймер для формирования "задержки в десяток мкс", его запускаете от своего ШИМ'а. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
p_v 0 18 октября, 2021 Опубликовано 18 октября, 2021 · Жалоба 6 minutes ago, aaarrr said: В мануале смотрите доступные триггеры АЦП, выбираете подходящий таймер для формирования "задержки в десяток мкс", его запускаете от своего ШИМ'а. Я в кубе смотрю. Там есть "Timer 3 trigger out event" "Timer 1 trigger out event 2" "Timer 1 capture compare 4 event" Не совсем понял два момента: Как таймер PWM заставить генерить trigger out event по фронту (и что номера в списке выше означают) Как таймер "задержки" заставить автоматически "перевзводиться" и ждать следующего события. Сорри за странные вопросы, просто ни разу так не конфигурировал периферию. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 18 октября, 2021 Опубликовано 18 октября, 2021 · Жалоба Самое простое настроить запуск по TRG1=TIM1_CC4. Канал 4 таймера 1 программируете на заданную задержку, а ШИМ получаете с помощью оставшихся каналов. Цитата Bits 6:4 MMS[2:0]: Master mode selection These bits allow selected information to be sent in master mode to slave timers for synchronization (TRGO). The combination is as follows: 000: Reset - the UG bit from the TIMx_EGR register is used as trigger output (TRGO). If the reset is generated by the trigger input (slave mode controller configured in reset mode) then the signal on TRGO is delayed compared to the actual reset. 001: Enable - the Counter Enable signal CNT_EN is used as trigger output (TRGO). It is useful to start several timers at the same time or to control a window in which a slave timer is enable. The Counter Enable signal is generated by a logic AND between CEN control bit and the trigger input when configured in gated mode. When the Counter Enable signal is controlled by the trigger input, there is a delay on TRGO, except if the master/slave mode is selected (see the MSM bit description in TIMx_SMCR register). 010: Update - The update event is selected as trigger output (TRGO). For instance a master timer can then be used as a prescaler for a slave timer. 011: Compare Pulse - The trigger output send a positive pulse when the CC1IF flag is to be set (even if it was already high), as soon as a capture or a compare match occurred. (TRGO). 100: Compare - OC1REFC signal is used as trigger output (TRGO) 101: Compare - OC2REFC signal is used as trigger output (TRGO) 110: Compare - OC3REFC signal is used as trigger output (TRGO) 111: Compare - OC4REFC signal is used as trigger output (TRGO) Note: The clock of the slave timer or ADC must be enabled prior to receive events from the master timer, and must not be changed on-the-fly while triggers are received from the Bits 23:20 MMS2[3:0]: Master mode selection 2 These bits allow the information to be sent to ADC for synchronization (TRGO2) to be selected. The combination is as follows: 0000: Reset - the UG bit from the TIMx_EGR register is used as trigger output (TRGO2). If the reset is generated by the trigger input (slave mode controller configured in reset mode), the signal on TRGO2 is delayed compared to the actual reset. 0001: Enable - the Counter Enable signal CNT_EN is used as trigger output (TRGO2). It is useful to start several timers at the same time or to control a window in which a slave timer is enabled. The Counter Enable signal is generated by a logic AND between the CEN control bit and the trigger input when configured in Gated mode. When the Counter Enable signal is controlled by the trigger input, there is a delay on TRGO2, except if the Master/Slave mode is selected (see the MSM bit description in TIMx_SMCR register). 0010: Update - the update event is selected as trigger output (TRGO2). For instance, a master timer can then be used as a prescaler for a slave timer. 0011: Compare pulse - the trigger output sends a positive pulse when the CC1IF flag is to be set (even if it was already high), as soon as a capture or compare match occurs (TRGO2). 0100: Compare - OC1REFC signal is used as trigger output (TRGO2) 0101: Compare - OC2REFC signal is used as trigger output (TRGO2) 0110: Compare - OC3REFC signal is used as trigger output (TRGO2) 0111: Compare - OC4REFC signal is used as trigger output (TRGO2) 1000: Compare - OC5REFC signal is used as trigger output (TRGO2) 1001: Compare - OC6REFC signal is used as trigger output (TRGO2) 1010: Compare Pulse - OC4REFC rising or falling edges generate pulses on TRGO2 1011: Compare Pulse - OC6REFC rising or falling edges generate pulses on TRGO2 1100: Compare Pulse - OC4REFC or OC6REFC rising edges generate pulses on TRGO2 1101: Compare Pulse - OC4REFC rising or OC6REFC falling edges generate pulses on TRGO2 1110: Compare Pulse - OC5REFC or OC6REFC rising edges generate pulses on TRGO2 1111: Compare Pulse - OC5REFC rising or OC6REFC falling edges generate pulses on TRGO2 Note: The clock of the slave timer or ADC must be enabled prior to receive events from the master timer, and must not be changed on-the-fly while triggers are received from the master timer. Биты регистра TIM1_CR2. Можно задавать, что для данного таймера будет TRGO и TRGO2. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
p_v 0 18 октября, 2021 Опубликовано 18 октября, 2021 · Жалоба А, то есть, когда этот таймер будет генерить PWM на одном из каналов, то у него фронт начинается с нуля. И если на 4 канале "задержка", то она всегда будет одинаковая, какую бы я скважность не выбрал. Я правильно понял? И еще вопрос насчет оверсамплинга ADC. Эта опция "прозрачна" для внешнего наблюдателя? Если у меня запуск сканирования по триггеру, то ADC сам наберет нужное количество отсчетов оверсамплинга для каждого канала? Или будет по одному отсчету за каждый триггер собирать? Ни разу не пользовался этой фичей. Вроде общий смысл понятен, а нюансы не очень. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 18 октября, 2021 Опубликовано 18 октября, 2021 · Жалоба 16 минут назад, p_v сказал: А, то есть, когда этот таймер будет генерить PWM на одном из каналов, то у него фронт начинается с нуля. И если на 4 канале "задержка", то она всегда будет одинаковая, какую бы я скважность не выбрал. Задержка точно не будет зависеть от скважности, а будет зависеть только от значения в CCR4. Фронт может начинаться и от нуля и от точки сравнения: Цитата 0110: PWM mode 1 - In upcounting, channel 1 is active as long as TIMx_CNT<TIMx_CCR1 else inactive. In downcounting, channel 1 is inactive (OC1REF=‘0’) as long as TIMx_CNT>TIMx_CCR1 else active (OC1REF=’1’). 0111: PWM mode 2 - In upcounting, channel 1 is inactive as long as TIMx_CNT<TIMx_CCR1 else active. In downcounting, channel 1 is active as long as TIMx_CNT>TIMx_CCR1 else inactive. 16 минут назад, p_v сказал: И еще вопрос насчет оверсамплинга ADC. Эта опция "прозрачна" для внешнего наблюдателя? Если у меня запуск сканирования по триггеру, то ADC сам наберет нужное количество отсчетов оверсамплинга для каждого канала? Или будет по одному отсчету за каждый триггер собирать? Ни разу не пользовался этой фичей. Вроде общий смысл понятен, а нюансы не очень. С оверсемплингом не работал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Eddy_Em 1 18 октября, 2021 Опубликовано 18 октября, 2021 (изменено) · Жалоба Чтобы сделать оверсемплинг, нужно соответствующим образом настроить DMA. Я обычно в циклическом режиме работаю, собирая по 9 точек с каждого канала. А как нужно измерить, вычисляю медиану. В случае работы с триггером все будет точно так же, только DMA будет в однократном режиме пинать АЦП. А сам DMA включится по триггеру — другому таймеру, связанному с вашим и работающему в однократном режиме. P.S. "Куб" советую выкинуть и забыть об этой дряни! По RM и даташиту намного шустрей все можно сделать. И не убиваться, пытаясь понять хоть какую-то логику в дебрях "хала". Изменено 18 октября, 2021 пользователем Eddy_Em Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 134 18 октября, 2021 Опубликовано 18 октября, 2021 · Жалоба 27 минут назад, Eddy_Em сказал: Я обычно в циклическом режиме работаю, собирая по 9 точек с каждого канала. А как нужно измерить, вычисляю медиану. Речь про STM32G, у них передискретизация аппаратная. 29 минут назад, Eddy_Em сказал: об этой дряни! Модератор: Утомили, реально. Держите себя в рамках или премодерация сменится читательским билетом. 1 час назад, p_v сказал: И еще вопрос насчет оверсамплинга ADC. Эта опция "прозрачна" для внешнего наблюдателя? Первый же абзац описания передискретизатора (oversampler) в руководстве пользователя (user manual) отвечает на ваш вопрос. "Чтение документации из интернета вслух - 100 евро в час". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 19 октября, 2021 Опубликовано 19 октября, 2021 · Жалоба 13 hours ago, aaarrr said: Без Azure нещитово, я так думаю :) OFF: куда делся @AlexandrY? Он просто ушёл с форума? Вообще, если так, то жаль. Человек с неординарным мышлением! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 19 октября, 2021 Опубликовано 19 октября, 2021 · Жалоба 8 часов назад, haker_fox сказал: OFF: куда делся @AlexandrY? Он просто ушёл с форума? Вообще, если так, то жаль. Человек с неординарным мышлением! Думаю - заключает следующий рекламный контракт с новым производителем чипов. И скоро мы услышим хвалебные оды в их честь. Как ранее уже слышали про Кинетис, Ренесас, ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 19 октября, 2021 Опубликовано 19 октября, 2021 · Жалоба Привет всем. Стал редко заходить. Нет времени. Кризис видите-ли. Чипы на ходу пропадают из продажи. Кучу проектов надо переделывать на новые uC. А так, пиарюсь теперь на Хабре под ником Indemsys - https://habr.com/ru/users/Indemsys/posts/ Заходите, комментируйте, ставьте лайки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mov 3 19 октября, 2021 Опубликовано 19 октября, 2021 · Жалоба 13 minutes ago, AlexandrY said: Кучу проектов надо переделывать на новые uC. Не подскажите , на какие uC можно ориентироваться сейчас ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 19 октября, 2021 Опубликовано 19 октября, 2021 · Жалоба 26 minutes ago, AlexandrY said: Заходите, комментируйте, ставьте лайки. О, у Вас новые статьи на хабре! Почитаю! Рад, что Вы в порядке))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 19 октября, 2021 Опубликовано 19 октября, 2021 · Жалоба 35 минут назад, AlexandrY сказал: А так, пиарюсь теперь на Хабре "Развертывание Azure RTOS и USB стека на STM32H753" - ничего не меняется)))))))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться