[an error occurred while processing this directive]
|
// Биты TWCR
#define TWINT 7
#define TWEA 6
#define TWSTA 5
#define TWSTO 4
#define TWWC 3
#define TWEN 2
#define TWIE 0
// Состояния
#define START 0x08
#define REP_START 0x10
// Коды статуса
#define MTX_ADR_ACK 0x18
#define MRX_ADR_ACK 0x40
#define MTX_DATA_ACK 0x28
#define MRX_DATA_NACK 0x58
#define MRX_DATA_ACK 0x50
// Подготовка аппаратного мастера I2C
void twi_init (void)
{
TWSR=0x00;
TWBR=0x20;
TWAR=0x00;
TWCR=0x04;
}
// Жду флажка // Стартовое условие if((TWSR != START)&&(TWSR != REP_START)) // Стоповое условие // Передача адреса TWDR = addr; if((TWSR != MTX_ADR_ACK)&&(TWSR != MRX_ADR_ACK)) // Передача байта данных TWDR = data; if(TWSR != MTX_DATA_ACK) // Чтение байта if(notlast) twi_wait_int(); *pByt = TWDR; if(((TWSR == MRX_DATA_NACK)&&(notlast == 0))||(TWSR == MRX_DATA_ACK)) // Передача в заданный адрес I2C nbytes байт while(nbytes--)
E-mail:
info@telesys.ru
static void twi_wait_int (void)
{
while (!(TWCR & (1<
// Возвращает не 0, если все в порядке
unsigned char twi_start (void)
{
TWCR = ((1<
twi_wait_int();
{
return 0;
}
return 255;
}
void twi_stop (void)
{
TWCR = ((1<
// Возвращает не 0, если все в порядке
unsigned char twi_addr (unsigned char addr)
{
twi_wait_int();
TWCR = ((1<
{
return 0;
}
return 255;
}
// Возвращает не 0, если все в порядке
unsigned char twi_byte (unsigned char data)
{
twi_wait_int();
TWCR = ((1<
{
return 0;
}
return 255;
}
// Возвращает не 0, если все в порядке
unsigned char twi_read (unsigned char * pByt, unsigned char notlast)
{
twi_wait_int();
{
TWCR = ((1<
else
{
TWCR = ((1<
{
return 255;
}
return 0;
}
void i2c_bytes (unsigned char addr, unsigned char sbaddr, unsigned char nbytes, ...)
{
va_list argptr;
char byt;
va_start(argptr, nbytes);
while(1)
{
if (!twi_start())
{
twi_stop();
continue;
}
if (!twi_addr(addr))
{
twi_stop();
continue;
}
break;
}
twi_byte(sbaddr);
{
byt = va_arg(argptr, char);
twi_byte(byt);
}
va_end(argptr);
twi_stop();
}
Ответы
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание