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

 
 
> TimerB и индикатор TIC85 на выводах P4.x в F149, непонятный глюк, отключается индикатор.
//Nikson
сообщение Jun 14 2006, 23:37
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 43
Регистрация: 26-01-06
Из: Минск, Беларусь
Пользователь №: 13 651



Будьте добры, помогите разобраться с возникшей проблемой:

Есть MSP430F149, к которому по I2C (программному) подключен индикатор TIC85 (аналог TIC32). В устройстве задействовано много (по крайней мере для меня, учитывая что это всего второй проект) периферийных модулей (АЦП,I2C,2xSPI,1-wire,UART итд). По отдельности всё это отлажено и работает как положено. Но при сборе в единую программу обнаружился вот какой глюк: через некоторое время (скорее всего произвольное, но не более минуты) после включения питания индикатор гаснет. При этом контроллер остаётся полностью работоспособным.

Сначала долгое время думал, что дело в индикаторе (неправильная инициализация, аппаратные проблемы итд итп.), что я сам где-то ошибочно выдаю команду отключения. Но ничего найти не удалось. Потом начал поочерёдно выкидывать блоки из программы и обнаружил, что проблема появляется тогда, когда я активирую прерывания от TimerB (собственно говоря, в конце концов в исходнике остался только вывод на индикатор и таймерsmile.gif). На всех ногах индикатора, подключенных к контроллеру вместо сигналов наблюдается постоянные 0.8В - похоже, что от этого он и отключается. Повторная инициализация индикатора (и настройка ног) позволяет запустить его опять на некоторое время, но это не выход из ситуации (сильное мерцание).

Функция этого таймера у меня - системные часы, тактируется от часового кварца, тикает постояно с интервалом в 0.1 секунду. Настраиваю вот так:
Код
void clock_init(void)
{
  TBCTL = TBSSEL_1 + MC_1;
  TBCCR0 = 3277;  // 0.1 s
  TBCCTL0 = CCIE;
}


а обрабатываю прерывание вот так: (это уже урезанный вариант smile.gif)
Код
#pragma vector = TIMERB0_VECTOR // 0.1 s system timer
__interrupt void timerB0_ISR(void)
{
  _NOP();
  _NOP();
  _NOP();
  TBCCTL1 &= ~CCIFG;
}


И теперь самое главное: индикатор как назло подключён к выводам, которые мультиплексированы с TBx (А TBoutH висит в воздухе). На ti.com нашёл bug report: TB3 - TimerB ports are switched to tristate independent of selected function (Port or TBx). Вот и думаю - это я с таймером где-нибудь сглупил или нарвался на эту ошибку и придётся переделывать плату...

Может, кто-нибудь сталкивался с подобным; подтвердите или опровергните мои предположения, plz...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


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


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