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

 
 
> ведомый i2c на ATtiny2313, вопрос
Oleg_DI
сообщение Feb 18 2009, 18:59
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 15-10-07
Из: г.Екатеринбург
Пользователь №: 31 379



доброй ночи требуется связать по линии i2c несколько контроллеров .Мастер mega16 и ведомые ATtiny2313. порыл в инете ничего вразумительного нет. не берем во внимание аппаратный usi i2c
с ним макетировал, результат не очень. Возникла идея если воспользоваться RTC ds1307( в схеме она есть у мастера ) главный мастер записывает в её ОЗУ данные а остальные теперь мастера ATtiny2313
считывают по своим адресам данные.Мастера не начнут условия старт пока линия занята,это условие вместо синхронизации.
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 20)
defunct
сообщение Feb 18 2009, 23:35
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Oleg_DI @ Feb 18 2009, 20:59) *
Возникла идея если воспользоваться RTC ds1307( в схеме она есть у мастера ) главный мастер записывает в её ОЗУ данные а остальные теперь мастера ATtiny2313 считывают по своим адресам данные.

Вполне элегантно. Добавить еще линию по которой M16 будет сообщать всем Тиням, что данные положены - и будет совсем хорошо.

Цитата
Мастера не начнут условия старт пока линия занята,это условие вместо синхронизации.

Для M16 это не проблема, там аппаратная поддержка мультимастера так что все ОК.
А на Тинях придется реализовать "мультимастер" Вам самостоятельно - почитайте про этот режим в даташите (см. TWI модуль).
Реализовать его надо - потому что Вы не будете знать занята линия или свободна при одновременном старте нескольких мастеров.
Go to the top of the page
 
+Quote Post
Oleg_DI
сообщение Feb 19 2009, 03:30
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 15-10-07
Из: г.Екатеринбург
Пользователь №: 31 379



спасибо! пойду читать даташит
Go to the top of the page
 
+Quote Post
ARV
сообщение Feb 19 2009, 05:27
Сообщение #4


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

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(defunct @ Feb 19 2009, 02:35) *
Вполне элегантно. Добавить еще линию по которой M16 будет сообщать всем Тиням, что данные положены - и будет совсем хорошо.
у DS1307 есть выход, на котором можно получить 1 Гц импульсы - вот вам и сигнал... при нуле на этой линии контроллер данные кладет в DS1307, а при единице - другие оттуда читают... при желании можно сделать "вторичных" мастеров так, что они будут спустя определенный (разный) интервал после появления единицы обращаться к данным - никаких конфликтов не будет принципиально, можно избежать арбитража шины...


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Feb 19 2009, 11:05
Сообщение #5


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Oleg_DI @ Feb 18 2009, 18:59) *
..требуется связать по линии i2c несколько контроллеров. Мастер mega16 и ведомые ATtiny2313. Не берем во внимание аппаратный usi i2c с ним макетировал, результат не очень

Поясните, почему нельзя передавать не через DS1307, а напрямую из меги во все тайни по очереди или сразу всем? Передаёте адрес, потом данные. Нулевой адрес - для широковещания. И никаких проблем с коллизиями.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
defunct
сообщение Feb 19 2009, 11:49
Сообщение #6


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(ARV @ Feb 19 2009, 07:27) *
у DS1307 есть выход, на котором можно получить 1 Гц импульсы - вот вам и сигнал... при нуле на этой линии контроллер данные кладет в DS1307, а при единице - другие оттуда читают...

Да, так пожалуй будет лучше. Все МК сразу знают, что DS "фунциклирует".
При условии что одного обновления в сек. - достаточно.

Цитата
при желании можно сделать "вторичных" мастеров так, что они будут спустя определенный (разный) интервал после появления единицы обращаться к данным - никаких конфликтов не будет принципиально, можно избежать арбитража шины...

Практика показывает в мультимастере конфликты неизбежны, как мастеров по времени не разноси. Поэтому лучше сразу закладывать арбитраж.
Go to the top of the page
 
+Quote Post
Oleg_DI
сообщение Feb 21 2009, 12:13
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 15-10-07
Из: г.Екатеринбург
Пользователь №: 31 379



Цитата(=GM= @ Feb 19 2009, 16:05) *
Поясните, почему нельзя передавать не через DS1307, а напрямую из меги во все тайни по очереди или сразу всем? Передаёте адрес, потом данные. Нулевой адрес - для широковещания. И никаких проблем с коллизиями.

Всё дело что тогда нужен программный и2с для ведомых тини и все ресурсы пойдут туда. На тини собрана динамическая индикация.
Go to the top of the page
 
+Quote Post
e-serg
сообщение Feb 21 2009, 15:39
Сообщение #8


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

Группа: Участник
Сообщений: 97
Регистрация: 24-07-08
Из: Иркутск
Пользователь №: 39 180



Цитата(Oleg_DI @ Feb 21 2009, 20:13) *
Всё дело что тогда нужен программный и2с для ведомых тини и все ресурсы пойдут туда. На тини собрана динамическая индикация.

Был проект на Меге8, динамическая индикация, 24 диода, опрос матрицы клавиатуры, чтение DS1990
и слейв для 1-wire, устройство само ключом DS1990 прикидывалось. на индикацию не влияло.
i2c обслужить проще, чем 1-wire.
Go to the top of the page
 
+Quote Post
kanzler
сообщение Feb 24 2009, 05:43
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 27-02-06
Из: Екатеринбург
Пользователь №: 14 728



Цитата(Oleg_DI @ Feb 21 2009, 17:13) *
Всё дело что тогда нужен программный и2с для ведомых тини и все ресурсы пойдут туда. На тини собрана динамическая индикация.


Хмммм ... Олег, на какое растояние хотите тянуть i2c?
Go to the top of the page
 
+Quote Post
Oleg_DI
сообщение Feb 25 2009, 04:58
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 15-10-07
Из: г.Екатеринбург
Пользователь №: 31 379



Цитата(kanzler @ Feb 24 2009, 10:43) *
Хмммм ... Олег, на какое растояние хотите тянуть i2c?


Привет! на 20 см сейчас там сделан уарт +485 + wake . Задумка была сделать ведомые i2c программно, не получилось времени было мало, сделал в лоб чтобы не заморачиваться.
Сейчас вернулся к теме хочется сделать по правильному.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Feb 27 2009, 11:38
Сообщение #11


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Oleg_DI @ Feb 25 2009, 04:58) *
Задумка была сделать ведомые i2c программно, не получилось времени было мало, сделал в лоб чтобы не заморачиваться. Сейчас вернулся к теме хочется сделать по правильному

Почему всё-таки аппаратный ведомый TWI не подходит?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
defunct
сообщение Feb 27 2009, 12:10
Сообщение #12


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(=GM= @ Feb 27 2009, 13:38) *
Почему всё-таки аппаратный ведомый TWI не подходит?

Вероятно потому что в T2313 его нет.
Atmel предлагает использовать недоинтерфейс USI встроенный в этот МК для эмуляции аппаратного TWI. Мороки там и шансов на успех примерно столько же как и при программной реализации. (хотя наверное даже так - мороки больше, а шансов на успех меньше) sad.gif
Go to the top of the page
 
+Quote Post
=GM=
сообщение Feb 27 2009, 15:26
Сообщение #13


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(defunct @ Feb 27 2009, 12:10) *
Вероятно потому что в T2313 его нет. Atmel предлагает использовать недоинтерфейс USI встроенный в этот МК для эмуляции аппаратного TWI. Мороки там и шансов на успех примерно столько же как и при программной реализации. (хотя наверное даже так - мороки больше, а шансов на успех меньше)

Ну, названия TWI нет, думаю это патентные игры, но есть two-wire mode, которая по существу и является TWI. Какая там морока-то для слейва?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Feb 27 2009, 20:34
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(=GM= @ Feb 27 2009, 18:26) *
Ну, названия TWI нет, думаю это патентные игры, но есть two-wire mode, которая по существу и является TWI. Какая там морока-то для слейва?

У меня работает atmega8 в режиме слэйва. С точки зрения мастера - at24c01, правда с другим адресом. Уже годы катается. Никаких проблем. Сама она часы читает по I2C (DS1307), датчики температуры DS18b20 и освещённость определяет. Планировал и другие датчики поставить, но так руки и не дошли. smile.gif

Когда ставил - боялся проблем и сбоев. Нет. Всё прекрасно работает. Мастер правда софтовый.

А так как автор темы планирует - тоже нюансы есть.
Go to the top of the page
 
+Quote Post
defunct
сообщение Feb 28 2009, 00:02
Сообщение #15


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(=GM= @ Feb 27 2009, 17:26) *
Ну, названия TWI нет, думаю это патентные игры, но есть two-wire mode, которая по существу и является TWI. Какая там морока-то для слейва?

Почитайте более подробно про этот two-wire режим USI тиньки. Этот режим - костыль с помощью которого Atmel предлагает самостоятельно реализавать стейт машину I2C.
Кардинально отличается от TWI(полного аналога I2C) в Mega'х.
Go to the top of the page
 
+Quote Post
Oleg_DI
сообщение Feb 28 2009, 20:00
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 15-10-07
Из: г.Екатеринбург
Пользователь №: 31 379



Доброй ночи.спасибо за советы.Скорей всего буду менять процессор на мегу с аппаратным twi . хотел сделать простой малобюджетный ведомый дисплей с простой односторонней печатной платой,
а сейчас проект разрастается. Дело не в цене компанентов а в их множевственности и программных ресурсах. Интерфейс и2с в отличие от uart не критичен к частоте синхронизации.Это позволяет обойтись без кварца +ёмкости. корпус soic у тини2313 прост для самопальной печати. Получается что нет интерфейса для ведомых контроллеров малой степени интеграции и работы на
сверх малых расстояниях.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Feb 28 2009, 22:41
Сообщение #17


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(Oleg_DI @ Feb 28 2009, 20:00) *
Интерфейс и2с в отличие от uart не критичен к частоте синхронизации.Это позволяет обойтись без кварца +ёмкости. корпус soic у тини2313 прост для самопальной печати. Получается что нет интерфейса для ведомых контроллеров малой степени интеграции и работы на сверх малых расстояниях

Да ё-моё, у вас в руках обе стороны, и ведущая и ведомая, чем причитать, возьмите код Манчестер-II, он допускает ±25% разброса по скорости на периоде одного бита. К тому же будет достаточно одного провода. Реализуется одной левой.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Anato
сообщение Mar 1 2009, 00:40
Сообщение #18


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

Группа: Участник
Сообщений: 78
Регистрация: 22-01-07
Из: Москва
Пользователь №: 24 661



Не продуманный алгоритм работы всего устройства и отдельных блоков в часности, создает много проблем и домыслов. I2C придумали как межблочный интерфейс и справляется с этим он прекрасно. laughing.gif
Go to the top of the page
 
+Quote Post
ReAl
сообщение Mar 1 2009, 08:17
Сообщение #19


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(Oleg_DI @ Feb 28 2009, 22:00) *
Доброй ночи.спасибо за советы.Скорей всего буду менять процессор на мегу с аппаратным twi . хотел сделать простой малобюджетный ведомый дисплей с простой односторонней печатной платой,
а сейчас проект разрастается. Дело не в цене компанентов а в их множевственности и программных ресурсах.
Так "малобюджетный" или "дело не в цене" ?
На каких тиражах разница цены тини2313 и мега48 перекроет разницу в приседаниях вокруг USI в тини2313 ?
Возможны ли такие тиражи при "самопальной печати" ?
А если нужны небольшие "самопальнопечатные" тиражи, но разница цены как раз покрывает необходимый для пропитания в течении работы над проектом хлебушка - то не лучше ли всё равно сэкономить время, быстрее закончить этот проект и взяться за другой?

Так что решение менять тиньку на мегу (кстати, там где-то ещё тини48 на подходе - урезанная мега48) - правильное.

Цитата(Oleg_DI @ Feb 28 2009, 22:00) *
Интерфейс и2с в отличие от uart не критичен к частоте синхронизации.Это позволяет обойтись без кварца +ёмкости. корпус soic у тини2313 прост для самопальной печати. Получается что нет интерфейса для ведомых контроллеров малой степени интеграции и работы на сверх малых расстояниях.
Если очень хочется, то:
  • Уже советовали манчестер. Вполне можно, тем более, что микрочип уже выпускает EEPROM с таким интерфейсом.
  • Тот же UART можно применить в LIN-подобном режиме с синхробайтом, разброс скорости встроенного RC компенсируется на ура.
  • Довольно любопытная вещь object link (в приложении) - две двунаправленные линии, по(полу)битовая синхронизация с квитированием. Правда, в отличие от I2C - интерфейс точка-точка, не шинный. Простой, в прерываниях PCINT должен очень хорошо реализовываться. Скорость переменная, равна максимально возможной для данных комбинации ведущего и ведомого и данной их загрузки.

Прикрепленные файлы
Прикрепленный файл  OBJECTLK.PDF ( 89.54 килобайт ) Кол-во скачиваний: 36
 


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Mar 1 2009, 16:47
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Да и вообще м8 у нас дешевле чем м2313! Более массовая! Места на плате меньше занимает!

I2C хороший интерфейс, но медленоватый. Можно SPI приспособить, со своим защищённым протоколом.
Go to the top of the page
 
+Quote Post
Maik-vs
сообщение Mar 4 2009, 15:56
Сообщение #21


Местный
***

Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101



Цитата(SasaVitebsk @ Mar 1 2009, 19:47) *
I2C хороший интерфейс, но медленоватый. Можно SPI приспособить, со своим защищённым протоколом.


вообще-то у него ещё 2 расширения по скорости, если мне не изменяет моск, до нескольких мегабит.

Непонятно, почему недоинтерфейс USI в тиньках так пугает. Ну да, немного геморроя; но есть аппнота от атмеля, у меня всё поместилось в прерывания - строк 40 на ассемблере. Плюс засунуть данные в буфер - высунуть из буфера. А вот программная реализация слейва - гиморнее на порядок.
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 - 00:03
Рейтинг@Mail.ru


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