Например TDA7294

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





Текущее время: Ср апр 24, 2024 10:56:22

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


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



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

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


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

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


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

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

_________________
IVL ex UA6PJ OSC_F303


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

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

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

Зарегистрирован: Пт окт 29, 2010 15:26:32
Сообщений: 11
Рейтинг сообщения: 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]


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

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

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

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


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

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

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


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

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

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

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


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

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 каскадирование таймеров и одновременные прерывания
СообщениеДобавлено: Чт окт 15, 2020 13:40:24 
Родился

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


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

Карма: -10
Рейтинг сообщений: 97
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1155
Рейтинг сообщения: 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
Сообщений: 11
Рейтинг сообщения: 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 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21837
Откуда: Московская область, Фрязино
Рейтинг сообщения: 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
Сообщений: 11
Рейтинг сообщения: 0
Я может не правильно сформулировал задачу. Дело в том что по отдельности каждое прерывание работает (по очереди запрещал),а вот вместе нет - сбоит. Такое впечатление, что наезжают друг на друга прерывания. Хотя старался разводить их измеряемым сигналом. Отработку прерываний уменьшал до 0,8 мкС.
У меня создалось впечатление, что сигналы запуска и захвата каким-то образом запускают прерывание обновления.
Спасибо! Появились идеи, попробую проверить.


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

Карма: 4
Рейтинг сообщений: 80
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Сообщений: 445
Откуда: 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
Рейтинг сообщений: 80
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Сообщений: 445
Откуда: 69.Ржев
Рейтинг сообщения: 0
предыдущий мой опус следовало б стереть, да теперь поздно.

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

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


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

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

_________________
sRtoS


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

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

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 каскадирование таймеров и одновременные прерывания
СообщениеДобавлено: Ср июн 21, 2023 19:22:17 
Опытный кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 82
Зарегистрирован: Сб июн 01, 2013 22:24:21
Сообщений: 751
Откуда: ПФО
Рейтинг сообщения: 0
Уважаемые, кто в курсе, можно ли 2 счётчика заставить считать синхронно, если да, то как?
Что на данный момент, таймер 4 считает импульсы энкодера и настроен в режиме мастера, Т12 в режиме слейв, в результате переполнения Т4 получаем Т12 +1
Хотелось чтобы они считали тики вместе, только у каждого разная "верхушка" т.е. переполнение, например у Т4 наступает при 7123 импульса а у Т12 через 33, и по каждому переполнению генерится прерывание, это реально сделать, или такое надо делать по другому?


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 38


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

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


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