Например TDA7294

Форум РадиоКот • Просмотр темы - STM32 каскадирование таймеров и одновременные прерывания
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Вт окт 27, 2020 21:06:35

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 17 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: STM32 каскадирование таймеров и одновременные прерывания
СообщениеДобавлено: Вт окт 13, 2020 14:16:22 
Родился

Зарегистрирован: Пт окт 29, 2010 15:26:32
Сообщений: 10
Рейтинг сообщения: 0
Добрый день! Кто подскажет, почему не запускается прерывание переполнения (т.е. не формируется событие переполнения) в режиме захвата. Из-за этого не получается запустить ведомый таймер или отработать прерывание переполнения. Измеритель частоты на 3 каскадах работает нормально. Пробовал различные комбинации с TIM1...TIM4. В режиме захвата, каждый таймер измеряет ШИМ нормально.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 каскадирование таймеров и одновременные прерывания
СообщениеДобавлено: Вт окт 13, 2020 16:43:22 
Друг Кота
Аватар пользователя

Карма: 104
Рейтинг сообщений: 1940
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 15678
Откуда: Московская область
Рейтинг сообщения: 0
Может стоит привести код инициализации таймера?


Вернуться наверх
 
JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: STM32 каскадирование таймеров и одновременные прерывания
СообщениеДобавлено: Вт окт 13, 2020 17:15:48 
Опытный кот
Аватар пользователя

Карма: 3
Рейтинг сообщений: 99
Зарегистрирован: Сб мар 09, 2013 11:29:22
Сообщений: 804
Откуда: 40RUS, Жуков
Рейтинг сообщения: 0
А чо, так не видно чтоли ? :)))

_________________
IVL ex UA6PJ OSC_F303&F103


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Шестое юбилейное мероприятие в процессе
Не в сети
 Заголовок сообщения: Re: STM32 каскадирование таймеров и одновременные прерывания
СообщениеДобавлено: Вт окт 13, 2020 17:55:47 
Родился

Зарегистрирован: Пт окт 29, 2010 15:26:32
Сообщений: 10
Рейтинг сообщения: 0
Период измеряет нормально.

;Инициалиафция TIM1:

MOV32 R0,#TIM1_PSC ;Предделитель
MOV R1,#(70-1) ;
STR R1,[R0]

MOV32 R0,#TIM1_ARR ;Счет
MOV R1,#(0xffff)
STR R1,[R0]

MOV32 R0,#TIM1_CCMR1
MOV R1,#((1<<CC1S0)) ; CC1S[01]: канал CC1 на вход, IC1 отображается на TI1,
STR R1,[R0] ;

MOV32 R0,#TIM1_CCER
MOV R1,#(1<<CC1E) ;Измерение периода
STR R1,[R0]

MOV32 R0,#TIM1_CR2
MOV R1,#(1<<MMS1) ; MMS[010]: Обновление
STR R1,[R0]

MOV32 R0,#TIM1_SMCR
MOV R1,#(1<<TS2)+(1<<TS0)+(1<<SMS2) ; TS[101] - Фильтрованный вход таймера 1 (TI1FP1) , SMS[100] - режим сброса.
STR R1,[R0]

MOV32 R0,#SRAM_Tim
STR Noll,[R0]

MOV32 R0,#TIM1_CCR1
STR Noll,[R0]

MOV32 R0,#TIM1_CNT
STR Noll,[R0]

MOV32 R0,#TIM1_CR1_CEN ;TIM3 счетчик - включение/отключение
STR Unit, [R0]
MOV32 R0,#TIM1_DIER_CC1IE ;Разрешения прерывания захвата/сравнения 1
STR Unit, [R0]
MOV32 R0,#TIM1_DIER_UIE ;Обновление разрешения прерывания TIM4
STR Unit, [R0]


Вернуться наверх
 
Вебинар «STM32L5. Секреты оценки энергопотребления» (05.11.2020)

Компания КОМПЭЛ приглашает 5 ноября принять участие в вебинаре, посвященном первому семейству МК STM32L5 на ядре Cortex-M33. На вебинаре будет рассказано об ошибках при расчете энергопотребления МК с помощью отладки STM32L562E-DK. Отладки STM32L562E-DK будут разыгрываться среди участников. Информация об условиях участия будет озвучена на вебинаре.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32 каскадирование таймеров и одновременные прерывания
СообщениеДобавлено: Ср окт 14, 2020 19:48:00 
Прорезались зубы

Карма: 4
Рейтинг сообщений: 44
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Сообщений: 228
Откуда: 69.Ржев
Рейтинг сообщения: 3
как-то у Вас все термины в кучу, вот смотрите:
каскадирование - соединение счетчиков (читай таймеров), так что предыдущий это как предделитель для следующего, т.е. для этого вызов прерывания не нужен;
тут же Вы пишите "Измеритель частоты на 3 каскадах работает нормально"
- т.е. получается состыковали 3 таймера?
далее
"переполнение" таймера - по сути это совпадение "веса" счетчика со значением в ARR, формируется упр.импульс события "переполнения", далее идут действия завязанные на это событие; например взводится флаг, если настроены прерывания таймер "стукнет током" контроллер прерывания - брось все запускай обработчик прерывания.
переполнения может на приключиться, например, потому что - выключен, не тактируется, не дотягивается (т.е. в режиме сброс сбрасывается раньше, чем достигнет значения в ARR).

не особо знаю асму, все не проверял, но это бросилось в глаза :
MOV32 R0,#TIM1_DIER_UIE ;
STR Unit, [R0]
что здесь должно загрузиться в R0?


Вернуться наверх
 
Управляй таймером с пикосекундным разрешением!

Для систем с цифровым управлением одним из важнейших параметров является разрешение. Чем точнее выполняется генерация и измерение сигналов, тем выше будет качество управления. Это касается таких приложений как источники питания, мощные инверторы, системы освещения, управление электродвигателями и прочие. Специально для ответственных задач компания STMicroelectronics предлагает использовать микроконтроллеры STM32 со встроенным таймером повышенного разрешения HRTIM.

Читать статью>>
Не в сети
 Заголовок сообщения: Re: STM32 каскадирование таймеров и одновременные прерывания
СообщениеДобавлено: Ср окт 14, 2020 20:41:14 
Друг Кота
Аватар пользователя

Карма: 104
Рейтинг сообщений: 1940
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 15678
Откуда: Московская область
Рейтинг сообщения: 0
Это бит-бендинг, насколько я понимаю в колбасных обрезках.... По адресу бита устанавливается единица


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: STM32 каскадирование таймеров и одновременные прерывания
СообщениеДобавлено: Чт окт 15, 2020 07:34:11 
Вымогатель припоя

Карма: -17
Рейтинг сообщений: 8
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 541
Рейтинг сообщения: 0
Видимо значение неуказанных символических имён предлагается угадать экстрасенсам? 8)
Дальше должно следовать выдавливание информации по капли из партизана. Видимо это не ему нужно, а он делает одолжение форуму выдавая детали по крупицам. :dont_know:

PS: И при чём тут вообще ШИМ???

PPS: А прерывание не вызывается видимо потому, что оно не разрешено в NVIC. Или потому, что не прописан адрес ISR в вектор таблицы прерываний. Или потому, что неправильно прописано расположение таблицы прерываний. Или потому что прерывания глобально запрещены. Или по 100500 другим причинам... :dont_know:


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: STM32 каскадирование таймеров и одновременные прерывания
СообщениеДобавлено: Чт окт 15, 2020 12:33:57 
Друг Кота
Аватар пользователя

Карма: 104
Рейтинг сообщений: 1940
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 15678
Откуда: Московская область
Рейтинг сообщения: 0
Видимо значение неуказанных символических имён предлагается угадать экстрасенсам?

Полагаю, что они объявлены в стандартном inc-файле МК в проекте.
Из контекста следует. И отличается от маски бит в CMSIS именем периферии:
#TIM1_DIER_UIE


Вернуться наверх
 
Бытовой пирометр АКИП-9312 – просто удобно!

Диапазон 35 °С ...42°С (температура тела) погрешность 0,3 °С
Диапазон 0 °С ...100°С (бытовая сфера) погрешность 1,0 °С
Не в сети
 Заголовок сообщения: Re: STM32 каскадирование таймеров и одновременные прерывания
СообщениеДобавлено: Чт окт 15, 2020 13:40:24 
Родился

Зарегистрирован: Пт окт 29, 2010 15:26:32
Сообщений: 10
Рейтинг сообщения: 0
Тому кто начинал программировать с языков высокого уровня психологически трудно перейти на Ассемблер, по себе знаю. Но жизнь заставила, нужно было делать ассемблерные вставки для ускорения работы программ. С тех пор пишу на Ассемблере. Если есть вопросы отвечу.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 каскадирование таймеров и одновременные прерывания
СообщениеДобавлено: Пт окт 16, 2020 11:11:25 
Вымогатель припоя

Карма: -17
Рейтинг сообщений: 8
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 541
Рейтинг сообщения: 0
Полагаю, что они объявлены в стандартном inc-файле МК в проекте.
"Noll" и "Unit" объявлены? :dont_know: Сильно сомневаюсь. И из контекста вопроса их значение тоже угадать невозможно.

Добавлено after 5 minutes 38 seconds:
Но жизнь заставила, нужно было делать ассемблерные вставки для ускорения работы программ. С тех пор пишу на Ассемблере.
Ускорение инициализации периферии? Серьёзно??? А какой смысл? :dont_know:
Да и нет там у вас там никакого ускорения, а наоборот - плохим знанием ассемблера вы сделали код более громоздким и тормозным чем его сделал бы нормальный компилятор. Одна только многократная загрузка адресов регистров одного и того же таймера чего стоит! Нафига так делать?? :dont_know:

PS: Чтобы программировать на асме действительно эффективно и от этого была польза и смысл, надо сперва изучить систему команд МК. Чего вы не сделали, как видно по коду.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 каскадирование таймеров и одновременные прерывания
СообщениеДобавлено: Пт окт 16, 2020 12:11:53 
Родился

Зарегистрирован: Пт окт 29, 2010 15:26:32
Сообщений: 10
Рейтинг сообщения: 0
jcxz ! Вы хотите все сразу и большой ложкой.
1. Тот вид куска программы показан для лучшего понимания тем кто имеет мало опыта в Ассемблере. Если бы я представил в оптимизированном виде, Вы бы еще дольше разбирались.
2. Вы правы в том что я не указал, что есть "0" и "1", что вызвало суету. Исправляю:

GET stm32f103_Keil.s

Unit RN 11 ;"1" - еденица (R11)
Noll RN 10 ;"0" - ноль (R10)
Rsos RN 9 ;Rsos - Регистр СОСТОЯНИЯ ПРОГРАММЫ (R9)

; Для BitBand под рукой всегда должны быть нолик
MOV32 Noll,#0
; Для BitBand под рукой всегда должны быть единичка
MOV32 Unit,#1

3. У меня конкретный вопрос. Я никогда не пользовался одновременно несколькими прерываниями, в частности - Обновлением и Захвата. Возможно это? Если возможно, то как? У меня не получается.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 каскадирование таймеров и одновременные прерывания
СообщениеДобавлено: Пт окт 16, 2020 16:12:22 
Друг Кота
Аватар пользователя

Карма: 104
Рейтинг сообщений: 1940
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 15678
Откуда: Московская область
Рейтинг сообщения: 0
Сильно сомневаюсь.

Я имел ввиду дефайн адреса бита, а не Noll и Unit, которые совершенно очевидны и без комментариев автора.

Добавлено after 4 minutes 25 seconds:
Возможно это?

Конечно возможно. Какие биты разрешений подняты, такие и будут генерировать прерывания. Только их нужно в обработчике сортировать. Сейчас лениво лезть в проект, но у меня по какому то (не помню) таймеру в 407-м генерируются прерывания и по ШИМу (увы, не по захвату) и по апдейту. Причина банальна. Автор проекта, который я по наследству правил, не удосужился оставить конкретные ноги под медленный ШИМ и пришлось делать ШИМ ногодрыгом из прерываний.

Добавлено after 2 minutes 37 seconds:
А прерывание не вызывается видимо потому, что оно не разрешено в NVIC. Или потому, что не прописан адрес ISR в вектор таблицы прерываний. Или потому, что неправильно прописано расположение таблицы прерываний. Или потому что прерывания глобально запрещены.

Причина конечно есть, но поскольку РАЗДЕЛЬНО прерывания генерируются, то ни одна из перечисленных причин не катит. Вектор у таймера один, к слову. А IVT вообще должен формировать линкер...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 каскадирование таймеров и одновременные прерывания
СообщениеДобавлено: Пт окт 16, 2020 18:33:00 
Родился

Зарегистрирован: Пт окт 29, 2010 15:26:32
Сообщений: 10
Рейтинг сообщения: 0
Я может не правильно сформулировал задачу. Дело в том что по отдельности каждое прерывание работает (по очереди запрещал),а вот вместе нет - сбоит. Такое впечатление, что наезжают друг на друга прерывания. Хотя старался разводить их измеряемым сигналом. Отработку прерываний уменьшал до 0,8 мкС.
У меня создалось впечатление, что сигналы запуска и захвата каким-то образом запускают прерывание обновления.
Спасибо! Появились идеи, попробую проверить.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 каскадирование таймеров и одновременные прерывания
СообщениеДобавлено: Пт окт 16, 2020 20:27:42 
Прорезались зубы

Карма: 4
Рейтинг сообщений: 44
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Сообщений: 228
Откуда: 69.Ржев
Рейтинг сообщения: 0
чего имеем по листингу:

PSC [70-1], ARR [FFFF] (до максимума),
SMS [100], TS [101], CC1S [ 01] - режим сброс, нога для сброса - вход первого канала,
т.е. тактирование от внутр., при фронте на ноге 1-го канала, обнулится начнет снова;
CC1E [ 1] - вход первого канала разрешен;
MMS [010] - если случится "обновление" счетчика пнуть ведомый тамер, т.е. этот импульс транслируется в TRGO;
CNT [ 0] - начальное значение счетчика
CCR1 [ 0] - значение в регистре 1-го канала, странно как-то
CEN [ 1] - разрешить тактирование счетчика
UIE [ 1] - разрешить дергать контроллер прерываний при обновлении счетчика, т.е. из FFFF в 0000
CC1IE [ 1] - разрешить дергать контроллер прерываний при совпадении с регистром 1-го канала,
а в нем 0000, т.е. опять же при переходе FFFF в 0000 счетчика.

чего я напутал?

а га, CC1E [ 1] - это переключение в захват,
т.е. по фронту на ноге 1-го канала счетчик будет копироваться в регистр ентого канала и генериться прерывание, стоп но на этой же ноге сброс счетчика, т.е. опять прерывания одновременны? чего-то я запутался :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 каскадирование таймеров и одновременные прерывания
СообщениеДобавлено: Вс окт 18, 2020 10:41:13 
Прорезались зубы

Карма: 4
Рейтинг сообщений: 44
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Сообщений: 228
Откуда: 69.Ржев
Рейтинг сообщения: 0
предыдущий мой опус следовало б стереть, да теперь поздно.

я б, наверное, не каскадировал, а в обработчике по флагу переполнения наращивал 32-битную переменную, по флагу захвата забирал ccr.
А если все таки каскадировать - без прерываний аппаратно - первый в режиме Сброс, остальные просто ведомые, вх.сигнал (по кому захватывать) подать на все; по прерыванию от первого забираем все ccr, ведомые таймеры на исходную (первый на автомате).

хотя, скорее всего, я просто не понял задачу kuratora


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 каскадирование таймеров и одновременные прерывания
СообщениеДобавлено: Вс окт 18, 2020 11:45:42 
Открыл глаза
Аватар пользователя

Карма: 2
Рейтинг сообщений: 9
Зарегистрирован: Сб янв 09, 2016 15:51:17
Сообщений: 77
Рейтинг сообщения: 0
kurator - для таймеров st не нужна асма, это не старинный пик - где всё было программным. Более того, таймеры от st спроектированы так - чтобы регистрировать и отмерять время недостижимое классическим программным способом.
Для начала сформулируйте основную задачу, что именно вам нужно сделать (не как сделать а именно что сделать). С подробным описанием возможностей и требований к будущему девайсу. Что-то мне подсказывает, что решение очень простое.

_________________
sRtoS


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 каскадирование таймеров и одновременные прерывания
СообщениеДобавлено: Вс окт 18, 2020 18:33:28 
Друг Кота
Аватар пользователя

Карма: 104
Рейтинг сообщений: 1940
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 15678
Откуда: Московская область
Рейтинг сообщения: 0
kurator - для таймеров st не нужна асма, это не старинный пик - где всё было программным. Более того, таймеры от st спроектированы так - чтобы регистрировать и отмерять время недостижимое классическим программным способом.

Какой то эпичный бред.
Что про "асму", что про пики, что про таймеры в СТм.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 17 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Валерьян и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y