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

 
 
> Работа с 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
Ответов
KARLSON
сообщение Oct 15 2010, 18:02
Сообщение #2


Знающий
****

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



Но результат то один и тот же!

Цитата(rezident @ Oct 15 2010, 21:59) *
Советую все же ознакомиться с оригинальной спецификацией I2C и реализовать функцию Bus clear. Весьма пригодится wink.gif

restart при зависании шины заложена.

Сообщение отредактировал KARLSON - Oct 15 2010, 18:03


--------------------
Кризис - это не отсутствие денег, а отсутствие идей! Учитесь и никаких кризисов не будет.
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 15 2010, 18:04
Сообщение #3


Гуру
******

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



Цитата(KARLSON @ Oct 16 2010, 00:00) *
Но результат то один и тот же!
При ошибке результат будет разный. Например, в случае двойного включения маски
Код
#define BIT1 0x02
#define BIT2 0x04

mask &= (BIT1 | BIT2 | BIT1)); //реализуется в mask &= 0x06;
mask &= (BIT1 + BIT2 + BIT1)); //реализуется в mask &= 0x08;
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   Это не ошибка! Это нормальные логичные результ...   Oct 15 2010, 18:32
- - chernenko   Вопрос по внешним прерываниям для Port1(2). Все вы...   Nov 4 2010, 15:31
- - rezident   Цитирую User's Guide: 8.2.6 P1 and P2 Interrup...   Nov 4 2010, 16:01
|- - 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 Текстовая версия Сейчас: 22nd July 2025 - 20:37
Рейтинг@Mail.ru


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