|
вопросы по TWI |
|
|
|
Aug 30 2005, 12:28
|
Участник

Группа: Новичок
Сообщений: 34
Регистрация: 12-03-05
Из: Новосибирск
Пользователь №: 3 288

|
сразу несколько вопросов 1. В схеме подключения TWI устройств в документации присутствуют подтягивающие резисторы. Какого они сопротивления? Также сказано, что В НЕКОТОРЫХ СЛУЧАЯХможно использовать внутренние подт резисторы взамен внешним. Что это за случаи? 2.Непонятно про блок согласования адреса (Address Match Unit). Не разобрался для чего он и что позволяет делать. 3.Если к шине подключено всего одно устройство, можно ли к нему обращаться без посылки адреса. И каким образом идет распределение адресов по устройствам? Как конкретное ус-во определяет, что обрааются именно к нему? 4.И для общего развития. Что можно подключить по TWI? например EEPROMы подключают.
заранее большое спасибо.
|
|
|
|
|
Aug 30 2005, 12:40
|

Участник

Группа: Свой
Сообщений: 44
Регистрация: 30-07-05
Из: Kyiv, Ukraine
Пользователь №: 7 211

|
1 - точно не помню спецификации i2c но, я у верен, что там поддягивающие резисторы намного меньшего сопротивления чем внутренние поддягивающие резисторы у AVR, след. AVRовские резисторы можно юзать токо в простейших случаях - при соединении небольшого ко-ва устройств на маленьких расстояниях (в пределах платы) 2 - он используется, если AVR работает в режиме подчиненного (slave) - и детектит, к нему или к другому AVR пытается обратится мастер. 3 - нельзя (такой стандарт)! Адреса устройствам назначает производитель устройства но иногда их можно подстраивать в небольшом диапазоне. Например в некоторых еепромках на наружу выведено несколько младших адресных линий, которые можно подключать к 0 или 1 по своему. 4 - все что имеет шину i2c: другой AVR в режиме слейва, часы реального времени, измерители температуры, АЦП, ЦАП, цифровые резисторы, регуляторы парамертов звука в аудио технике... короче - много чего
|
|
|
|
|
Aug 31 2005, 07:29
|

Шаман
     
Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221

|
Цитата(PowerF1 @ Aug 30 2005, 15:28) сразу несколько вопросов 1. В схеме подключения TWI устройств в документации присутствуют подтягивающие резисторы. Какого они сопротивления? Также сказано, что В НЕКОТОРЫХ СЛУЧАЯХможно использовать внутренние подт резисторы взамен внешним. Что это за случаи? ... Обычно номиналы лежат в пределах 1.5кОм - 2.2кОм для скоростей 100-400кГц. Внутренние резисторы AVR ничего не дают ввиду гораздо большего сопротивления, фронты сигналов будут слишком завалены.
|
|
|
|
|
Aug 31 2005, 11:33
|
Участник

Группа: Новичок
Сообщений: 34
Регистрация: 12-03-05
Из: Новосибирск
Пользователь №: 3 288

|
Большое спасибо за ответы. Я посмотрел доки на ееромы, нашел там про линии младших адресов. С подстройкой стало понятно, а где можно узнать адрес устройства (который, Вы говорите, назначает производитель устройства)? Может невнимательно смотрел, но в доках не увидел сего.
|
|
|
|
|
Aug 31 2005, 13:23
|
Участник

Группа: Новичок
Сообщений: 34
Регистрация: 12-03-05
Из: Новосибирск
Пользователь №: 3 288

|
Я вроде разобрался. К примеру, если это AT24C256, то она имеет два "подстроечных" пина A0 и А1. Старшие 5 бит адреса при этом фиксированы и равны 10100. Похоже, что для всей серии AT24Cxxx старшие 4 бита есть 1010. Посмотрел несколько док, везде эти старшие 4 бита неизменны.
|
|
|
|
|
Aug 31 2005, 15:59
|

Участник

Группа: Свой
Сообщений: 44
Регистрация: 30-07-05
Из: Kyiv, Ukraine
Пользователь №: 7 211

|
2 &-rey это вы какие еепромы имеете ввиду?  AT24Cxxx (покрайней мере AT24C04, с которой я работал) без проблем можно писать по-байтово.
|
|
|
|
|
Sep 1 2005, 06:12
|
Местный
  
Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064

|
Да, именно эти XXX. Дело в том, что для 04-й Старший байт адреса вы задаете в 1-м байте вместе с адресом девайса. Так что вы впринципе выбираете банк при адресации. А вот для 64, 128, 256 там адресация 2-мя байтами. Так вот если Вы к примеру собираетеся писать от адреса 3F до адреса 41 итого 3 байта, то нужно будет сначала его адресовать 3F записать 1 байт, потом адресовать 40 и дописать еще 2 байта. В противном случае эти 2 байта запишутся по адресам 00 и 01. Это впринципе описано в документации но кто же её читает
|
|
|
|
|
Sep 1 2005, 07:38
|
Частый гость
 
Группа: Свой
Сообщений: 114
Регистрация: 22-06-04
Пользователь №: 102

|
Цитата(PowerF1 @ Aug 30 2005, 15:28) сразу несколько вопросов 3.Если к шине подключено всего одно устройство, можно ли к нему обращаться без посылки адреса. И каким образом идет распределение адресов по устройствам? Как конкретное ус-во определяет, что обрааются именно к нему? Распределение адресов на шине для большинства популярных устройств стардантизовано разработчиком протокола(Philips) Поэтому к примеру EEPROM будет иметь одинаковую адресацию что у Atmel что у Micrоchip etc. То же самое и для часов RTC - Maxim и ST к примеру имеют одинаковый адрес
|
|
|
|
|
Jan 16 2006, 19:03
|

Местный
  
Группа: Свой
Сообщений: 274
Регистрация: 10-08-05
Из: Екатеринбург
Пользователь №: 7 517

|
У меня то же проблема с at24c256, для записи вроде с диаграммами разобрался, записываю побайтово (не постранично), а вот со чтением ни как не пойму что к чему....................... Мне надо считывать с начального адреса памяти микросхемы, и дo n-ого, но в диаграммах чтения не увидел байты адреса в которых указывается к какой ячейке идёт обращение  ........ Что делать??? Каким образом адрес задать???
|
|
|
|
|
Jan 17 2006, 08:30
|

Шаман
     
Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221

|
Цитата(*SERG @ Jan 16 2006, 21:03)  У меня то же проблема с at24c256, для записи вроде с диаграммами разобрался, записываю побайтово (не постранично), а вот со чтением ни как не пойму что к чему....................... Мне надо считывать с начального адреса памяти микросхемы, и дo n-ого, но в диаграммах чтения не увидел байты адреса в которых указывается к какой ячейке идёт обращение  ........ Что делать??? Каким образом адрес задать??? Адрес задаётся в процедуре записи, но сама запись не делается. Потом делается повторный старт и инициируется процедура чтения (с указанного ранее адреса). Далее всё как по маслу.
|
|
|
|
|
Jan 17 2006, 08:56
|

Местный
  
Группа: Свой
Сообщений: 274
Регистрация: 10-08-05
Из: Екатеринбург
Пользователь №: 7 517

|
Цитата(IgorKossak @ Jan 17 2006, 11:30)  Цитата(*SERG @ Jan 16 2006, 21:03)  У меня то же проблема с at24c256, для записи вроде с диаграммами разобрался, записываю побайтово (не постранично), а вот со чтением ни как не пойму что к чему....................... Мне надо считывать с начального адреса памяти микросхемы, и дo n-ого, но в диаграммах чтения не увидел байты адреса в которых указывается к какой ячейке идёт обращение  ........ Что делать??? Каким образом адрес задать??? Адрес задаётся в процедуре записи, но сама запись не делается. Потом делается повторный старт и инициируется процедура чтения (с указанного ранее адреса). Далее всё как по маслу. Понятно, спасибо!!! Ещё вот проблемка, на могу в AVRstudio перейти на адрес обработки прерывания TWI....... кусок проги (cvavr): adres_m=0x0000; pered_bait_mass_i2=0; mas_peredachi_i2[0]=0b10100001; mas_peredachi_i2[2]=*ukaz_m_hl; mas_peredachi_i2[1]=*++ukaz_m_hl; mas_peredachi_i2[3]=*++ukazatel[prinat_ussap-delta_hex]; mass_i2_peredan=0; TWCR=0B10100101;//формирую СТАРТ ....... ........ ......... col_pered_bait_simvola--; adres_m++; *--ukaz_m_hl; Задуманно так что после передачи условия СТАРТ, формируется прерывание и подпрограмма прерывания передаёт массив "mas_peredachi_i2" . Даг вот проблемма, уже ручками устанавливаю и сбрасываю бит TWINT - тишина, не заходит в подпрограмму обработки прерывания от TWI. Что может быть???
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|