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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> вопросы по TWI
PowerF1
сообщение Aug 30 2005, 12:28
Сообщение #1


Участник
*

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



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

заранее большое спасибо.
Go to the top of the page
 
+Quote Post
ValeraVi
сообщение Aug 30 2005, 12:40
Сообщение #2


Участник
*

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



1 - точно не помню спецификации i2c но, я у верен, что там поддягивающие резисторы намного меньшего сопротивления чем внутренние поддягивающие резисторы у AVR, след. AVRовские резисторы можно юзать токо в простейших случаях - при соединении небольшого ко-ва устройств на маленьких расстояниях (в пределах платы)
2 - он используется, если AVR работает в режиме подчиненного (slave) - и детектит, к нему или к другому AVR пытается обратится мастер.
3 - нельзя (такой стандарт)! Адреса устройствам назначает производитель устройства но иногда их можно подстраивать в небольшом диапазоне. Например в некоторых еепромках на наружу выведено несколько младших адресных линий, которые можно подключать к 0 или 1 по своему.
4 - все что имеет шину i2c: другой AVR в режиме слейва, часы реального времени, измерители температуры, АЦП, ЦАП, цифровые резисторы, регуляторы парамертов звука в аудио технике... короче - много чего smile.gif
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Aug 31 2005, 07:29
Сообщение #3


Шаман
******

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



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

Обычно номиналы лежат в пределах 1.5кОм - 2.2кОм для скоростей 100-400кГц.
Внутренние резисторы AVR ничего не дают ввиду гораздо большего сопротивления, фронты сигналов будут слишком завалены.
Go to the top of the page
 
+Quote Post
PowerF1
сообщение Aug 31 2005, 11:33
Сообщение #4


Участник
*

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



Большое спасибо за ответы.
Я посмотрел доки на ееромы, нашел там про линии младших адресов. С подстройкой стало понятно, а где можно узнать адрес устройства (который, Вы говорите, назначает производитель устройства)? Может невнимательно смотрел, но в доках не увидел сего.
Go to the top of the page
 
+Quote Post
andrvisht
сообщение Aug 31 2005, 11:35
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064



Как правило, они там обычно диаграмки приводят, в них и ответ можно увидеть. А что за EEPROM?
Go to the top of the page
 
+Quote Post
PowerF1
сообщение Aug 31 2005, 13:23
Сообщение #6


Участник
*

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



Я вроде разобрался.
К примеру, если это AT24C256, то она имеет два "подстроечных" пина A0 и А1.
Старшие 5 бит адреса при этом фиксированы и равны 10100.
Похоже, что для всей серии AT24Cxxx старшие 4 бита есть 1010. Посмотрел несколько док, везде эти старшие 4 бита неизменны.
Go to the top of the page
 
+Quote Post
ValeraVi
сообщение Aug 31 2005, 13:26
Сообщение #7


Участник
*

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



2 PowerF1
да, в даташите ищите описание байта slave address для еепрмки, в нем же - младший бит - направление (чтение / запись - R/W). Битами по старше могут быть A0, A1, A2 и т.д. в зависимости от еепромки - это и есть те выводы, которые выведены наружу и позволяющие подстраивать адрес...
Go to the top of the page
 
+Quote Post
andrvisht
сообщение Aug 31 2005, 13:34
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064



И еще маленькое дополнение. Обратите внимание что запись данных ведется постранично, в то время как чтение таких ограничений не имеет.
Go to the top of the page
 
+Quote Post
ValeraVi
сообщение Aug 31 2005, 15:59
Сообщение #9


Участник
*

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



2 &-rey
это вы какие еепромы имеете ввиду? smile.gif AT24Cxxx (покрайней мере AT24C04, с которой я работал) без проблем можно писать по-байтово.
Go to the top of the page
 
+Quote Post
andrvisht
сообщение Sep 1 2005, 06:12
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 298
Регистрация: 29-08-05
Пользователь №: 8 064



Да, именно эти XXX.
Дело в том, что для 04-й Старший байт адреса вы задаете в 1-м байте вместе с адресом девайса. Так что вы впринципе выбираете банк при адресации. А вот для 64, 128, 256 там адресация 2-мя байтами. Так вот если Вы к примеру собираетеся писать от адреса 3F до адреса 41 итого 3 байта, то
нужно будет сначала его адресовать 3F записать 1 байт, потом адресовать 40 и дописать еще 2 байта. В противном случае эти 2 байта запишутся по адресам 00 и 01. Это впринципе описано в документации но кто же её читает wink.gif
Go to the top of the page
 
+Quote Post
NickB
сообщение Sep 1 2005, 07:38
Сообщение #11


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

Группа: Свой
Сообщений: 114
Регистрация: 22-06-04
Пользователь №: 102



Цитата(PowerF1 @ Aug 30 2005, 15:28)
сразу несколько вопросов
3.Если к шине подключено всего одно устройство, можно ли к нему обращаться без посылки адреса. И каким образом идет распределение адресов по устройствам? Как конкретное ус-во определяет, что обрааются именно к нему?
*


Распределение адресов на шине для большинства популярных устройств
стардантизовано разработчиком протокола(Philips)
Поэтому к примеру EEPROM будет иметь одинаковую адресацию что у Atmel
что у Micrоchip etc. То же самое и для часов RTC - Maxim и ST к примеру имеют одинаковый адрес
Go to the top of the page
 
+Quote Post
*SERG
сообщение Jan 16 2006, 19:03
Сообщение #12


Местный
***

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



У меня то же проблема с at24c256, для записи вроде с диаграммами разобрался, записываю побайтово
(не постранично), а вот со чтением ни как не пойму что к чему.......................
Мне надо считывать с начального адреса памяти микросхемы, и дo n-ого, но в диаграммах чтения не увидел байты адреса в которых указывается к какой ячейке идёт обращение blink.gif ........
Что делать??? Каким образом адрес задать???
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jan 17 2006, 08:30
Сообщение #13


Шаман
******

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



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

Адрес задаётся в процедуре записи, но сама запись не делается.
Потом делается повторный старт и инициируется процедура чтения (с указанного ранее адреса).
Далее всё как по маслу.
Go to the top of the page
 
+Quote Post
*SERG
сообщение Jan 17 2006, 08:56
Сообщение #14


Местный
***

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



Цитата(IgorKossak @ Jan 17 2006, 11:30) *
Цитата(*SERG @ Jan 16 2006, 21:03) *

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

Адрес задаётся в процедуре записи, но сама запись не делается.
Потом делается повторный старт и инициируется процедура чтения (с указанного ранее адреса).
Далее всё как по маслу.

Понятно, спасибо!!!
Ещё вот проблемка, на могу в 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.
Что может быть???
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jan 17 2006, 09:15
Сообщение #15


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

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



Цитата
mas_peredachi_i2[0]=0b10100001;

А разве на Си можно писать двоичное представление числа? Насколько мне известно - нет. Возможно здесь ошибка программы.

P.S. Если я не ошибаюсь, то можно писать числа в шестнадцатиричном и десятичном представлениях...

Сообщение отредактировал haker_fox - Jan 17 2006, 09:19


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
*SERG
сообщение Jan 17 2006, 09:22
Сообщение #16


Местный
***

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



Цитата(haker_fox @ Jan 17 2006, 12:15) *
Цитата
mas_peredachi_i2[0]=0b10100001;

А разве на Си можно писать двоичное представление числа? Насколько мне известно - нет. Возможно здесь ошибка программы.

P.S. Если я не ошибаюсь, то можно писать числа в шестнадцатиричном и десятичном представлени...


У меня всё ОК на счёт этого, хоть 0ХАА, хоть 0B10101010, всё проходит без проблем. CVAVR.
Ещё вопросик попутно, после передачи байта видущим в нём возникает прерывание или нет???
Или передачу только путём проверки кода статуса можно проверять???
Контроллер АТмега16.

Сообщение отредактировал *SERG - Jan 17 2006, 09:25
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jan 17 2006, 09:32
Сообщение #17


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

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



К сожаленю я подзабыл особенности TWI, могу разве что порекомендовать сходить сюда:
http://www.gaw.ru/html.cgi/txt/doc/micros/...rh128/index.htm


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jan 17 2006, 09:36
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Прерывание возникает (если разрешено) после каждого этапа обмена,
старт-передача-прием-подтверждение...итп
Поэтому процедуру прерывания надо начинать с проверки кода статуса
(успешно ли выполнено заказанное )


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
*SERG
сообщение Jan 17 2006, 09:51
Сообщение #19


Местный
***

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



Цитата(haker_fox @ Jan 17 2006, 12:32) *
К сожаленю я подзабыл особенности TWI, могу разве что порекомендовать сходить сюда:
http://www.gaw.ru/html.cgi/txt/doc/micros/...rh128/index.htm

Там уже был........ smile.gif

Прерывание возникает (если разрешено) после каждого этапа обмена,
старт-передача-прием-подтверждение...итп
Поэтому процедуру прерывания надо начинать с проверки кода статуса
(успешно ли выполнено заказанное )

Ок. Понятно. Спасибо.

С построением протокола вроде разобрался. Спасибо всем.

Даг что ж всётаки с AVRSTUDIO делать то???
Или это глюк очередной sad.gif
Go to the top of the page
 
+Quote Post
DeXteR
сообщение Jan 17 2006, 13:51
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 319
Регистрация: 2-08-05
Из: Одесса
Пользователь №: 7 287



[/quote]
Даг что ж всётаки с AVRSTUDIO делать то???
Или это глюк очередной sad.gif
[/quote]

Попробуй промоделировать в Proteus
У меня модель на Атмеге16 + АТ2404 + I2C монитор (тулза такая) Пашет аж бегом =)
Прога на АСМ Версия протеуса 6.73 СП3 Глюков незамечено =)
Go to the top of the page
 
+Quote Post
*SERG
сообщение Jan 17 2006, 15:14
Сообщение #21


Местный
***

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



[quote name='DeXteR' date='Jan 17 2006, 16:51' post='78823']
[/quote]
Даг что ж всётаки с AVRSTUDIO делать то???
Или это глюк очередной sad.gif
[/quote]

Попробуй промоделировать в Proteus
У меня модель на Атмеге16 + АТ2404 + I2C монитор (тулза такая) Пашет аж бегом =)
Прога на АСМ Версия протеуса 6.73 СП3 Глюков незамечено =)
[/quote]
biggrin.gif Мысли читаешь!!!
Уже попробовал и хотел написать в протеусе всё работает.

Правдо взял кусок программы, который именно отвечает за общение по TWI.
А вот полностью прогу там прогнать не получается, прога ну 4кило не больше....coff (CVAVR) фаил загружаю (больше ничего не настраиваю и не подключаю). Может ещё какие настройки надо произвести???
Мелкие программки работают чётко, а вот побольше ерундят. Что делать???
Подскажите................, будте так любезны smile.gif
Go to the top of the page
 
+Quote Post
DeXteR
сообщение Jan 17 2006, 16:47
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 319
Регистрация: 2-08-05
Из: Одесса
Пользователь №: 7 287



А как именно ерундят ??
Чего делают нетак ??


Модели в протеусе довольно таки неплохи но всеже - модели
Они имеют ограничения и глюки ...

Я через коф формат неработал
Пробывал через EWAVR и через
Хекс (АСМ) Есть там глюк один с портом
С (2 ноги нехотят на вывод работать) + УСАРТ непашет нормально (переделан в УАРТ)
Ещо мне непонравилось что после вкл питания память (озу) имеет значения 0 а не FF (или мусор) как в реале.

Есть ещо глюк с режимами таимера 1
чтото он помоиму нелюбит шим с переменной частотой и скважностью

Больше глюков ненаблюдал

У меня пашет прога на 16 килобайт на АСМ под мегу 32 как в протеусе так и в жизни =)

Счас учусь писать на Си
сидю с Протеусом Макетом (в протеусе нету датафлешки) и EWAVR

А частоту процессора указал ???
Go to the top of the page
 
+Quote Post
bodja74
сообщение Jan 17 2006, 18:11
Сообщение #23


Знающий
****

Группа: Свой
Сообщений: 543
Регистрация: 22-10-05
Пользователь №: 9 984



Цитата(*SERG @ Jan 17 2006, 18:14) *
Правдо взял кусок программы, который именно отвечает за общение по TWI.
А вот полностью прогу там прогнать не получается, прога ну 4кило не больше....coff (CVAVR) фаил загружаю (больше ничего не настраиваю и не подключаю). Может ещё какие настройки надо произвести???
Мелкие программки работают чётко, а вот побольше ерундят. Что делать???
Подскажите................, будте так любезны smile.gif


Если чисто программные глюки ,при построении больших программ как правило это ошибки
связанные с пересечением одних и тех же переменных в разных подпрограммах,не стесняйтесь широко использовать в качестве переменных ОЗУ и переносить их значения в другие подпрограммы а регистры использовать только внутри одной подпрограммы,реже ошибка -переполнение стека,ошибки как правило -это вызов подпрограммы заместь перехода на метку.
Go to the top of the page
 
+Quote Post
*SERG
сообщение Jan 18 2006, 03:29
Сообщение #24


Местный
***

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



Ага...........спасибо!!!
И в дополнение......
выяснилось что Proteusб любит аккуратность, при создании coff файлов в CVAVR надо чтоб при компиляции не было ни каких Warnings ов.
Go to the top of the page
 
+Quote Post

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

 


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


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