|
|
|
совместный запуск таймеров TIMER A и TIMER B, TIMER A формирует 10мс интервалы и запускает TIMER B на подсчет f |
|
|
|
Jul 29 2018, 08:21
|
Знающий
Группа: Свой
Сообщений: 779
Регистрация: 9-10-04
Из: Россия, Пермь
Пользователь №: 828
|
Цитата( @ Jul 29 2018, 10:40) Для этого процессора сделать стабильной (малозависимой от температуры и напряжения) частоту DCO не получится. IMHO. По причине отсутствия в тактовой системе процессора узла FLL, который присутствует в F5xxx, может и в F4xxx появился. При наличии FLL используется кварц 32 кГц, работающий постоянно, и от него стабилизируется высокочастотный (или не высокочастотный) DCO, который может работать постоянно или запускаться при выходе из LPM. --- Непонятно, что подразумевается под "совместный". Если нужна абсолютная синхронность работы таймеров - я использовал бы внешнее аппаратное управление или тактирование. FLL нет и не будет -помечтать... Совместная - это когда работает один таймер от кварца, а другой от DCO. Подчеркиваю - работают, а не один работает, а другой по какой то неясной причине не запускается. Про стабильность - мне достаточно периодически (перед запуском подпрограммы, которая формирует время, частоту - требуется и точность +/- 0.5%) замерить стабилизированным кварцем таймером частоту DCO (TIMERA время 10мс от кварца, TIMERB тактируется от DCO 250кГц) количество импульсов - это будет поправочный коэффициент на определенный промежуток времени до следующего замера. Повторяюсь уже - опять непонятно? P.S. Не в тему - где сейчас Rezident? - Реально дельные советы по MSP430 здесь давал. Вымерли Гуру по MSP430
|
|
|
|
|
Jul 30 2018, 04:06
|
Беспросветный оптимист
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646
|
Цитата(Make_Pic @ Jul 29 2018, 11:21) Вымерли Гуру по MSP430 Не вымерли, пошли дальше. Я делал так (емнип) ACLK от часового кварца, на него сажаем таймер А. Таймер В - от DCO, а на вход капчи подаем выход CCR таймера А. Тогда в ССR таймера В зафиксируется количество тактов DCO, соответствующее интервалу таймера А. У TI немного другой подход - они подгоняют коэффициенты DCO под нужную частоту
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jul 30 2018, 08:50
|
Знающий
Группа: Свой
Сообщений: 779
Регистрация: 9-10-04
Из: Россия, Пермь
Пользователь №: 828
|
Цитата(MrYuran @ Jul 30 2018, 07:06) Не вымерли, пошли дальше. Я делал так (емнип) ACLK от часового кварца, на него сажаем таймер А. Таймер В - от DCO, а на вход капчи подаем выход CCR таймера А. Тогда в ССR таймера В зафиксируется количество тактов DCO, соответствующее интервалу таймера А. У TI немного другой подход - они подгоняют коэффициенты DCO под нужную частоту Спасибо, я так примерно и делаю, но не работает - вы можете привести здесь кусок своего кода?
|
|
|
|
|
Aug 9 2018, 13:35
|
Знающий
Группа: Свой
Сообщений: 779
Регистрация: 9-10-04
Из: Россия, Пермь
Пользователь №: 828
|
Цитата(MrYuran @ Jul 30 2018, 12:10) Код /** \brief Калибровочная переменная Хранит количество тиков ТВ в периоде ACLK */ ... /** * Прерывание по захвату ACLK * \brief Определяет период ACLK в тактах ТВ */ static interrupt (TIMERB1_VECTOR) Timerb_ccr1(void) __attribute__ ((used)); interrupt (TIMERB1_VECTOR) Timerb_ccr1(void) { switch(TBIV) { case 12: // прерывание по захвату ACLK, калибровка DCO
DeltaTBR = TBCCR6 - LastTBR; LastTBR = TBCCR6;
break; } } Ровно 10 лет прошло ) Это для F149, если что Не совсем понял, что вы делаете с полученной дельтой в прерывании. И если я правильно понял, таймер считает на переполнение от ACLK DCO - RC генератора, А таймер И отчего запущен - у вас оба таймера тактируются от ACLK (TACTL = TASSEL1, TBCTL = TBSSEL1) - где стабильный кварцеванный источник? Как вы калибруете тактовый сигнал?
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|