Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Hardware i2c in Atmega8
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
AlekseyPS
Пытаюсь организовать i2c аппаратно на Atmega8. (кварц 11,0592)
Не возникает признака завершения операции (TWINT) после того как выставляю START...
На линиях SCL, SDA появляется генерация ...

Вот код:
Процедура инициализации.

// set pull-up resistors on I2C bus pins
sbi(PORTC, 5); // i2c SCL on ATmega8
sbi(PORTC, 4); // i2c SDA on ATmega8
// set i2c bitrate 100k
сbi(TWSR, TWPS0);
сbi(TWSR, TWPS1);
outb(TWBR, 12);
sei();

void i2cSendStart(void)
TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN)
ожидаю когда прийдет признак выполнения команды ...
while (!(TWCR & (1<<TWINT)))
..... он так и не приходит ....
Как быть???
;
defunct
перед sei() вставить:

TWCR = (1 << TWEN);

при каждой записи в TWCR не забывать устанавливать TWEN.
fredo
Подскажите, есть вопрос по i2с в atmege. Какое максимальное расстояние между контроллерами допустимо при частоте порядка 100кГц? Есть ли какие то ограничения на топологию звезда/шина ?
QuickWitted
Цитата(fredo @ Apr 1 2008, 03:38) *
Какое максимальное расстояние между контроллерами допустимо при частоте порядка 100кГц?


Зависит от экрана...
(по спецификации линии должны чередоваться с землёй в плоском шлейфе)

Цитата(fredo @ Apr 1 2008, 03:38) *
Есть ли какие то ограничения на топологию звезда/шина ?


Естественно шина... (звезда глючить при выс частотах и больших расстояниях будет)

А по первоначальной теме тут
http://electronix.ru/forum/index.php?showt
ReAl
Цитата(fredo @ Apr 1 2008, 00:38) *
Подскажите, есть вопрос по i2с в atmege. Какое максимальное расстояние между контроллерами допустимо при частоте порядка 100кГц?

В даташите есть ограничение на ёмкость линии связи (ну, не совсем ограничение, просто один из параметров специфицируется на ёмкостях до 400пФ), там же формула по максимальному значению сопротивления подтяжки в зависимости от ёмкости шины, если то максимальное значение приравнять минимальному, то получим ограничение ёмкости шины для 100кГц около 1000пФ.
Даже если ограничится 400пФ и выбросить 100пФ на ёмкости выводов десятка повешенных на шину микросхем, при использовании кабеля UTP 5kat (где-то 50-55пФ/метр по спецификации, точно не помню) - выходит можно метров 5-6 суммарной длины кабелей сделать.
У меня работало где-то на 1-1.5 метрах суммарной длины просто скрученного в четвёрку МГТФ-а с тремя ведомыми устройствами, больше не пробовал.

Существует стандарт-не-стандарт-может-рекомендация ACCESS.bus - это применение I2C "на столе", "в комнате", мультимастерный вариант, там специфицирован даже разъём (GND,SCL,VCC,SDA) и формат кадра. Ограничений именно на длину там не помню, по ёмкоcти кажется те же 1000пФ, по сопротивлению - чтобы на дальнем конце VCC село не ниже 4,5В.
У каждого устройства на шине рекомендуют в обе линии врезать последовательные резисторы 56 Ом, поджтяжка одна на основном блоке (он и питание раздаёт).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.