Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/16: Рейтинг темы: голосов - 16, средняя оценка - 4.63
wf778899
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 10
1

Модуль TWI

24.10.2013, 14:15. Просмотров 2800. Ответов 4
Метки нет (Все метки)

Привет всем. Копаюсь с TWI в ATmega8, с этим модулем опыта у меня нет, поэтому закопался в начале. Работа с модулем, как я понимаю, основана на прерываниях и на считывании TWSR после каждого события. Если прерывания по какой-то причине невозможны, надо постоянно следить за флагом прерывания TWINT. Что-то ничего у меня не вышло. Следить получилось только за регистром состояния. Работаю в IARе 5.51. Ниже - примитивные наброски:

#include <iom8.h>
#include <intrinsics.h>
#define ENABLE_BIT_DEFINITIONS

int main()
{
DDRC = 0xFF;
DDRB = 0xFF;

//Задаём битрейт
TWBR = 0x10;
TWSR &= 0xF8;

//Формируем СТАРТ
TWCR = (1<<5)|(1<<7)|(1<<0)|(1<<2); //Установка TWSTA, TWIE, TWEN, сброс TWINT
while(TWSR != 0x08); //Ждём статус "СТАРТ сформирован"

//Передаём команду
TWDR = 0x90;
TWCR = (1<<7)|(1<<0)|(1<<2); //Установка TWIE, TWEN, сброс TWINT
while(TWSR != 0x18); //Ждём статус "Команда передана"

//?????????????????

while(1);

return 0;
}

Старт у меня формируется, а вот с командой ничего не получается. В циклах я слежу за реггистром состояния будучи уверен, что появится именно то состояние TWSR, которое указано в условии. Покажите кто-нибудь, пожалуйста, как здесь правильно работать?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2013, 14:15
Ответы с готовыми решениями:

TWI
Всем привет) Подскажите, пожалуйста, ошибку. Сразу скажу, сам искал, читал, ни...

SPI v.s. TWI
Задумался об организации совместной работы 2-х платок на атмегах-сестрах (48 и...

Stop состояние TWI
Ребята, а можно ли как-то без введения флага определить что произошло...

Atmega8 & TWI/I2C
День добрый. Уже пару часов ковыряюсь, не могу разобраться, почему не...

Не проходит инициализация TWI
Добрый день! Мучаюсь с TWI Хочу в учебных целях подключить внешнюю память...

4
OtixPM
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 5,483
24.10.2013, 14:33 2
Цитата Сообщение от wf778899
Копаюсь с TWI
... ...
Покажите кто-нибудь, пожалуйста, как здесь правильно работать?
"Правильно работать" - это поиск по форуму ;-)
Вот этой и этой темы imho достаточно, чтобы запустить TWI на любой ATmega.
0
wf778899
0 / 0 / 0
Регистрация: 10.07.2014
Сообщений: 10
24.10.2013, 15:48 3
Не помогло. Вопрос у меня в другом - почему после формирования СТАРТА TWI уже ни на что не реагирует? Пробовал работать по прерываниям - всё прекрасно (почти). Но мне нужно написать код без прерываний. Может кто-нибудь показать, как тут следить за флагом и за состоянием TWSR?
0
OtixPM
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 5,483
24.10.2013, 16:23 4
Цитата Сообщение от wf778899
Не помогло. Вопрос у меня в другом - почему после формирования СТАРТА TWI уже ни на что не реагирует? Пробовал работать по прерываниям - всё прекрасно (почти). Но мне нужно написать код без прерываний. Может кто-нибудь показать, как тут следить за флагом и за состоянием TWSR?
По ссылкам есть примеры кода без прерываний, и те примеры рабочие.
0
OtixPM
0 / 0 / 0
Регистрация: 11.01.2013
Сообщений: 5,483
24.10.2013, 16:29 5
Цитата Сообщение от wf778899
В циклах я слежу за реггистром состояния будучи уверен, что появится именно то состояние TWSR, которое указано в условии.
Кстати, в TWSR битов состояния TWI-машины всего пять (старшие). Как правило, TWSR после чтения маскируют по 0xF8.
0
24.10.2013, 16:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2013, 16:29

TWI не хочет работать
ATmego328p, код следующий. После старта он по идее должен выключить лампочку. ...

CodeVisionAVR функции TWI
Здравствуйте! Есть у кого нибудь, или, если знаете, где взять подскажите ссылку...

Работа с TWI (I2C) в ATmega8
Здравствуйте, нуждаюсь в помощи знающих людей, так как разобраться самому увы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru