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

 
 
> Проблемы с TWI ATmega8-16PI
haker_fox
сообщение Oct 1 2005, 02:23
Сообщение #1


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



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

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


#include "i2c.h"

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

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

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

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

//Примем байта
unsigned char i2c_rx(void)
{
i2c_wait();
TWCR|=(1<<TWINT);
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;

Всем спасибо за ответы smile.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
haker_fox
сообщение Oct 4 2005, 02:55
Сообщение #2


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Неужели все-таки TWI глючит? Обидно smile.gif Все-таки хочется верить, что Atmel'овские МК идеальны smile.gifsmile.gifsmile.gif Вот USART там сделан не плохо (хотя буфер FIFO на 8-16 байт не помешал бы), а какие глюки с TWI? Может кто поделится??


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
m16
сообщение Oct 4 2005, 05:54
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 242
Регистрация: 27-01-05
Пользователь №: 2 225



Цитата(haker_fox @ Oct 4 2005, 06:55)
Неужели все-таки TWI глючит? Обидно smile.gif Все-таки хочется верить, что Atmel'овские МК идеальны smile.gifsmile.gifsmile.gif Вот USART там сделан не плохо (хотя буфер FIFO на 8-16 байт не помешал бы), а какие глюки с TWI? Может кто поделится??
*


я вешал pcf8583(rtc) + at24c256 писал на асме режим ведущего перед и приемн. работает без глюков на меге16 и меге 128 на 400кгц хотя у pcf8583 макс частота 100 кгц. правда пршлось повозиться при написании драйверов . основное -после анализа состояния шины twi принять правильное решение на выдачу сооотв команды ack, nack, stop ,start.
Может твои глюки связаны с монтажем? плохим питанием?
почитай здесь http://gaw.ru/html.cgi/txt/doc/micros/avr/arh128/18_6.htm
Go to the top of the page
 
+Quote Post



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

 


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


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