Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
11.04.2008, 12:22
|
|
Частый гость
Регистрация: 12.01.2008
Сообщений: 49
Сказал спасибо: 0
Сказали Спасибо 8 раз(а) в 5 сообщении(ях)
|
Вопрос по протоколам обмена данными в ATmegaAVR
Доброго всем здоровьечка!
Спецы, подскажите пожалуйста...
Есть три контроллера ATmega32 №1, №2 и №3. Между собой они должны общаться по следующему алгоритму:
1. №3 передает данные №1 и №2.
2. Затем №1 передает данные №2.
3. Затем №1 и №2 передают данные №3
Вопрос: Каким протоколом это можно сделать проще всего - TWI, USART или SPI? Хотелось бы сделать это используя только один протокол (задействовано меньше ножек да и код попроще). Я склоняюсь к TWI (т.е. №3 - ведущий передатчик/приемник, №1 - ведомый приемник/передатчик, №2 - ведомый приемник/передатчик), но из описания TWI так и не понял - может ли ведомый передавать данные ведомому?
Или же стоит №1 сделать ведущим, а №2 и №3 - ведомыми (но тогда опять передача идет от ведомого №2 к ведомому №3)?
__________________
Нет слов "не могу" - есть "не хочу"
|
|
|
|
11.04.2008, 12:50
|
|
Вид на жительство
Регистрация: 22.06.2006
Адрес: Украина
Сообщений: 308
Сказал спасибо: 19
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
|
Если есть возможность изменить алгоритм работы, то будет намного проще организовать сеть с одним ведущим. Например научите первый контроллер работать ретранслятором.
И поищите в Сети WAKE -- думаю кучка вопросов отпадет.
|
|
|
|
11.04.2008, 16:05
|
|
Гражданин KAZUS.RU
Регистрация: 24.11.2006
Адрес: ДНР
Сообщений: 612
Сказал спасибо: 553
Сказали Спасибо 314 раз(а) в 142 сообщении(ях)
|
Re: Вопрос по протоколам обмена данными в ATmegaAVR
Сообщение от vikpol
|
Доброго всем здоровьечка!
Спецы, подскажите пожалуйста...
Есть три контроллера ATmega32 №1, №2 и №3. Между собой они должны общаться по следующему алгоритму:
1. №3 передает данные №1 и №2.
2. Затем №1 передает данные №2.
3. Затем №1 и №2 передают данные №3
Вопрос: Каким протоколом это можно сделать проще всего - TWI, USART или SPI? Хотелось бы сделать это используя только один протокол (задействовано меньше ножек да и код попроще). Я склоняюсь к TWI (т.е. №3 - ведущий передатчик/приемник, №1 - ведомый приемник/передатчик, №2 - ведомый приемник/передатчик), но из описания TWI так и не понял - может ли ведомый передавать данные ведомому?
Или же стоит №1 сделать ведущим, а №2 и №3 - ведомыми (но тогда опять передача идет от ведомого №2 к ведомому №3)?
|
Привет односельчанам ![Смешно](images/smilies/icon_lol.gif) Я бы остановился на USART-›RS485.Дешево и сердито. Контроллеры на разных платах ведь? или на одной? 8O какое max расстояние между девайсами?
Насчет TWI - теоретически все могут там передавать друг дружке, но всегда делают 1Master ,остальные - рабы,(мастер формирует клоки на SCL);если будет более одного командира - путаница неизбежна.Другое дело, когда в процессе работы функции мастера на время возьмет другой девайс... но это гемор. Если по времени не критично, согласен с AndryG насчет ретранслятора.
|
|
|
|
11.04.2008, 16:51
|
|
Частый гость
Регистрация: 12.01.2008
Сообщений: 49
Сказал спасибо: 0
Сказали Спасибо 8 раз(а) в 5 сообщении(ях)
|
Контроллеры на одной плате. Максимальное расстояние 100 мм. Вопрос времени весьма критичен. Как раз поэтому и были разделены контроллеры №1 и №2 - что бы не отвлекались.
Цитата:
|
И поищите в Сети WAKE
|
Если имеется в виду Wake-on-LAN, то мне это не подходит - девайсы не спят, а пашут как глухонемые.
И все - таки, в протоколе TWI может быть так:
ведущий/передатчик передает ведущему/приемнику (в случае двух ведущих и одного ведомого) или ведомый/передатчик передает ведомоиу/приемнику (в случае одного ведущего и двух ведомых)?
Как мне кажется, в принципе это возможно - ведь каждый контроллер имеет свой индивидуальный адрес.
Хотя может я ошибаюсь...
__________________
Нет слов "не могу" - есть "не хочу"
|
|
|
|
11.04.2008, 16:58
|
|
Частый гость
Регистрация: 12.01.2008
Сообщений: 49
Сказал спасибо: 0
Сказали Спасибо 8 раз(а) в 5 сообщении(ях)
|
Ксати, что означает
Цитата:
|
научите первый контроллер работать ретранслятором
|
?
Вы имеете в виду, что, например, контроллер №1 получит от контроллера №2 данные для контроллера №3 и затем передаст их контроллеру №3?
Над этим стоит подумать.
__________________
Нет слов "не могу" - есть "не хочу"
|
|
|
|
11.04.2008, 17:08
|
|
Вид на жительство
Регистрация: 22.06.2006
Адрес: Украина
Сообщений: 308
Сказал спасибо: 19
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
|
Ретранслятора Вы поняли верно ... WAKE http://www.spetspribor.ru/support/so...wake/wake.html Хотя если на одной плате -- это слишком.
Может стоит почитать IIC ? на TWI он, говорят, строится нормально ... и предназначен для "на плтаной" коммуникации.
И еще ... если на одной плате ... можно без особых проблем сотворить протокол "типа много типа головных" --- делаете одного головного, который дополнительными линиями управляет ... берем отдельную линию через монтажное или "на линии нет головных" -- резистором на питангие и головной тянет линию на землю.
Хочет контроллер сказать чего-нить .. смотрит, на эту линию .. ждет, пока освободится линия ... захватывает ее и начинает вещать.
А вообще всё зависит от характера данных, скорость, объем и т.д.
описывайте подробней, что творите - может конкретней будут разговоры.
|
|
|
|
13.04.2008, 22:17
|
|
Частый гость
Регистрация: 12.01.2008
Сообщений: 49
Сказал спасибо: 0
Сказали Спасибо 8 раз(а) в 5 сообщении(ях)
|
Если подробнее, то по идее выглядит все это следующим образом (просто сейчас продумываю концепцию и разрабатываю алгоритм):
1.Контроллер №3 работает с ЖКИ и клавиатурой. Т.е. через клавиатуру задаются основные параметры системы для контроллеров №1 и №2. Разумеется все отображается на ЖКИ. Заданные параметры в контроллере №3 формируются в пакеты отдельно для №1 и отдельно №2. Затем по команде завершения ввода данных они передаются сначала №1, затем №2. Команда "старт" передается для системы через контроллер №3.
2.Контроллер №1 обрабатывает полученные данные и выдает обработанные данные контроллеру №2.
3.Контроллер №2 обрабатывает данные от №1 и №3 и выдает управляющие команды в аналоговую схему.
4.При необходимости по команде от контроллера №3 контроллеры №1 и №2 выдают обработанные данные на №3 для отображения на ЖКИ.
Разумеется, напрашивается объединение №1 и №2 в один кристалл, но... Время!
Каждый из контроллеров №1 и №2 получают через АЦП по 3-4 аналоговых сигнала. Преобразование занимает слишком много времени, а время реакции системы должно быть по возможности максимально быстрым.
__________________
Нет слов "не могу" - есть "не хочу"
|
|
|
|
13.04.2008, 22:22
|
|
Частый гость
Регистрация: 12.01.2008
Сообщений: 49
Сказал спасибо: 0
Сказали Спасибо 8 раз(а) в 5 сообщении(ях)
|
Кстати, в тему...
Подскажите пожалуйста, насколько точно и корректно моделирует протокол TWI Proteus7.2? Сами понимаете, такое дело надо максимально проверять до изготовления вживую!
__________________
Нет слов "не могу" - есть "не хочу"
|
|
|
|
14.04.2008, 10:07
|
|
Вид на жительство
Регистрация: 22.06.2006
Адрес: Украина
Сообщений: 308
Сказал спасибо: 19
Сказали Спасибо 32 раз(а) в 24 сообщении(ях)
|
Тут, наверно, стоит вспомнить архитектуру ПК ... контроллер клавы/видео работает сам по себе и общается с центральным процем "через регистры".
С терминалом (клава/видео) стоит общаться только одному процу.
первый проц - принимает данные и приводит их в стоящий вид для второго
второй принимает данные и реализует бизнес-логику
третий - терминал, управляется (как и первый) вторым
Может так? меньше ветвлений и параллельных задач - меньше глюков и непоняток.
|
|
|
|
14.04.2008, 17:59
|
|
Гражданин KAZUS.RU
Регистрация: 24.11.2006
Адрес: ДНР
Сообщений: 612
Сказал спасибо: 553
Сказали Спасибо 314 раз(а) в 142 сообщении(ях)
|
Сообщение от vikpol
|
Если подробнее, то по идее выглядит все это следующим образом (просто сейчас продумываю концепцию и разрабатываю алгоритм):
1.Контроллер №3 работает с ЖКИ и клавиатурой. Т.е. через клавиатуру задаются основные параметры системы для контроллеров №1 и №2. Разумеется все отображается на ЖКИ. Заданные параметры в контроллере №3 формируются в пакеты отдельно для №1 и отдельно №2. Затем по команде завершения ввода данных они передаются сначала №1, затем №2. Команда "старт" передается для системы через контроллер №3.
2.Контроллер №1 обрабатывает полученные данные и выдает обработанные данные контроллеру №2.
3.Контроллер №2 обрабатывает данные от №1 и №3 и выдает управляющие команды в аналоговую схему.
4.При необходимости по команде от контроллера №3 контроллеры №1 и №2 выдают обработанные данные на №3 для отображения на ЖКИ.
Разумеется, напрашивается объединение №1 и №2 в один кристалл, но... Время!
Каждый из контроллеров №1 и №2 получают через АЦП по 3-4 аналоговых сигнала. Преобразование занимает слишком много времени, а время реакции системы должно быть по возможности максимально быстрым.
|
Т.е. необходимость использовать 2 контроллера(№1 и №2) вызвана только низким быстродействием АЦП?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:24.
|
|