Easyelectronics.ru

Электроника для всех
Текущее время: 27 ноя 2020, 11:30

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



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 18 ] 
Автор Сообщение
 Заголовок сообщения: RM0008 описание таймеров
СообщениеДобавлено: 11 июл 2011, 10:24 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
Не могу понять структуру таймеров.
В описании указано, что для каждого таймера есть 4 входа, которые на схеме (п. 14.2) обозначены как
CH1, CH2, CH3, CH4 и четыре выхода, которые обозначены подобным образом. Как их различать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RM0008 описание таймеров
СообщениеДобавлено: 11 июл 2011, 10:31 
Старожил

Зарегистрирован: 25 апр 2010, 10:13
Сообщения: 1927
Откуда: Томск
Что значит как? Как написано так и различать.
Или как будет на конкретном чипе? Это надо смотреть в даташите на чип.

_________________
Какое небо голубое....(с) лиса Алиса


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RM0008 описание таймеров
СообщениеДобавлено: 11 июл 2011, 10:35 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
Как отличать их в описании выводов, обозначения то одинаковые(или глупость спросил?)
Мне сигнал нужно на вход подать, считать входные импульсы.
А в "Figure 99. General-purpose timer block diagram" и вход и выход обозначены TIMx_CH1


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RM0008 описание таймеров
СообщениеДобавлено: 11 июл 2011, 10:39 
Старожил

Зарегистрирован: 25 апр 2010, 10:13
Сообщения: 1927
Откуда: Томск
Ну он так и называется, например "TIM1_CH4" - сделай поиск CH4 в даташите.

_________________
Какое небо голубое....(с) лиса Алиса


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RM0008 описание таймеров
СообщениеДобавлено: 11 июл 2011, 10:43 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
Нее, я понимаю.
Но там есть вход для подсчета импульсов и выход схемы совпадения, а обозначены они одинаково.
А мне надо знать на каком пине сидит вход
или это у меня уже глюки?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RM0008 описание таймеров
СообщениеДобавлено: 11 июл 2011, 10:48 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
В документации указано, что на выводе 37 сидит С6 и TIM3_CH1.
Вот этот TIM3_CH1 - это выход или вход?
Или я что-то не так понял?
Поправьте, пожалуйста.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RM0008 описание таймеров
СообщениеДобавлено: 11 июл 2011, 11:06 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
Интересно, что на указанной выше схема изображено, что сигнал со входа может подаваться только на регистр совпадения/захвата, а как я понял с описания сигнал можно подавать также на вход счетного регистра.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RM0008 описание таймеров
СообщениеДобавлено: 11 июл 2011, 11:10 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
Есть там такой режим работы External clock source mode 1 (на странице 332).
Благодаря ему формируется сигнал CK_PSC, который (как я понял) подается на вход счетного регистра(ну через прескалер конечно)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RM0008 описание таймеров
СообщениеДобавлено: 11 июл 2011, 11:17 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
Таймер в режиме подсчета импульсов от тактового генератора запускается без проблем(в этом разобрался ), а вот в режим счета внешних импульсов не конфигурируется зараза.
Не могу понять - или не на тот вывод подаю сигнал, или не с того регистра читаю, или не правильно конфигурирую.
Таймер конфигурирую так
Код:
  RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;
  TIM3->SMCR   |= TIM_SMCR_SMS | 0x0060;
  TIM3->CR1     = TIM_CR1_CEN;

Считываю данные со счетного регистра и получаю какую-то ересь.
Я, наверное, что-то не так понимаю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RM0008 описание таймеров
СообщениеДобавлено: 11 июл 2011, 12:13 
Старожил

Зарегистрирован: 25 апр 2010, 10:13
Сообщения: 1927
Откуда: Томск
kontroller писал(а):
В документации указано, что на выводе 37 сидит С6 и TIM3_CH1.
Вот этот TIM3_CH1 - это выход или вход?

Да, есть такое. Физически это один и тот же вывод, но вход это или выход определяется программирование порта, смотри в RM0008 раздел 9.1.11 GPIO configurations for device peripherals
А есть такая фича как Remap, т.е. этот вход/выход можно перебросить на другой физический вывод - смотри в даташите в табличке указано Alternate functions/Default/Remap.

Да, а чтобы этот вывод был не PC6, а TIM3_CH1 надо запрограммировать AFIO смотри в RM0008 раздел 9.3.7 Timer alternate function remapping.

Т.е. вначале определяешь в AFIO что это вывод таймера, потом включаешь в GPIO вход это или выход.

_________________
Какое небо голубое....(с) лиса Алиса


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RM0008 описание таймеров
СообщениеДобавлено: 11 июл 2011, 12:19 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
Получается нужно сделать ремапинг, а если потом вывод сделать входом - то это будет вход таймера,
иначе - выход схемы совпадения.
Спасибо.
Ща попробую


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RM0008 описание таймеров
СообщениеДобавлено: 11 июл 2011, 14:31 
Старожил

Зарегистрирован: 25 апр 2010, 10:13
Сообщения: 1927
Откуда: Томск
Так, только не путай альтернативу и ремап.
AFIO - это выбор альтернативной функции вывода по Default, а Remap - переброска этой альтернативной функции на другой пин(и то работает не во всех чипах).

_________________
Какое небо голубое....(с) лиса Алиса


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RM0008 описание таймеров
СообщениеДобавлено: 11 июл 2011, 14:52 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
Преключил на использование альтернативной ф-ии AFIO->MAPR |= AFIO_MAPR_TIM3_REMAP, а он ведет сябя странно: с каждым обращением к CNT его содержимое увеличивается на 9 ????
Что-то я не досмотрел.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RM0008 описание таймеров
СообщениеДобавлено: 11 июл 2011, 15:17 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
И еще затык.
Входов четыре, а сигнал CK_PSC один. А как осуществляется их переключение? Просмотрел все регистры, но ничего подходящего не нашел. Читаю мануал, но пока безрезультатно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RM0008 описание таймеров
СообщениеДобавлено: 11 июл 2011, 16:02 
Старожил

Зарегистрирован: 25 апр 2010, 10:13
Сообщения: 1927
Откуда: Томск
kontroller писал(а):
И еще затык.
Входов четыре, а сигнал CK_PSC один. А как осуществляется их переключение? Просмотрел все регистры, но ничего подходящего не нашел. Читаю мануал, но пока безрезультатно.

Так сигнал CK_PSC для Counter, а дальше Counter передает своё значение для всех четырех CCR (см. рис. 52) Я не знаю что ты хочешь сделать, но посмотри на Figure 78. Capture/compare channel и далее, там видно как это происходит.

_________________
Какое небо голубое....(с) лиса Алиса


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RM0008 описание таймеров
СообщениеДобавлено: 11 июл 2011, 16:20 
Старожил

Зарегистрирован: 18 фев 2010, 12:47
Сообщения: 310
Откуда: г. Челябинск
Ну вот уже пошли конкретный вопросы :)
Для понимания Figure 52 (из документа RM0008 Doc ID 13902 Rev 13) и Figure 74 и к примеру 121 (возможна она вам ближе) - это просто на вскидку, вообще смотря какой режим вам нужен.

Из диаграмм видим что вам нужен PIN TIM3_CH1 (если брать третий таймер 1й канал), в начале смотрим распиновку - это пин PA6. Значит нам надо настроить его как INPUT_PULL_UP (код не привожу).

Далее сам таймер:

RCC->APB1ENR = RCC_APB1ENR_TIM3EN; // Разрешаем тактирование таймера
// Сигнал не фильтруем IC1F=0 (см. биты ICF регистра CCMR1).

TIM3->CCER = TIM_CCER_CC1P; // Детектор фронтов настраиваем на "прямой" сигнал - активный уровень высокий
TIM3->CCMR1 = TIM_CCMR1_CC1S_0; // Настраиваем второй мультиплексор на вход CC1S=01
TIM3->SMCR = TIM_SMCR_SMS_0 | TIM_SMCR_SMS_1; // Тут нужно выбрать нужный вам режим - их там куча, курите раздел настройки SMS - есть режим триггера, по фронтам, энкодера и прочее. В этой строке SMS=011 - режим энкодера, вам наверное лучше SMS=111 - как на диаграмме 122.

TIM3->ARR = 255; // задаём максимальное значение

TIM3->CR1 = TIM_CR1_CEN;// Запускаем таймер

P.S. Не используете Keil ? Для неё есть волшебный файлик STM32_Init.c и для него же Wizard - где по человечески расписана вся настройка переферии, вот пример:


Вложения:
Комментарий к файлу: Keil STM32 wizard
keil_wizard.png
keil_wizard.png [ 88.12 Кб | Просмотров: 5751 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RM0008 описание таймеров
СообщениеДобавлено: 11 июл 2011, 16:38 
Старожил
Аватара пользователя

Зарегистрирован: 06 ноя 2010, 15:24
Сообщения: 711
Откуда: Украина, Николаев
shum_inc. Аагромное человеческое спасибо.
Забыл о существовании Wizarda


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RM0008 описание таймеров
СообщениеДобавлено: 11 июл 2011, 16:44 
Старожил

Зарегистрирован: 18 фев 2010, 12:47
Сообщения: 310
Откуда: г. Челябинск
И по-моему я пропустил конфигурацию TS для SMCR - надо выбрать согласно схемы нужный конфиг.

Вот конкретно ваш случай в документации (если я правильно вас понял) там правда вход TI2 но это не суть:

External clock source mode 1
This mode is selected when SMS=111 in the TIMx_SMCR register. The counter can count at each rising or falling edge on a selected input.
For example, to configure the upcounter to count in response to a rising edge on the TI2
input, use the following procedure:
1. Configure channel 2 to detect rising edges on the TI2 input by writing CC2S= ‘01 in the
TIMx_CCMR1 register.
2. Configure the input filter duration by writing the IC2F[3:0] bits in the TIMx_CCMR1
register (if no filter is needed, keep IC2F=0000).
Note: The capture prescaler is not used for triggering, so you don’t need to configure it.
3. Select rising edge polarity by writing CC2P=0 in the TIMx_CCER register.
4. Configure the timer in external clock mode 1 by writing SMS=111 in the TIMx_SMCR
register.
5. Select TI2 as the input source by writing TS=110 in the TIMx_SMCR register.
6. Enable the counter by writing CEN=1 in the TIMx_CR1 register.


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


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


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

Сейчас этот форум просматривают: kos


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

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

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB