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

 
 
 
Reply to this topicStart new topic
> Помогите начинающему чайнику с msp430
4sak3n
сообщение May 15 2008, 18:24
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 10-03-08
Пользователь №: 35 771



Здравствуйте! Помогите пожалуйста разобраться, что я не так делаю.Есть простенькая прога для msp430:
Код
#include "msp430x20x3.h"
#include <intrinsics.h>

  unsigned int i = 0;

void main(void)
{
  WDTCTL= WDTPW+WDTHOLD;
  P1DIR|=0x01;
  TACCR0=65500;
  P1OUT|=0x01;
  TACTL|=TACLR+ID_2+TASSEL_2+ID_1;
  TACCTL0|=CCIE;
  

__enable_interrupt();

  
while (1);
  }

#ifdef __IAR_SYSTEMS_ICC__
#if __VER__ < 200
interrupt[TIMERA0_VECTOR] void TimerA0_ISR(void)
#else
#pragma vector=TIMERA0_VECTOR
__interrupt void TimerA0_ISR( void )
#endif
#endif

#ifdef __CROSSWORKS_MSP430
void TimerA0_ISR(void)   __interrupt[TIMERA0_VECTOR]
#endif

#ifdef __TI_COMPILER_VERSION__
__interrupt void TimerA0_ISR(void);
TIMERA0_ISR(TimerA0_ISR)
__interrupt void TimerA0_ISR(void)
#endif
  
{
  __disable_interrupt();
if (P1OUT == 0x00)

{ P1OUT|=0x01;
i+=500;
TACCR0-=i;
}
  else
  {P1OUT|=0x00;
    TACCR0-=i;
  }
__enable_interrupt();  
}

На обработчик прерывания можно в данном случае особо не обращать внимания, не в нем суть. Вроде как для инициализации таймера я пишу то, что надо. В симуляторе же (и на эмуляторе - ez430-F2013) видно ,что счетный регистр таймера TAR никак вообще не изменяется...
Соответственно вопросы:
1) Как заставить таймер таки считать?

2) Насчет прерывания - как проверить работу обработчика? (разрешение прерывания по сравнению - CCIE установлено), руками ставлю CCIFG (ведь он аппаратно ставиться, когда таймер досчитывает до значения в TACCR0), прерывания разрешаю - результат - никакой....

Помогите плз!
Go to the top of the page
 
+Quote Post
SSerge
сообщение May 15 2008, 19:39
Сообщение #2


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

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



1. В регистре TACTL при инициализации в биты MCx записывается 00, таймер при этом остановлен.

2. В обработчике прерывания нет необходимости писать __disable_interrupt(); Прерывания и так уже запрещены при входе в обработчик.
И разрешать в конце тоже не нужно. После исполнения команды reti будет восстановлено из стека прежнее содержимое регистра статуса (SR) и бит GIE в том числе, т.е. прерывания снова будут разрешены.

PS. Кстати, оператор
P1OUT|=0x00;
делает совсем не то на что Вы, должно быть, рассчитывали. По правде сказать, он совсем ничего не делает. smile.gif


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 15 2008, 19:42
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(4sak3n @ May 15 2008, 21:24) *
В симуляторе же (и на эмуляторе - ez430-F2013) видно ,что счетный регистр таймера TAR никак вообще не изменяется...
В иаровском симуляторе периферия не симулируется. Если не работает и в эмуляторе - надо искать ошибки в программе.

Цитата(4sak3n @ May 15 2008, 21:24) *
1) Как заставить таймер таки считать?
Правильно его принициализировать. Почитайте это сообщение, там как раз про использование "+" в формировании констант. Может ошибка в этом.

Цитата(4sak3n @ May 15 2008, 21:24) *
2) Насчет прерывания - как проверить работу обработчика? (разрешение прерывания по сравнению - CCIE установлено), руками ставлю CCIFG (ведь он аппаратно ставиться, когда таймер досчитывает до значения в TACCR0), прерывания разрешаю - результат - никакой....
В эмуляторе поставить точку останова на начало обработчика. Запустить.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Daria
сообщение May 18 2008, 10:04
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345



Здравствуйте. Я тоже начинающий, и еще более чайник smile.gif
Подскажите, пожалуйста, как в CCE 2.0 войти в режим симулятора, никак не могу понять. Вроде в свойствах проекта на режим отладки устанавливаю - "simulator", но при запуске debuge ничего не происходит. Есть какое-нибудь руководство по использованию самого CCE, у меня есть только техасовские руководства по компилятору и ассемблеру.
И еще - генератор такотовой частоты запускается сразу после подачи питания или его надо сначала сконфигурировать? Тот же вопрос про генератор опорного напряжения.
Если кто наткнется на эту тему - ответьте, пожалуйста. Спасибо. biggrin.gif
Go to the top of the page
 
+Quote Post
A R T
сообщение May 21 2008, 04:06
Сообщение #5


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

Группа: Участник
Сообщений: 99
Регистрация: 22-06-06
Из: Сарапула
Пользователь №: 18 275



Цитата(Daria @ May 18 2008, 14:04) *
Здравствуйте. Я тоже начинающий, и еще более чайник smile.gif

Здравствуйте!
Цитата(Daria @ May 18 2008, 14:04) *
Подскажите, пожалуйста, как в CCE 2.0 войти в режим симулятора, никак не могу понять. Вроде в свойствах проекта на режим отладки устанавливаю - "simulator", но при запуске debuge ничего не происходит. Есть какое-нибудь руководство по использованию самого CCE, у меня есть только техасовские руководства по компилятору и ассемблеру.

Как чайник чайнику рекомендую использовать для разработки кода и отладки IAR Embedded Workbench. Скачивание и лечение неоднократно обсуждалось...
Цитата(Daria @ May 18 2008, 14:04) *
И еще - генератор такотовой частоты запускается сразу после подачи питания или его надо сначала сконфигурировать?

После сигнала PUC (т.е. включения микроконтроллера) источником для MCLK и SMCLK (основные тактирующие сигналы контроллера) является DCOCLK (цифровой генератор) c частотой около 800 кГц.

Если это устраивает, то ничего конфигурировать не нужно, но если вам необходимо стабильное тактирование на определенной частоте от внешнего резонатора/генератора или требуется функционирование DCOCLK на другой частоте, следует сконфигурировать основной модуль тактирования с помощью регистров DCOCTL, BCSCTL1 и BCSCTL2.
Цитата(Daria @ May 18 2008, 14:04) *
Тот же вопрос про генератор опорного напряжения.

Выбор источника опорного напряжение, его включение и задание напряжения производится посредством регистра ADC10CTL0. Само-собой ничего работать не будет...
Цитата(Daria @ May 18 2008, 14:04) *
Если кто наткнется на эту тему - ответьте, пожалуйста. Спасибо. biggrin.gif


--------------------
Сделал трэш - разбудил Ктулху!!!
Go to the top of the page
 
+Quote Post
Daria
сообщение May 21 2008, 19:49
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345



Большое спасибо! Какой хороший ответ - все ясно и четко, именно для чайника. И именно о таком ответе я мечтала. smile.gif спасибо еще раз
Go to the top of the page
 
+Quote Post
Daria
сообщение May 25 2008, 19:16
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 229
Регистрация: 24-02-08
Пользователь №: 35 345



А вот еще вопрос от чайника. Подскажите, если кто наткнется, какую-нибудь отладку, чтобы работала с IARом в режиме эмулятора, и позволяла бы программировать прямо на плате, т.к.. контроллер(MSP430) уже напаян. Вот какие запросы smile.gif MSP-FET430PIF случаем не подойдет? Если подойдет, можно какую-нибудь ссылочку на схему, в руководстве на MSP-FET есть, но можно как-нибудь попроще и почетче?
Заранее спасибо, если кто ответит smile.gif
Go to the top of the page
 
+Quote Post
rezident
сообщение May 25 2008, 20:01
Сообщение #8


Гуру
******

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



Цитата(Daria @ May 26 2008, 01:16) *
А вот еще вопрос от чайника. Подскажите, если кто наткнется, какую-нибудь отладку, чтобы работала с IARом в режиме эмулятора, и позволяла бы программировать прямо на плате, т.к.. контроллер(MSP430) уже напаян. Вот какие запросы smile.gif MSP-FET430PIF случаем не подойдет? Если подойдет, можно какую-нибудь ссылочку на схему, в руководстве на MSP-FET есть, но можно как-нибудь попроще и почетче?
Заранее спасибо, если кто ответит smile.gif
Не вижу необходимости в создании кросспостов, которые, кстати, запрещены Правилами форума.
Go to the top of the page
 
+Quote Post
hendeman
сообщение Dec 7 2012, 08:22
Сообщение #9





Группа: Новичок
Сообщений: 3
Регистрация: 7-12-12
Пользователь №: 74 750



Здравствуйте! Зашиваю программу в контроллер m430g2553. В отладчике (программаторе) контроллер работает, а на макетной плате - нет. В чем дело?
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Dec 7 2012, 08:31
Сообщение #10


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

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



Цитата(hendeman @ Dec 7 2012, 12:22) *
Здравствуйте! Зашиваю программу в контроллер m430g2553. В отладчике (программаторе) контроллер работает, а на макетной плате - нет. В чем дело?

Для начала найдите 10 отличий.
Ну и поподробнее бы..
Что за отладчик? ланчпад?
Что за плата, что за программа. Кварцы, питание, блокировочные конденсаторы.. итд


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





Группа: Новичок
Сообщений: 3
Регистрация: 7-12-12
Пользователь №: 74 750



извиняюсь.. Вы совершенно правы программатор лаунчпад. Программа простая сробоскоп из 2-х светодиодов. На макетной плате только светодиоды и контроллер. Больше ничего не устонавливал. На солько мне известно , то наличие кварца не обязательно. Но я пробовал и сним ( 32 кГц) ничего не работает автономно от лаунчпада. Я так понимаю необходим какой-то обвес для контроллера. Вот и хочу. цзнать какой имнно нужен. Заранее спасибо.. Поиском не ползовался так как пишу с телефона.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Dec 7 2012, 08:50
Сообщение #12


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

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



Цитата(hendeman @ Dec 7 2012, 12:41) *
Я так понимаю необходим какой-то обвес для контроллера.

Для начала керамику 0,1мкФ непосредственно у ног питания, электролит 10мк тоже не помешает.


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





Группа: Новичок
Сообщений: 3
Регистрация: 7-12-12
Пользователь №: 74 750



Все, разобрался. На 16 пине (reset) должно быть питание ( через резак 47к)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 16:52
Рейтинг@Mail.ru


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