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

 
 
> TWI у ATMega8 Нужна помощь!
Metallist64
сообщение Oct 8 2009, 10:06
Сообщение #1


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

Группа: Участник
Сообщений: 103
Регистрация: 29-01-08
Пользователь №: 34 558



Добрый день уважаемые знатоки!
При программировании интерфейса twi у ATMega8 столкнулся с проблемой.
Пытаюсь подключить датчик температуры LM75 по указанному интерфейсу.
Делаю вроде правильно:
1. Формирую стартовые условия.
2. После возникновения прерывания проверяю статусный регистр. Если битики TWS7...TWS3 дают чисто 0x08 то, посылаю байт адреса микросхемы (0х90)
3. После возникновения прерывания проверяю статусный регистр. Если битики TWS7...TWS3 дают чисто 0x18, посылаю байт указателя(0х00).
4. После возникновения прерывания проверяю статусный регистр. Если битики TWS7...TWS3 дают чисто 0x28... А они его не дают!!!
Уже замучился, никак не могу получить код 0х28 в статусном регистре.
Методом перебора нашел код, который тама получается: 0х10 - повстарт ??? причем он тут непонятно...
Кстати тоже самое было и с 1307, часы не ACKали байт указателя.
Обе линии подтянуты к питанию через 4.7 кОм.
Напряжение питания - 5В.
Если кто сталкивался с подобным, помогите плиз!

Вот код прерывания:

CODE
#pragma vector = TWI_vect
__interrupt void twi_interrupt(void)
{

if((0xf8&TWSR)==0x08)
{

buffer_1[0] = 0x9F;
TWDR = 0x90;
TWCR |= 0x84;
return;
}

if((0xf8&TWSR)==0x18)
{

buffer_1[1] = 0x25;
TWDR = 0x00;
TWCR |= 0x84;
return;
}

if((0xf8&TWSR)==0x28)
{

buffer_1[2] = 0x0D;
TWDR = 0x00;
TWCR |= 0x84;
return;
}
TWCR |= 0x94;
}
Go to the top of the page
 
+Quote Post



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

 


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


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