roboforum.ru

Технический форум по робототехнике.


Синхронизация работы двух атмег48

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Синхронизация работы двух атмег48

Сообщение JeikiS » 01 авг 2013, 14:52

Доброго времени суток, уважаемые форумчане.

Помогите решить вопрос синхронизации работы двух МК.

на МК-хах крутится софтварный шим на 15 каналов, причем скорость выполнения основной программы меняется с переменника на ведущей плате. Расстояние между МК примерно 10-15 метров.
Опять же есть необходимость, чтоб при отключенном ведущем МК ведомый работал самостоятельно.

Самое лучшее что я придумал это отсылать синхроимпульс с ведущего каждую итерацию, а ведомый тупо будет ждать этот импульс, решается вопрос со скоростью, но велечины могут не совпасть... :( либо выдавать синхроимпульс в начале цикла, тогда скорость будет не совпадать... два порта задействовать не хочется. копаю в сторону 1-вайр, но мне кажется при таких ресурсозатратах как софтверный шим на 15 каналов, 1-вайр тупо не будет успевать.
Аватара пользователя
JeikiS
 
Сообщения: 32
Зарегистрирован: 19 июл 2010, 06:40
Откуда: Якутск
прог. языки: C#
ФИО: Андрей

Re: Синхронизация работы двух атмег48

Сообщение elmot » 01 авг 2013, 22:06

Вообще-то лучше бы по UART. Тем более, чо расстояние уже не сантиметровое, просто сигнал с ноги МК будет сильно искажен. UART - аппаратный, ему пофигу на загрузку проца, простецкими микрухами можно пересобачить в RS-422, вопрос с искажениями снимется сразу.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Синхронизация работы двух атмег48

Сообщение JeikiS » 02 авг 2013, 01:10

На уартовых ногах уже оборудование оконечное висит... платы уже разведены и изготовлены...
Аватара пользователя
JeikiS
 
Сообщения: 32
Зарегистрирован: 19 июл 2010, 06:40
Откуда: Якутск
прог. языки: C#
ФИО: Андрей

Re: Синхронизация работы двух атмег48

Сообщение elmot » 02 авг 2013, 01:29

Что там передать-то надо? Просто один параметр длительности чего-то?
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Синхронизация работы двух атмег48

Сообщение =DeaD= » 02 авг 2013, 01:50

Не очень ясно в чем должна состоять синхронизация? В передаче данных между МК? В совпадении фронта импульсов? В совпадении длины импульсов? С какой точностью?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Синхронизация работы двух атмег48

Сообщение Angel71 » 02 авг 2013, 01:51

JeikiS, дико извиняюсь, что не в тему. а зачем софтовый шим, да ещё и двумя микроконтроллерами? в смысле у вас какая-то эдакая задачка с хитрым шимом?
+1 что про синхронизацию ничего непонятно. подетальней бы описали задачу. к примеру подойдёт ли такой вариант или нет совершенно непонятно: переодически синхронизировать чем-то подобным синхронизации времени, только не время изменять, а вычислить какому чипу сколько тактов нужно пропустить, чтоб они потом синхронно работали (одно из условий, что бы выполнялся одинаковый код).
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Синхронизация работы двух атмег48

Сообщение JeikiS » 02 авг 2013, 16:50

шимы нужны для управления нагрузками... МК выполняют абсолютно идентичную последовательность действий, смысл в том, что это два независимых устройства, которые при сопряжении должны работать синхронно, а при расключении каждый должен функционировать автономно. скорость выполнения последовательности действий меняется при помощи переменного сопротивления на адц и необходимо при изменении скорости на одном устройстве, чтоб скорость менялась и на втором(при наличии соединения, естественно), при этом можно обозначить ведущее и ведомое устройство. постарался максимально понятно изложить суть проблемы. при всем этом все аппаратные коммуникационные порты уже заняты нагрузками...
Аватара пользователя
JeikiS
 
Сообщения: 32
Зарегистрирован: 19 июл 2010, 06:40
Откуда: Якутск
прог. языки: C#
ФИО: Андрей

Re: Синхронизация работы двух атмег48

Сообщение Victorovych » 02 авг 2013, 18:47

JeikiS писал(а):... при всем этом все аппаратные коммуникационные порты уже заняты нагрузками...

Скальпель в руки и резать дорожки
Аватара пользователя
Victorovych
 
Сообщения: 491
Зарегистрирован: 20 сен 2007, 11:44
Откуда: Харьков
Skype: Victorovych_FF
прог. языки: ASM
ФИО: Иван ВикторОвич

Re: Синхронизация работы двух атмег48

Сообщение JeikiS » 02 авг 2013, 19:11

неужели такую простую задачу нельзя решить програмно одним пином?
тоесть, вопрос именно в алгоритме.
Аватара пользователя
JeikiS
 
Сообщения: 32
Зарегистрирован: 19 июл 2010, 06:40
Откуда: Якутск
прог. языки: C#
ФИО: Андрей

Re: Синхронизация работы двух атмег48

Сообщение elmot » 02 авг 2013, 19:13

задача описана очень туманно
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Синхронизация работы двух атмег48

Сообщение Angel71 » 02 авг 2013, 21:35

JeikiS писал(а):неужели такую простую задачу нельзя решить програмно одним пином?

да ктож его знает, можно или нельзя. с тем как сейчас описана задача, можно долго и нудно угадывать.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Синхронизация работы двух атмег48

Сообщение legion » 02 авг 2013, 23:47

Мееедленный софтовый уарт. Можно использовать уже существующие временные циклы софтШИМа в качестве baudrate, тогда ресурсов понадобится минимум. Ведомый по моменту начала передачи может синхронизировать "фазу" выполняемых действий, а по принятому значению - все остальное, что нужно.
legion
 
Сообщения: 736
Зарегистрирован: 24 апр 2010, 14:47
Откуда: Уфа
прог. языки: avr asm

Re: Синхронизация работы двух атмег48

Сообщение JeikiS » 05 авг 2013, 16:54

legion писал(а):Мееедленный софтовый уарт. Можно использовать уже существующие временные циклы софтШИМа в качестве baudrate, тогда ресурсов понадобится минимум. Ведомый по моменту начала передачи может синхронизировать "фазу" выполняемых действий, а по принятому значению - все остальное, что нужно.


вот что-то подобное и необходимо реализовать... спасибо за наставление на путь... сегодня поколдую...
Аватара пользователя
JeikiS
 
Сообщения: 32
Зарегистрирован: 19 июл 2010, 06:40
Откуда: Якутск
прог. языки: C#
ФИО: Андрей


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 60