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

 
 
 
Reply to this topicStart new topic
> MSP430 работа с таймером, Помогите разрешить проблемы с таймером, как заставить его работать
Timur1992
сообщение Dec 12 2013, 11:19
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 12-12-13
Пользователь №: 79 595



smile3046.gif Вообщем извиняюсь за свою глупость, я не понимаю почему на MSP430F1611 у меня не работает таймер.
Я прочитал уже:
http://we.easyelectronics.ru/msp430/uroki-...09-taymery.html
http://habrahabr.ru/post/160769/
Вообщем может у кого завалялась прошивка с мигающими светодиодами подходящая для это микроконтроллера!?
Мне просто нужна мигалка на таймере для этого микроконтроллер. Что посидеть посмотреть на рабочий код и понять свой ошибки.
В заранее благодарен.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Dec 12 2013, 11:28
Сообщение #2


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

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



А без таймера уже мигает?


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





Группа: Новичок
Сообщений: 5
Регистрация: 12-12-13
Пользователь №: 79 595



Цитата(MrYuran @ Dec 12 2013, 17:28) *
А без таймера уже мигает?


Без таймера не мигает. Ну если конечно вместо таймера задержку не использовать.
А мне надо именно с таймером, чтоб понять как он работает. Один нормальный рабочий пример чтоб я посидел и подумал :D
Go to the top of the page
 
+Quote Post
mib383
сообщение Dec 13 2013, 05:49
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 4-04-12
Пользователь №: 71 177



Вот ссылка на примеры кода для твоего msp430 от производителя http://www.ti.com/lit/zip/slac015.
Там найдешь примеры для работы с таймером и, как раз, подумаешь почему не работает у тебя.

А вообще очень полезно внимательно мануал прочитать, сразу понимание резко улучшится.

Сообщение отредактировал mib383 - Dec 13 2013, 05:52
Go to the top of the page
 
+Quote Post
Timur1992
сообщение Dec 18 2013, 19:58
Сообщение #5





Группа: Новичок
Сообщений: 5
Регистрация: 12-12-13
Пользователь №: 79 595



Цитата(mib383 @ Dec 13 2013, 11:49) *
Вот ссылка на примеры кода для твоего msp430 от производителя http://www.ti.com/lit/zip/slac015.
Там найдешь примеры для работы с таймером и, как раз, подумаешь почему не работает у тебя.

А вообще очень полезно внимательно мануал прочитать, сразу понимание резко улучшится.

Спасибо, уже побывал, примеры от производителя не компилировался.

Вообщем я сидел, читал русское руководство к msp430x1xxx, и кое что стало проясняться
Я написал такую вот программу мигалка-метроном, но либо она не работает, либо она работает не корректно ><
Можете посмотреть код?
На изменение значение TACCR0 практический не какой реакций.

Код
#include <io.h>

void timerA_init(){
_BIC_SR(0x0020);
BCSCTL2 =0;
BCSCTL1 = 0xC4;
TACTL = TACLR; // TACTL регистр управления таймеро А, TACLR очистка таймера А
TACCTL0 = 0;  // управления захватом сравнением
TACCR0 = 0x0F0; // захват/сравнение таймер А
TACTL =0x3F0;
//TACTL =0x113;
}

int main() {

WDTCTL = WDTPW + WDTHOLD;
P1SEL&=~(0xFF);
P1DIR |= 0x1C;     //умераций с конца
P5SEL&=~(0xFF);
P5DIR |= 0xFF;

while(1){
timerA_init();
TACCTL0 &= ~CCIFG;
P1OUT ^= 0xFF;
P5OUT ^= 0xFF;

}

return 0;
}
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Dec 19 2013, 07:58
Сообщение #6


Гуру
******

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



Цитата(Timur1992 @ Dec 18 2013, 22:58) *
Спасибо, уже побывал, примеры от производителя не компилировался.

Какие были ошибки ?

Цитата(Timur1992 @ Dec 18 2013, 22:58) *
Можете посмотреть код?

Ужос-ужос. Он же в инициализации болтается бесконечно.

Tip: напишите внятные комментарии к каждой строке, не просто, что делаете, а зачем.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
PRidon
сообщение Dec 19 2013, 09:19
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 8-10-12
Пользователь №: 73 855



Код
#include <io.h>


_BIC_SR(0x0020);

Не понял что вот это за строчка. Если бы тут стоял бит программа бы и не дошла до этого места.
По шагам смотрел чего и как?
Как по виду, так у тебя бы постоянно крутилось в while(1){}. А с виду просто горение светодиода.
У тебя ничего схватывать/сравнивать не будет. Ты же его выключаешь : TACCTL0 = 0;
Определись с источником тактирования. Что ты хочешь от INCLK?

Ну и да. На лицо полное непонимание работы МК.
Go to the top of the page
 
+Quote Post
Timur1992
сообщение Dec 19 2013, 18:53
Сообщение #8





Группа: Новичок
Сообщений: 5
Регистрация: 12-12-13
Пользователь №: 79 595



Всем спасибо, все свободный!
В итоге сам нашел нормальный пример, буду его анатомировать :D

Код
#include  <signal.h>
#include  <io.h>

int main(void)
{
  WDTCTL = WDTPW + WDTHOLD;             // Stop WDT
  TACTL = TASSEL1 + TACLR;              // SMCLK, clear TAR
  CCTL0 = CCIE;                         // CCR0 interrupt enabled
  CCR0 = 0xFFF;
  P1DIR |= 0xFF;                        // P1.1 output
  TACTL |= MC1;                         // Start Timer_A in continuous mode
  _EINT();                              // Enable interrupts

  for (;;)                              
  {
    _BIS_SR(CPUOFF);                    // CPU off
    _NOP();                             // Required only for C-spy
  }
  return 0;
}

// Timer A0 interrupt service routine
interrupt(TIMERA0_VECTOR) Timer_A (void)
{
  P1OUT ^= 0xFF;                        // Toggle P5.1
CCR0 += 0xFFFF;                        // Add Offset to CCR0
}

interrupt(TIMERA1_VECTOR) Timer_A (void)
{
  P1OUT ^= BIT3;                        // Toggle P5.1
CCR0 += 0xFFF6;                        // Add Offset to CCR0
}
Go to the top of the page
 
+Quote Post
rezident
сообщение Dec 20 2013, 21:07
Сообщение #9


Гуру
******

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



Цитата(Timur1992 @ Dec 19 2013, 23:53) *
В итоге сам нашел нормальный пример, буду его анатомировать :D

Было бы лучше и гораздо полезнее, если бы вы вместо анатомирования чужих программ, читали вдумчиво и внимательно основной документ MSP430x1xx Family User's Guide (Rev. F) - slau049f.pdf и потихоньку писали свою программу. Если проблема с аглицким, то вот тут про таймер в MSP430 на русском. Или поищите в сети тот же перевод User's Manual на русский из серии библиотеки Компела "Семейство микроконтроллеров MSP430x1xx: Руководство пользователя".
Go to the top of the page
 
+Quote Post
Timur1992
сообщение Dec 21 2013, 03:45
Сообщение #10





Группа: Новичок
Сообщений: 5
Регистрация: 12-12-13
Пользователь №: 79 595



Цитата(rezident @ Dec 21 2013, 03:07) *
Было бы лучше и гораздо полезнее, если бы вы вместо анатомирования чужих программ, читали вдумчиво и внимательно основной документ MSP430x1xx Family User's Guide (Rev. F) - slau049f.pdf и потихоньку писали свою программу. Если проблема с аглицким, то вот тут про таймер в MSP430 на русском. Или поищите в сети тот же перевод User's Manual на русский из серии библиотеки Компела "Семейство микроконтроллеров MSP430x1xx: Руководство пользователя".

Было бы еще лучше если бы и свой процессор разработал, который был бы мне понятней так как соответствовал моему текущему когнитивному опыту :D
А так я нашел наилучший вариант для себя. Берем машинку разбираем и смотрим как она работает, параллельно увеличиваем понимание документацией.
Люблю исследование! :D
Go to the top of the page
 
+Quote Post
BigallS
сообщение Dec 23 2013, 08:42
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 23-03-11
Пользователь №: 63 817



Цитата(Timur1992 @ Dec 21 2013, 07:45) *
Было бы еще лучше если бы и свой процессор разработал, который был бы мне понятней так как соответствовал моему текущему когнитивному опыту :D
А так я нашел наилучший вариант для себя. Берем машинку разбираем и смотрим как она работает, параллельно увеличиваем понимание документацией.
Люблю исследование! :D


Очень хороший сайт по MSP430 посмотри, в частности по таймеру http://www.shelezyakin.ru/?p=1135
http://www.shelezyakin.ru/?p=1135
Go to the top of the page
 
+Quote Post
Cruz21
сообщение Jan 7 2014, 16:32
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 43
Регистрация: 23-01-13
Пользователь №: 75 313



Код
TACTL = TACLR; // TACTL регистр управления таймеро А, TACLR очистка таймера А

ты просто таймер не включил, т.е не присвоил нужные регистры

TACTL – Timer_A Control Register, Регистр управления Таймера А. Используется для связи таймера с тактовыми сигналами и выбора режимов работы.
TASSELx, биты 8 и 9, указывают таймеру, какой из тактовых сигналов использовать.
IDx, биты 6 и 7, указывают, какой делитель частоты тактового сигнала использовать, 2, 4 или 8. Делится частота, полученная уже после применения делителя в самом генераторе тактового сигнала.
MCx, биты 4 и 5, указывают на режим работы таймера. Если они равны 0 (стоит по умолчанию) таймер полностью остановлен.
TACLR, бит 2. Если в него вписать 1, это приведет к сбросу таймера. Микроконтроллер автоматически вписывает в этот бит 0, после перезапуска таймера.
TAIE и TAIFG, биты 0 и 1, соответственно. Контролируют прерывание таймера, об этом чуть ниже.

Сообщение отредактировал Cruz21 - Jan 7 2014, 16:34
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 4th August 2025 - 18:32
Рейтинг@Mail.ru


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