Перейти к содержанию
    

Silber

Участник
  • Постов

    11
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о Silber

  • День рождения 22.10.1994

Контакты

  • Сайт
    Array
  • ICQ
    Array
  1. Не могу понять, что с чем сравнивается, когда внутри прерывания происходит прерывание? Таки разобрался: Суб-приоритет сравнивается, если прерывания происходят одновременно. Пре-приоритет сравнивается, если при выполнении прерывания происходит другое прерывание. Верно?
  2. А я в основном так и поступал :rolleyes: Спасибо за помощь всем! А в чем разница между установкой одного IC-канала на срабатывании на обоих фронатах (и передний и задний) и установкой двух каналов на одну ногу, каждый канал за свой фронт отвечает? Я сейчас реализовал первый вариант, всё нормально работает... Реализовал второй вариант (два канала на одну ногу). Логика программы чуть чуть изменилась: прерывание теперь обрабатывается при сбрасывании таймера (в первом варианте прерывание создавалось при захвате фронтов). Какой вариант использовать предпочтительнее?
  3. Да, извиняюсь, что сразу не скинул. HCSR04_sonar_.pdf
  4. Так, а что такое тогда high level time?
  5. Показания сняты успешно! Однако, не без загадок для меня: запомнил, что ответ с сенсора приходит приблизительно через 468мс, настроил Input capture канал таймера не на передний фронт, а на задний, вычел из захваченного значения 468 (получив таким образом длину эха) , преобразовал по формуле для длины ожидания ответа (поделил на 58). Получается, что производитель нагло врёт в мануале к датчику или я перевел не верно? (см. ниже) The Timing diagram is shown below. You only need to supply a short 10uS pulse to the trigger input to start the ranging, and then the module will send out an 8 cycle burst of ultrasound at 40 kHz and raise its echo. The Echo is a distance object that is pulse width and the range in proportion .You can calculate the range through the time interval between sending trigger signal and receiving echo signal. Formula: uS / 58 = centimeters or uS / 148 =inch; or: the range = high level time * velocity (340M/S) / 2; we suggest to use over 60ms measurement cycle, in order to prevent trigger signal to the echo signal. Само собой получилось, пока ждал ответа тут. Осциллографа нет =/ (сколько стоит сие чудо техники?). ПС помогите еще вот это перевести и осознать, а то я гироскоп уже спалил случайно =D Attention: The module is not suggested to connect directly to electric, if connected electric, the GND terminal should be connected the module first, otherwise, it will affect the normal work of the module.
  6. Спасибо :) Еще и факультет не "электронный" - прикладная математика Вообще цель - управление квадрокоптером, вот по части управления преподаватели хорошо помогают и учат, а с микроконтроллерами никто толком не знаком... Почему-то значение захватывает ~468 (+-1)(это без преобразования), вне зависимости от расстояния до препятствия. Проверьте настройки, пожалуйста. А код простой - как вы и написали: прерывание при захвате переднего фронта, сохранение значения в глобальную переменную. При нажати на голубую кнопку данные отправляются по юсб. По юсб данные идут исправно (совпадают со значениями в дебагере). Может, дело в подтягиваниях? Я еще не до конца осознал, как они работают Сенсор рабочий, я его проверял: подавал короткие импульсы (по ноге, подключенной к диоду), и получал эхо (опять на ногу, подключенную к диоду) диод отвечающий за эхо моргал по-разному, в зависимости от расстояния до препятствия.
  7. Еще раз спасибо. С avr я не знаком, да и с электроникой в целом. Мой путь - от высокоуровнего программирования к низкоуровнему на МК. STM32f4 мой первый МК
  8. Ошибся в последнем предложении. Режим называется 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
  9. Большое спасибо, очень круто (даже не подозревал, что можно так)! Так и сделаю. А насчет моего изначального вопроса (ну не оставлять же пробелы в голове) У датчика есть еще один способ снятия показаний: умножить на коэф длину эха. Получается, еще лучше использовать этот способ, поставив СН2 в input capture?
  10. А почему за 48 тактов? Проц работает на частоте 168Мгц (или нет?). А как называется режим, в котором стоит использовать таймер для такой моей цели? One Pulse Mode? Спасибо за ответ, но насчет прерываний-то что?
  11. STM32f4 discovery прерывания

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