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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> ведомый 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
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

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

 


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


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