AlekseyPS 0 13 октября, 2006 Опубликовано 13 октября, 2006 · Жалоба Пытаюсь организовать 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 0 15 октября, 2006 Опубликовано 15 октября, 2006 · Жалоба перед sei() вставить: TWCR = (1 << TWEN); при каждой записи в TWCR не забывать устанавливать TWEN. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fredo 0 31 марта, 2008 Опубликовано 31 марта, 2008 · Жалоба Подскажите, есть вопрос по i2с в atmege. Какое максимальное расстояние между контроллерами допустимо при частоте порядка 100кГц? Есть ли какие то ограничения на топологию звезда/шина ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
QuickWitted 0 4 апреля, 2008 Опубликовано 4 апреля, 2008 (изменено) · Жалоба Какое максимальное расстояние между контроллерами допустимо при частоте порядка 100кГц? Зависит от экрана... (по спецификации линии должны чередоваться с землёй в плоском шлейфе) Есть ли какие то ограничения на топологию звезда/шина ? Естественно шина... (звезда глючить при выс частотах и больших расстояниях будет) А по первоначальной теме тут http://electronix.ru/forum/index.php?showt Изменено 4 апреля, 2008 пользователем QuickWitted Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ReAl 0 4 апреля, 2008 Опубликовано 4 апреля, 2008 · Жалоба Подскажите, есть вопрос по 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 Ом, поджтяжка одна на основном блоке (он и питание раздаёт). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться