Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2018-дек-14 17:32

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




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
СообщениеДобавлено: 2018-июн-06 10:00 
Не в сети

Зарегистрирован: 2017-авг-09 12:38
Сообщения: 56
Добрый день. Уже почти неделю пытаюсь реализовать прием данных по интерфейсу I2C от мастера. Для этого необходимо выявлять приход фронтов по цепи синхросигнала формируемого Мастером. Я знаю, что для того чтобы МК мог формировать прерывания по приходу фронта или спада надо подавать этот сигнал на вывод МК, который должен быть сконфигурирован как один из 4 каналов блока захвата/сравнения одного из таймеров. В качестве обучающего материала читаю "Основы программирования 32-разрядных микроконтроллеров 1986ВЕ91Т компании "Миландр". Это руководство по выполнению лабораторных работ (Алилуев Р.В., Глаголев В.М....). И вот там на странице 61 написано: "Для включения режима захвата для определенного канала необходимо:
- Инициализировать порты микроконтроллера СНхi на прием событий как переопределенную или альтернативную функцию. (это мне понятно)
- Включить тактирование таймера, настроить предделитель и модуль счета...."
По поводу включения тактирования периферийного модуля это тоже понятно, а вот настройка предделителя и модуля счета - нет! Для чего надо настраивать предделитель и модуль счета в данном случае? Мы же не используем таймер в случае захвата событий для счета этих событий. Нам важно только зафиксировать само событие. Ну а если все таки надо настраивать эти параметры то каким образом указывать эти значения? Я и в других примерах видел настройки этих параметров, хотя надо было выявлять только фронт либо спад.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2018-июн-06 10:54 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 201
Откуда: ПКК "Миландр"
Здесь есть статья по таймерам - https://startmilandr.ru/doku.php/doc:doclist:timers

Счет необходим, поскольку в момент фиксации события (фронта или спада внешнего сигнала) в регистр CCR заносится значение счетчика CNT. Во второй регистр CCR1 тоже может быть сохранено значение CNT при фиксации спада/фронта. По значениям этих регистров далее можно судить о периоде и т.д. внешнего сигнала. В момент присвоения регистров CCR, CCR1 может генерироваться прерывание.

В МК нет отдельной обработки прерываний по фронтам, поэтому для выработки прерывания по фронту/спаду используется логика захвата в канале таймера.

Некий пример с захватом рассмотрен в этой статье - https://startmilandr.ru/doku.php/prog:dma:dma_timercap
Большая часть Вам не нужна, необходимо оставить только настройку захвата и вместо передачи DMA по событию захвата, включить генерацию прерывания.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2018-июн-06 11:03 
Не в сети

Зарегистрирован: 2017-авг-09 12:38
Сообщения: 56
Vasiliy писал(а):
Здесь есть статья по таймерам - https://startmilandr.ru/doku.php/doc:doclist:timers

Счет необходим, поскольку в момент фиксации события (фронта или спада внешнего сигнала) в регистр CCR заносится значение счетчика CNT. Во второй регистр CCR1 тоже может быть сохранено значение CNT при фиксации спада/фронта. По значениям этих регистров далее можно судить о периоде и т.д. внешнего сигнала. В момент присвоения регистров CCR, CCR1 может генерироваться прерывание.

В МК нет отдельной обработки прерываний по фронтам, поэтому для выработки прерывания по фронту/спаду используется логика захвата в канале таймера.

Некий пример с захватом рассмотрен в этой статье - https://startmilandr.ru/doku.php/prog:dma:dma_timercap
Большая часть Вам не нужна, необходимо оставить только настройку захвата и вместо передачи DMA по событию захвата, включить генерацию прерывания.

Спасибо, Василий. Т.е. если мне не надо измерять ни период, ни количество принимаемых импульсов, то я могу(все равно должен) записать любые значения для этих параметров?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2018-июн-06 12:56 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 201
Откуда: ПКК "Миландр"
Да, таймер просто необходимо запустить чтобы он работал (считал). Период счета и значения регистров захвата в данном случае не важны.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 2018-июн-07 11:49 
Не в сети

Зарегистрирован: 2010-авг-30 19:12
Сообщения: 407
Цитата:
если мне не надо измерять ни период, ни количество принимаемых импульсов, то я могу(все равно должен) записать любые значения для этих параметров?

Только без фанатизма - это насчет любые значения.
В описании сказано, что сигнал фиксируется с частотой FDTS или TIM_CLK. Поэтому если предделителями настроить TIM_CLK на частоту 1 Гц то и фиксацию фронтов можно будет получать не чаще (при условии что будет зафиксировано изменение).

_________________
О сколько нам открытий чудных
Готовит просвященья дух,
И опыт - сын ошибок трудных ... (Пушкин)

Пергаменты не утоляют жажду ("Фауст",Гете)


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

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


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 5


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

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB