|
ведомый i2c на ATtiny2313, вопрос |
|
|
|
Feb 18 2009, 18:59
|
Участник

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

|
доброй ночи требуется связать по линии i2c несколько контроллеров .Мастер mega16 и ведомые ATtiny2313. порыл в инете ничего вразумительного нет. не берем во внимание аппаратный usi i2c с ним макетировал, результат не очень. Возникла идея если воспользоваться RTC ds1307( в схеме она есть у мастера ) главный мастер записывает в её ОЗУ данные а остальные теперь мастера ATtiny2313 считывают по своим адресам данные.Мастера не начнут условия старт пока линия занята,это условие вместо синхронизации.
|
|
|
|
|
Feb 18 2009, 23:35
|

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

|
Цитата(Oleg_DI @ Feb 18 2009, 20:59)  Возникла идея если воспользоваться RTC ds1307( в схеме она есть у мастера ) главный мастер записывает в её ОЗУ данные а остальные теперь мастера ATtiny2313 считывают по своим адресам данные. Вполне элегантно. Добавить еще линию по которой M16 будет сообщать всем Тиням, что данные положены - и будет совсем хорошо. Цитата Мастера не начнут условия старт пока линия занята,это условие вместо синхронизации. Для M16 это не проблема, там аппаратная поддержка мультимастера так что все ОК. А на Тинях придется реализовать "мультимастер" Вам самостоятельно - почитайте про этот режим в даташите (см. TWI модуль). Реализовать его надо - потому что Вы не будете знать занята линия или свободна при одновременном старте нескольких мастеров.
|
|
|
|
|
Feb 19 2009, 03:30
|
Участник

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

|
спасибо! пойду читать даташит
|
|
|
|
|
Feb 19 2009, 11:49
|

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

|
Цитата(ARV @ Feb 19 2009, 07:27)  у DS1307 есть выход, на котором можно получить 1 Гц импульсы - вот вам и сигнал... при нуле на этой линии контроллер данные кладет в DS1307, а при единице - другие оттуда читают... Да, так пожалуй будет лучше. Все МК сразу знают, что DS "фунциклирует". При условии что одного обновления в сек. - достаточно. Цитата при желании можно сделать "вторичных" мастеров так, что они будут спустя определенный (разный) интервал после появления единицы обращаться к данным - никаких конфликтов не будет принципиально, можно избежать арбитража шины... Практика показывает в мультимастере конфликты неизбежны, как мастеров по времени не разноси. Поэтому лучше сразу закладывать арбитраж.
|
|
|
|
|
Feb 21 2009, 12:13
|
Участник

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

|
Цитата(=GM= @ Feb 19 2009, 16:05)  Поясните, почему нельзя передавать не через DS1307, а напрямую из меги во все тайни по очереди или сразу всем? Передаёте адрес, потом данные. Нулевой адрес - для широковещания. И никаких проблем с коллизиями. Всё дело что тогда нужен программный и2с для ведомых тини и все ресурсы пойдут туда. На тини собрана динамическая индикация.
|
|
|
|
|
Feb 21 2009, 15:39
|
Частый гость
 
Группа: Участник
Сообщений: 97
Регистрация: 24-07-08
Из: Иркутск
Пользователь №: 39 180

|
Цитата(Oleg_DI @ Feb 21 2009, 20:13)  Всё дело что тогда нужен программный и2с для ведомых тини и все ресурсы пойдут туда. На тини собрана динамическая индикация. Был проект на Меге8, динамическая индикация, 24 диода, опрос матрицы клавиатуры, чтение DS1990 и слейв для 1-wire, устройство само ключом DS1990 прикидывалось. на индикацию не влияло. i2c обслужить проще, чем 1-wire.
|
|
|
|
|
Feb 25 2009, 04:58
|
Участник

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

|
Цитата(kanzler @ Feb 24 2009, 10:43)  Хмммм ... Олег, на какое растояние хотите тянуть i2c? Привет! на 20 см сейчас там сделан уарт +485 + wake . Задумка была сделать ведомые i2c программно, не получилось времени было мало, сделал в лоб чтобы не заморачиваться. Сейчас вернулся к теме хочется сделать по правильному.
|
|
|
|
|
Feb 27 2009, 20:34
|
Гуру
     
Группа: Свой
Сообщений: 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 и освещённость определяет. Планировал и другие датчики поставить, но так руки и не дошли.  Когда ставил - боялся проблем и сбоев. Нет. Всё прекрасно работает. Мастер правда софтовый. А так как автор темы планирует - тоже нюансы есть.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|