|
STM32f4 discovery прерывания, Запутался в прерываниях, прошу помощи |
|
|
|
Apr 23 2015, 14:49
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 24-02-15
Пользователь №: 85 339

|
в STM32CubeMX сгенерировал себе вот такой проект: USB OTG FS(для передачи данных на пк через виртуальный ком-порт), TIM6, Синяя кнопка, +2 gpio пина для работы с ультразвуковым датчиком расстояния. Цель программы - научиться считывать показания датчика. Как с ним работать: подать на пин Trig единицу длиной 10микроСек, засечь, сколько жду ответ от датчика по пину Echo. Преобразовать временной промежуток и получить расстояние до объекта. Все просто! Как я хочу, чтобы работала программа: при нажатии на кнопку контроллер отправляет по usb мне расстояние до объекта. Алгоритм: 1)прерывание по нажатию на кнопку 2)запускается таймер, его источник - 48МГц, делитель 0, период 47. (чтобы каждую микросекунду он генерировал прерывание) 3)работа с сенсором //этот пункт сейчас не вызывает вопросов 4)отправка данных по usb Данные по usb передаются нормально, но, если я включаю таймер, то USB виснет. Догадываюсь, что дело в прерываниях и их приоритетах. Приоритеты прерываний см на изображении. Что такое под-приоритет?
|
|
|
|
|
 |
Ответов
|
Apr 23 2015, 19:40
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 24-02-15
Пользователь №: 85 339

|
Ошибся в последнем предложении. Режим называется PWM Input mode: This mode is a particular case of input capture mode. The procedure is the same except: • Two ICx signals are mapped on the same TIx input. • These 2 ICx signals are active on edges with opposite polarity. • One of the two TIxFP signals is selected as trigger input and the slave mode controller is configured in reset mode. For example, you can measure the period (in TIMx_CCR1 register) and the duty cycle
|
|
|
|
|
Apr 24 2015, 05:36
|
Гуру
     
Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702

|
Цитата(Silber @ Apr 23 2015, 22:40)  Режим называется PWM Input mode: Вам достаточно простого захвата переднего фронта пина Echo. Цитата Что такое под-приоритет? Представьте: cpu находится в более приоритетном прерывании, за это время возникают два прерывания с одинаковым приоритетом пониже. cpu заканчивает обработку приоритетного прерывания и что ему выполнять дальше? А дальше nvic смотрит есть два новых прерывания с одинаковым приоритетом, из них он выбирает то, у которого под-приоритет выше. Если под-приоритеты равны, то nvic выбирает то, которое стоит в таблице векторов прерываний раньше. По сути под-приоритет в cortex это как приоритет в avr (если не заморачиваться с вложенными прерываниями) - сказать контроллеру прерываний кого вызывать вперед при прочих равных.
|
|
|
|
|
Apr 24 2015, 06:09
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 24-02-15
Пользователь №: 85 339

|
Цитата(adnega @ Apr 24 2015, 08:36)  Вам достаточно простого захвата переднего фронта пина Echo.
Представьте: cpu находится в более приоритетном прерывании, за это время возникают два прерывания с одинаковым приоритетом пониже. cpu заканчивает обработку приоритетного прерывания и что ему выполнять дальше? А дальше nvic смотрит есть два новых прерывания с одинаковым приоритетом, из них он выбирает то, у которого под-приоритет выше. Если под-приоритеты равны, то nvic выбирает то, которое стоит в таблице векторов прерываний раньше.
По сути под-приоритет в cortex это как приоритет в avr (если не заморачиваться с вложенными прерываниями) - сказать контроллеру прерываний кого вызывать вперед при прочих равных. Еще раз спасибо. С avr я не знаком, да и с электроникой в целом. Мой путь - от высокоуровнего программирования к низкоуровнему на МК. STM32f4 мой первый МК
|
|
|
|
|
Apr 24 2015, 11:04
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 24-02-15
Пользователь №: 85 339

|
Цитата(adnega @ Apr 24 2015, 09:32)  Ааа. Понятно. Тогда предупреждаю, что тут подход отличается. Основная цель разработчика - по максимуму нагрузить богатую периферию. Решать железные вопросы софтово - дурной тон в МК) Спасибо  Еще и факультет не "электронный" - прикладная математика Вообще цель - управление квадрокоптером, вот по части управления преподаватели хорошо помогают и учат, а с микроконтроллерами никто толком не знаком... Почему-то значение захватывает ~468 (+-1)(это без преобразования), вне зависимости от расстояния до препятствия. Проверьте настройки, пожалуйста. А код простой - как вы и написали: прерывание при захвате переднего фронта, сохранение значения в глобальную переменную. При нажати на голубую кнопку данные отправляются по юсб. По юсб данные идут исправно (совпадают со значениями в дебагере).    Может, дело в подтягиваниях? Я еще не до конца осознал, как они работают Сенсор рабочий, я его проверял: подавал короткие импульсы (по ноге, подключенной к диоду), и получал эхо (опять на ногу, подключенную к диоду) диод отвечающий за эхо моргал по-разному, в зависимости от расстояния до препятствия.
Сообщение отредактировал Silber - Apr 24 2015, 11:44
|
|
|
|
Сообщений в этой теме
Silber STM32f4 discovery прерывания Apr 23 2015, 14:49 adnega Цитата(Silber @ Apr 23 2015, 17:49) 2)зап... Apr 23 2015, 16:10 Silber Цитата(adnega @ Apr 23 2015, 19:10) Тут в... Apr 23 2015, 16:56  adnega Цитата(Silber @ Apr 23 2015, 19:56) А поч... Apr 23 2015, 17:44   Silber Цитата(adnega @ Apr 23 2015, 20:44) Часто... Apr 23 2015, 18:08 esaulenka Осциллографа под рукой нету?
Моргания светодиода ... Apr 24 2015, 12:24 Silber Показания сняты успешно!
Однако, не без загадо... Apr 24 2015, 12:30 esaulenka Цитата(Silber @ Apr 24 2015, 15:30) Осцил... Apr 24 2015, 12:58 esaulenka Как нарисовано, так и работает.
По входу "три... Apr 24 2015, 12:39 Silber Цитата(esaulenka @ Apr 24 2015, 15:39) Ка... Apr 24 2015, 12:50 Silber ЦитатаНе понял, что это. Полная документация есть?... Apr 24 2015, 13:07 esaulenka Ну... Надо учитывать, что Шенжень находится достат... Apr 24 2015, 13:25 Silber Цитата(esaulenka @ Apr 24 2015, 16:25) А ... Apr 24 2015, 14:39  esaulenka Цитата(Silber @ Apr 24 2015, 17:39) А в ч... Apr 27 2015, 08:45
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|