Easyelectronics.ru

Электроника для всех
Текущее время: 01 мар 2021, 18:43

Часовой пояс: 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 Кб | Просмотров: 5777 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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 часов


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

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


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

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

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