|
Условие "СТАРТ" передается нормально. Далее передается байт адреса и ожидается установка бита TWINT в регистре TWCR и здесь программа затыкается. В чем может быть дело? Если связь с термодатчиком AD7415 не в порядке, то этот бит все равно должен устанавливаться же?!
Вот подпрограммы:
Модуль для работы с шиной I2C
#include "i2c.h"
//Генерирует условие СТАРТ //Генерирует условие СТОП //Ожидание готовности шины //Передача байта //Примем байта #define THERMAL 0x4A //address Вот инициализация TWI Всем спасибо за ответы :)
E-mail:
info@telesys.ru
void i2c_start(void)
{
TWCR=((1<
}
void i2c_stop(void)
{
TWCR=((1<
void i2c_wait(void)
{
while(!(TWCR&(1<
void i2c_tx(unsigned char data)
{
TWDR=data;
TWCR=((1<
}
unsigned char i2c_rx(void)
{
i2c_wait();
TWCR|=(1<
return TWDR;
}
Вот фрагмент программы опроста датчика:
i2c_start(); //здесь все ОК
i2c_tx(THERMAL_H|WR); //здесь виснет
#define WR 0
TWBR=128;
TWCR=0;
TWSR=0;
Ответы