Доброго времени суток! Не понимаю в чем трабл со встроенным TWI ATmega8-16PI
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено haker_fox 01 октября 2005 г. 06:05

Условие "СТАРТ" передается нормально. Далее передается байт адреса и ожидается установка бита TWINT в регистре TWCR и здесь программа затыкается. В чем может быть дело? Если связь с термодатчиком AD7415 не в порядке, то этот бит все равно должен устанавливаться же?!

Вот подпрограммы:
Модуль для работы с шиной I2C


#include "i2c.h"

//Генерирует условие СТАРТ
void i2c_start(void)
{
TWCR=((1< i2c_wait();
}

//Генерирует условие СТОП
void i2c_stop(void)
{
TWCR=((1<}

//Ожидание готовности шины
void i2c_wait(void)
{
while(!(TWCR&(1<}

//Передача байта
void i2c_tx(unsigned char data)
{
TWDR=data;
TWCR=((1< i2c_wait();
}

//Примем байта
unsigned char i2c_rx(void)
{
i2c_wait();
TWCR|=(1< i2c_wait();
return TWDR;
}


Вот фрагмент программы опроста датчика:
i2c_start(); //здесь все ОК
i2c_tx(THERMAL_H|WR); //здесь виснет

#define THERMAL 0x4A //address
#define WR 0

Вот инициализация TWI
TWBR=128;
TWCR=0;
TWSR=0;

Всем спасибо за ответы :)

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru