реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Система тактирования
d7d1cd
сообщение Oct 4 2012, 17:06
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Привет всем. В MSP430F149 есть внутренний генератор системы тактирования. Какой он частоты? И как от него "затактировать" таймер А?
Go to the top of the page
 
+Quote Post
SSerge
сообщение Oct 4 2012, 18:06
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



http://www.gaw.ru/html.cgi/txt/doc/micros/msp430/arh/4.htm
http://www.gaw.ru/html.cgi/txt/doc/micros/msp430/arh/11.htm

Если коротко, модуль тактирования вырабатывает три разных клока:
MCLK - для тактирование процессора, а
SMCLK и ACLK используются для тактирования периферии.
При настройке периферии почти у всех можно выбрать от какого клока будет тактироваться устройство.


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Oct 5 2012, 02:47
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Спасибо за ответ. Все это я уже читал. Мне необходимо сделать таймер, чтобы он вызывал прерывание примерно через каждые 5 сек. К МК подключен один резонатор на частоту 8МГц. Как мне настроить таймер при таких условиях?
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 9 2012, 18:46
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(d7d1cd @ Oct 5 2012, 07:47) *
Мне необходимо сделать таймер, чтобы он вызывал прерывание примерно через каждые 5 сек. К МК подключен один резонатор на частоту 8МГц. Как мне настроить таймер при таких условиях?
У MSP430F149 таймеры 16-и разрядные. При тактовой 8МГц, если даже использовать все предделители, можно получить период переполнения таймера лишь 8*8*65536/8МГц=0,524288с. Поэтому чисто аппаратно 5 сек отмерить не получится. Нужно программно "расширить" разрядность таймера, скажем до 32-х разрядов. Вводите 32-х разрядную переменную, которую в прерывании от переполнения таймера увеличиваете на 2^16. К значению этой переменной в произвольный (требуемый вам) момент времени прибавляете значение TAR и получаете 32-х разрядный отсчет с дискретностью счета таймера. Чтобы точно отмерить 5сек, в прерывании от переполнения (там где инкремент счетчика на величину 65536 идет) анализируете беззнаковую разницу текущего значения переменной 32-х разрядного счетчика и уставки. Если разница оказывается меньше 65536, то устанавливаете в регистр сравнения CCRx остаток от деления (5c*8МГц/8/8)%65536=35176 и разрешаете прерывание от совпадения CCRx. Если хочется еще точнее, то учитывайте 6 тактов MCLK, требуемых для перехода по вектору прерывания, и такты на сохранение контекста в прерывании.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Oct 10 2012, 05:04
Сообщение #5


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(d7d1cd @ Oct 5 2012, 06:47) *
Мне необходимо сделать таймер, чтобы он вызывал прерывание примерно через каждые 5 сек.

Придется делать виртуальный таймер.
Например, сконфигурировать прерывания таймера на фиксированный интервал (например, 5мс) а внутри завести счетчик, который будет считать либо тики, либо миллисекунды. Далее по достижению определенного значения (1000 тиков или 5000мс) сформировать эвент (флаг) для ожидающего потока.

Можно, как resident посоветовал, если событие одно и частые прерывания нежелательны (например, в спячке). Я так делал, когда нужно было точно отмерить некий интервал, не перегружая систему излишними прерываниями, которые сказывались на скорости реакции и точности измерений.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Dec 7 2012, 15:12
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Вопрос: если выводы МК XIN и XOUT не задействованы (к ним не подключен резонатор), то осциллятор LFXT1 работать не будет и, следовательно, ACLK тоже будет нерабочим. Правильно?
Go to the top of the page
 
+Quote Post
E.V.G.
сообщение Dec 8 2012, 08:51
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 31-01-10
Из: Арзамас
Пользователь №: 55 175



Да. Без кварца ACLK не будет. Но на XIN можно подать внешнюю частоту с другого источника и тогда она появится. Я так делал, когда мне понадобилось получить частоту для тактирования периферии меньшей величины. Взял выход SMCLK и завёл на XIN. С помощью DIVA поделил на нужное мне число.

Сообщение отредактировал E.V.G. - Dec 8 2012, 08:53
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 2nd August 2025 - 23:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01386 секунд с 7
ELECTRONIX ©2004-2016