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

 
 
 
Reply to this topicStart new topic
> I2c+ЦАП
KIG
сообщение Jun 9 2009, 15:20
Сообщение #1


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

Группа: Участник
Сообщений: 115
Регистрация: 25-12-06
Пользователь №: 23 884



Здравствуйте.
При создании стартового события:
TWCR=(1<<TWEN)|(1<<TWINT)|(1<<TWSTA)
(TWSR&252) возвращает 0x08, а TWINT в единицу не устанавливается. Подскажите, пожалуйста, что не так?
Go to the top of the page
 
+Quote Post
OlegH
сообщение Jun 10 2009, 03:26
Сообщение #2


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

Группа: Свой
Сообщений: 186
Регистрация: 14-01-06
Из: Украина, г.Харьков
Пользователь №: 13 168



Цитата(KIG @ Jun 9 2009, 18:20) *
Здравствуйте.
При создании стартового события:
TWCR=(1<<TWEN)|(1<<TWINT)|(1<<TWSTA)
(TWSR&252) возвращает 0x08, а TWINT в единицу не устанавливается. Подскажите, пожалуйста, что не так?


Еще нужно (1<<TWEA).

Прилагаю файл своей библиотечки i2c - думаю должна помочь.

Ее использование выглядит примерно так:

// посылка команды в DS1621
BYTE DS1621_SendCommand(BYTE Cmd)
{
I2C_ErrCode err;
err = sI2C_StartMasterTx(DS1621_ADDR);
if (err>=I2C_UnknownStatus) return 1;
if (err==I2C_NotACK) { sI2C_Stop(); return 0xFF; }
// посылаем код команды
err = sI2C_MasterSend(Cmd); if (err) return 2;
return 0;
}

// чтение байта статуса
BYTE DS1621_GetStatus(BYTE *pStatus)
{
BYTE e = DS1621_SendCommand(0xAC); if (e) return e;
I2C_ErrCode err;
// делаем повторный старт - чтение
err = sI2C_StartMasterRx(DS1621_ADDR, 0); // Not Ack на ожидаемый байт данных
if (err) return 3;
// читаем байт
err = sI2C_MasterRead(pStatus, 0); if (err!=I2C_NotACK) return 4;
sI2C_Stop();
return 0;
}
Прикрепленные файлы
Прикрепленный файл  i2c.zip ( 1.34 килобайт ) Кол-во скачиваний: 29
 
Go to the top of the page
 
+Quote Post
defunct
сообщение Jun 14 2009, 04:08
Сообщение #3


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Олег Хохлов @ Jun 10 2009, 06:26) *
Еще нужно (1<<TWEA).

Зачем?! TWEA в master mode для START condition не нужен.
TWEA нужно устанавливать в "1" в Master режиме только для Master Receiver перед приемом НЕ ПОСЛЕДНЕГО байта данных.


Цитата(KIG @ Jun 9 2009, 18:20) *
TWINT в единицу не устанавливается. Подскажите, пожалуйста, что не так?

Вы его где-то сбрасываете.
Go to the top of the page
 
+Quote Post

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

 


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


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