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

 
 
> Работа с MSP430x2xx, про всё семейство и все модули
KARLSON
сообщение Oct 15 2010, 05:48
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 604
Регистрация: 5-05-06
Из: Нижегородская обл.
Пользователь №: 16 819



Здравствуйте. Скажите пожалуйста, а в каком случае устанавливается бит UCBBUSY в регистре UCB0STAT модуля USCI в режиме I2C.
Дело вот в чём: В течении примерно часа происходит сбой на шине. Смотрю регистры и в каком месте произошёл сбой. Так вот, после успешного некоторого обмена с микросхемой слейвом, завершающийся операцией стоп, при следующем обмене происходит проверка занятости шины или то что SCL в нуле "if (UCB0STAT & (UCBBUSY + UCSCLLOW))".
Мастер на шине только я (контроллер), смотрю на шину осциллографом, на шине SDA и SCL уровень логический 1. А бит UCBBUSY установлен в 1 (все остальные в регистре нули). Помогает только путём возведения и опускания бита UCSWRST в регистре UCB0CTL1.

Кстати контроллер 430F2132


--------------------
Кризис - это не отсутствие денег, а отсутствие идей! Учитесь и никаких кризисов не будет.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Nov 4 2010, 16:01
Сообщение #2


Гуру
******

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



Цитирую User's Guide: 8.2.6 P1 and P2 Interrupts -> Interrupt Flag Registers P1IFG, P2IFG
Цитата
Only transitions, not static levels, cause interrupts. If any PxIFGx flag becomes set during a Px interrupt service routine, or is set after the RETI instruction of a Px interrupt service routine is executed, the set PxIFGx flag generates another interrupt. This ensures that each transition is acknowledged.
То бишь потери прерывания происходить не должно. Единственно, что это не гарантировалось во время непосредственной модификации регистров PxIFG. Этот баг под именем PORT3 описан где-то в errata для старых кристаллов.
Вот нашел его описание в MSP430F13x/14x/14x1 Device Erratasheet - SLAZ017A.PDF.
Цитата
PORT3 Port3 - Bug description:

Module: PORT1/2, Function: Port interrupts can get lost

Port interrupts can get lost if they occur during CPU
access of the P1IFG and P2IFG registers.

Workaround:
None

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- KARLSON   Работа с MSP430x2xx   Oct 15 2010, 05:48
- - rezident   Цитирую юзергайд Цитата("User's Guide MSP...   Oct 15 2010, 13:56
- - KARLSON   Рекомендацию я конечно же учту, но в чём разница р...   Oct 15 2010, 17:29
|- - CAHTA_1939   Цитата(KARLSON @ Oct 15 2010, 21:29) Реко...   Oct 15 2010, 17:40
|- - rezident   Цитата(KARLSON @ Oct 15 2010, 23:29) В по...   Oct 15 2010, 17:59
|- - Vladimir_T   Цитата(rezident @ Oct 15 2010, 20:59) Сов...   Nov 13 2010, 18:01
- - KARLSON   Но результат то один и тот же! Цитата(reziden...   Oct 15 2010, 18:02
|- - rezident   Цитата(KARLSON @ Oct 16 2010, 00:00) Но р...   Oct 15 2010, 18:04
- - KARLSON   Это не ошибка! Это нормальные логичные результ...   Oct 15 2010, 18:32
- - chernenko   Вопрос по внешним прерываниям для Port1(2). Все вы...   Nov 4 2010, 15:31
|- - chernenko   rezident, спасибо! А то мне после Atmel неприв...   Nov 4 2010, 16:08
- - chernenko   Буду благодарен, если поясните один такой момент р...   Nov 4 2010, 17:39
|- - rezident   Цитата(chernenko @ Nov 4 2010, 22:39) И ч...   Nov 4 2010, 17:50
- - chernenko   Спасибо, я так и предполагал. Уточнил для уверенно...   Nov 4 2010, 17:53


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

 


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


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