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

 
 
 
Closed TopicStart new topic
> F147 - два таймера от разных частот
stalko
сообщение Sep 16 2009, 05:15
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 139
Регистрация: 5-05-05
Из: Зеленоград
Пользователь №: 4 762



С MSP430 в жизни работал мало... вероятно, где-то туплю... Пускаю таймер А от SMCLK, все идет на ура... после этого надо пустить тамер B от ACLK... тут происходит "затык"... стоит однажды контроллеру (F147) войти в прерывание таймера B, как все уходит в полный даун... даже в пустое... ради эксперимента пустил В от того же SMCLK, все работает прекрасно... уже перестраховался, чищу все регистры... странно как-то все это...
Вот код, может кто подскажет?
Код
void TimerInit(void)
{
// timer A init
TACCR2 = 0x00;
TACTL = TASSEL_2+TACLR;       // SMCLK, clear TAR, UP timer mode, int enable, /1
TACCTL0 |= CCIE;                      // CCR0 interrupt enabled
TACCTL1 = 0x00;
TACCTL2 = 0x00;
TACCR0 = SMCLK_FREQ_HZ/FREQ_INTERRUPT;
TACTL &= ~TAIFG;
TACCTL0 &= ~CCIFG;
TACTL |= MC_1+TAIE;
// timer B init
TBCCR2=0x00;
TBCTL = TBSSEL_1+TBCLR+ID_2;       // ACLK, clear TAR, UP timer mode, int enable, /4
TBCCTL0 |= CCIE;                      // CCR0 interrupt enabled
TBCCTL1 = 0x00;
TBCCTL2 = 0x00;
TBCCTL3 = 0x00;
TBCCTL4 = 0x00;
TBCCTL5 = 0x00;
TBCCTL6 = 0x00;
TBCCR0 = ACLK_FREQ_HZ;
TBCTL &= ~TBIFG;
TBCCTL0 &= ~CCIFG;
TBCTL |= MC_1+TBIE;
}

#pragma  vector=TIMERA0_VECTOR
__interrupt void Timer_A0_Int(void)
{
...
return;
}

#pragma  vector=TIMERB0_VECTOR
__interrupt void Timer_B0_Int(void)
{
...
  return;
}
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Sep 16 2009, 05:42
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(stalko @ Sep 16 2009, 08:15) *

Вроде все чисто, только непонятно, зачем дергать CCR до CTL.

Может в теле прерывания что-то не то? Типа вечного цикла, сложного индексирования, вложенных прерываний и проч.
Может, лишние прерывания разрешаются. Заглушки на прерываниях стоят? Отладчик есть?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Sep 16 2009, 05:47
Сообщение #3


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

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



Цитата(stalko @ Sep 16 2009, 09:15) *
TACTL = TASSEL_2+TACLR; // SMCLK, clear TAR, UP timer mode, int enable, /1

TBCTL = TBSSEL_1+TBCLR+ID_2; // ACLK, clear TAR, UP timer mode, int enable, /4

Всё-таки разные источники тактирования, хотя я лично никакого криминала не вижу.
Скорее всего, проблема не здесь
Кстати, return() в конце прерывания ставить не обязательно.
PS: пользуйтесь тегами [code], читать будет удобнее
pps: сорри, невнимательно прочитал условие задачи...

Это... а ACLK не забыли случайно запустить?


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
stalko
сообщение Sep 16 2009, 05:56
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 139
Регистрация: 5-05-05
Из: Зеленоград
Пользователь №: 4 762



Цитата(Dog Pawlowa @ Sep 16 2009, 09:42) *
Вроде все чисто, только непонятно, зачем дергать CCR до CTL.

Я же говорю... понимание уже не помогает, начались эксперименты методом научного тыка biggrin.gif
Цитата(Dog Pawlowa @ Sep 16 2009, 09:42) *
Может в теле прерывания что-то не то? Типа вечного цикла, сложного индексирования, вложенных прерываний и проч.
Может, лишние прерывания разрешаются. Заглушки на прерываниях стоят? Отладчик есть?

Тело прерывания тамера B - пока пустое... и с ним то не идет, какой уж тут код?
Цитата(MrYuran @ Sep 16 2009, 09:47) *
Всё-таки разные источники тактирования, хотя я лично никакого криминала не вижу.
...
Это... а ACLK не забыли случайно запустить?

Да не... ACLK тикает всеми своими 32к как родной... вижу его на 50-й ноге осцилом...
Забыл уточнить - MCLK = DCO (5Мгц), SMCLK = MCLK/4. Вдруг имеет какую-то роль... хотя и не должно...
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Sep 16 2009, 06:48
Сообщение #5


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

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



А я до настоящего момента был уверен, что у меня ТА от ACLK в текущем проекте тактируется...
Посмотрел - них..чего себе!
TACTL = TASSEL1 | TACLR;
TBCTL = TBSSEL1 | TBCLR | MC_2; // Непрерывный режим, SMCLK

Да, приближаясь к финишу, забываешь, с чего начинал...


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
stalko
сообщение Sep 16 2009, 06:57
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 139
Регистрация: 5-05-05
Из: Зеленоград
Пользователь №: 4 762



Цитата(MrYuran @ Sep 16 2009, 10:48) *
А я до настоящего момента был уверен, что у меня ТА от ACLK в текущем проекте тактируется...
Посмотрел - них..чего себе!
TACTL = TASSEL1 | TACLR;
TBCTL = TBSSEL1 | TBCLR | MC_2; // Непрерывный режим, SMCLK
Да, приближаясь к финишу, забываешь, с чего начинал...

Эмммм... не понял глубину мысли... больше года без отпуска неблагоприятно сказываются на психике и интеллектуальных способностях...
Код
TACTL = TASSEL_2+TACLR;       // SMCLK, clear TAR, UP timer mode, int enable, /1
...
TACTL |= MC_1+TAIE;
...
TBCTL = TBSSEL_1+TBCLR+ID_2;       // ACLK, clear TAR, UP timer mode, int enable, /4
...
TBCTL |= MC_1+TBIE;
...
из h-ника
#define TASSEL_2            (2*0x100) /* Timer A clock source select: 2 - SMCLK */
#define TBSSEL_1            (1*0x0100)  /* Clock Source: ACLK  */

Наверное, сегодня я безнадежен? biggrin.gif

не сразу заметил в фразе что "у меня" biggrin.gif biggrin.gif
Go to the top of the page
 
+Quote Post
stalko
сообщение Sep 16 2009, 12:10
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 139
Регистрация: 5-05-05
Из: Зеленоград
Пользователь №: 4 762



Всем спасибо, проблему решил постановкой заглушки на NMI, оно и вызывало уход на Reset. Тема закрыта.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 23:49
Рейтинг@Mail.ru


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