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

 
 
> Как синхронизировать два мк мега 16?
_Надя
сообщение Nov 19 2008, 18:37
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 18-11-08
Пользователь №: 41 741



Подскажите как программно синхронизировать два контроллера? Если можно расскажите по-подробнее про синхронизацию, как ее организовать что там важно учесть... Заранее благодарю smile.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Aesthete Animus
сообщение Nov 27 2008, 00:33
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 222
Регистрация: 9-06-07
Пользователь №: 28 317



Цитата(_Надя @ Nov 26 2008, 21:36) *
подскажите пожалуйста еще, а то я совсем запуталась... я запускаю таймеры первого и второго мк. Тот мк который быстрее входит в прерывание будет формировать импульс на какой нибудь ноге и подавать этот импульс на вход ICPn второго мк? и тот сразу будет уходить в прерывание?

Входить в прерывание не обязательно, можно проверить флаг прерывания. Но как верно заметил BigBolt, проблемы могут возникнуть если контроллер сильно нагружен другими задачами. В общем, не лишне будет, если подробно расскажете, какие параметры должны быть у сигнала. К примеру, если период импульсов у какого-то из контроллеров большой, то можно надеятся, что в перерывах между прерываниями успеете проверить флаг и померять импульс. Если частота импульсов высокая, то можно сигнал генерить аппаратно (подробно описано в "Modes of Operation" в главе про таймеры), а измерение импульса при этом обрабатывать в прерывании.
Go to the top of the page
 
+Quote Post
_Надя
сообщение Nov 27 2008, 19:03
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 18-11-08
Пользователь №: 41 741



Цитата(Aesthete Animus @ Nov 27 2008, 03:33) *
Входить в прерывание не обязательно, можно проверить флаг прерывания. Но как верно заметил BigBolt, проблемы могут возникнуть если контроллер сильно нагружен другими задачами. В общем, не лишне будет, если подробно расскажете, какие параметры должны быть у сигнала. К примеру, если период импульсов у какого-то из контроллеров большой, то можно надеятся, что в перерывах между прерываниями успеете проверить флаг и померять импульс. Если частота импульсов высокая, то можно сигнал генерить аппаратно (подробно описано в "Modes of Operation" в главе про таймеры), а измерение импульса при этом обрабатывать в прерывании.

приношу свои извинения за длинный текст...
Начну пожалуй с алгоритма ....
он примерно такой:
по таймеру Т0 с частотой 2 КГц у меня запускается ацп. по прерыванию ацп измеренные значения записываются в массив размером 255. далее этот массив обрабатывается - ищется в нем максимум. Потом мк обмениваются этими максимумами по SPI. Далее идет пороговый анализ, где сравниваются принятое значения по SPI с измеренным максимумом. Если разница не большая то берем наименьшее и сравниваем его с записанным в ЕЕПРОМ порогом. Если больше порога - включаем порт, если меньше - выключаем. при этом еще по таймеру Т1 у меня формируюутся импульсы длительностью 8 мс. (таймер каждые 8 мс входит в прерывания.) спустя 1,2 секунды после включения питания на одной ноге мк формируется импульс длительностью 8 мс, когда он заканчивается на другой ноге мк формируется такой же импулсьс. Период следования импульсов 1,6 сек. При включении питания также на третей ноге мк формируется имульс длительностью 4,8 сек - этот импульс формируется только один раз за все выполнение программы. И еще на четвертой ноге через 3,2 сек после вкл. питания также формируется импульс длительностью 1,6 сек - тоже один раз. Но если извне на порт мк приходит сигнал рассогласования то на этой четвертой ноге начинают формироваться импульсы перезапуска с периодом следования 1,6 сек, длительностью 300 мс - формируются до тех пор, пока не пропадет сигнал рассогласования. при этом всегда неважно есть рассогласование или нет должны формироваться импульсы которые по 8 мс . второй мк формирует инверсные аналоги импульсов первого мк. ну и еще один из мк должен формировать частоту 1 кГц ( я пока ее не написала). Задача состоит в том, чтобы синхронизировать импульсы которые по 8 мс, чтобы начальные фронты импульсов первого мк и второго совпадали. Синхронность остальных импульсов не важна. Еще по таймеру Т1 эти импульсы , которые по 8 мс выводятся на порт - так называемый тестовый выход, на него еще выводится то максимальное значение, которое предается по SPI.

Сегодня инетереса ради подключала к мк два кварца - рассогласование сразу стало заметным - один мк работает быстрее , другой медленее... ну и со временем импульсы то сходятся - то расходятся....
потом написала так программу: когда мк, который первм входит в прерывание посылает второму сигнал, а сам ждет от того ответа. второй когда входит в прерывание - посылает ответ первому и дальше они начинают синхронно выполнять программу. синхрнизируется все хорошо, только остальная программа совсем не работает. Думаю , что с Timer Capture получится примерно тоже самое.
но все же потом попробовала с Timer Capture как Вы советовали... тут запуталась... думала написать так, что мк, котрый первым входит в прерывание пошлет второму на вход ICP сигнал и тот тоже войдет в прерывание... здесь получается что один мк должен входить в прерывание по перполнению, а второй по захвату... получается нужно знать каждый раз какой из мк быстрее работает... а если не знать - я же могу настроить таймер так, что бы в зависимости от ситуации он входил в прерывание по переполнению либо по захвату - или это не так? в общем я совсем запуталась...
Еще раз прошу прощения, что много написала...
Может еще можно как то синхронизировать это дело? как это с плис сделать?

Сообщение отредактировал _Надя - Nov 27 2008, 19:04
Go to the top of the page
 
+Quote Post
EugeNNe
сообщение Nov 28 2008, 05:12
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 424
Регистрация: 6-03-06
Из: Н.Новгород
Пользователь №: 14 997



Цитата(_Надя @ Nov 27 2008, 22:03) *
Может еще можно как то синхронизировать это дело? как это с плис сделать?


Если честно то мне не удалось добится получения с двух МК синхронных импульсов.... Они выполняли много задач и генерация импульсов на основе прерываний не дала должного результата... Вобщем в конце концов я контролёрами генерил просто прямоугольники ( несинхронные), а специальный узел на основе 74НС**** генерил из этих прямоугольников синхронные сигналы с установленными параметрами.... Дёшево smile.gif и сердито получилось....
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- _Надя   Как синхронизировать два мк мега 16?   Nov 19 2008, 18:37
- - Aesthete Animus   Цитата(_Надя @ Nov 19 2008, 21:37) Подска...   Nov 19 2008, 19:08
- - _Надя   Как сказать... я сама в общем то не совсем поним...   Nov 19 2008, 20:11
|- - Кастусь Рыжов   Цитата(_Надя @ Nov 19 2008, 22:11) Как ск...   Nov 19 2008, 22:42
|- - Aesthete Animus   Цитата(_Надя @ Nov 19 2008, 23:11) Как ск...   Nov 19 2008, 23:29
- - _Надя   К сожалению, генерировать сигналы одним мк нельз...   Nov 20 2008, 18:00
|- - Aesthete Animus   Цитата(_Надя @ Nov 20 2008, 21:00) К сожа...   Nov 20 2008, 18:30
||- - _Надя   Цитата(Aesthete Animus @ Nov 20 2008, 21...   Nov 24 2008, 20:39
||- - Aesthete Animus   Цитата(_Надя @ Nov 24 2008, 23:39) Сейчас...   Nov 25 2008, 00:14
||- - _Надя   Цитата(Aesthete Animus @ Nov 25 2008, 03...   Nov 25 2008, 13:54
|||- - muravei   Цитата(_Надя @ Nov 25 2008, 16:54) Спасиб...   Nov 25 2008, 15:33
||||- - _Надя   Цитата(muravei @ Nov 25 2008, 18:33) Это ...   Nov 25 2008, 16:18
|||- - BigBolt   Цитата(_Надя @ Nov 25 2008, 16:54) А Вы т...   Nov 26 2008, 05:15
||- - _Надя   Цитата(Aesthete Animus @ Nov 25 2008, 03...   Nov 26 2008, 18:36
||- - BigBolt   Цитата(_Надя @ Nov 26 2008, 21:36) подска...   Nov 26 2008, 19:05
|- - SysRq   Цитата(_Надя @ Nov 20 2008, 21:00) С чем ...   Nov 20 2008, 18:37
|- - BigBolt   Цитата(_Надя @ Nov 20 2008, 21:00) К сожа...   Nov 24 2008, 10:12
- - _Надя   Как Вы угадали Для ж.д. это точно. И мне нужно ч...   Nov 24 2008, 16:37
|- - BigBolt   Цитата(_Надя @ Nov 24 2008, 19:37) Как Вы...   Nov 25 2008, 04:51
- - Aesthete Animus   Цитата(_Надя @ Nov 25 2008, 16:54) За опи...   Nov 25 2008, 15:55
|- - muravei   Цитата(Aesthete Animus @ Nov 25 2008, 18...   Nov 25 2008, 17:34
- - Aesthete Animus   2_Надя С незопрограммированным CKOPT максимальная ...   Nov 25 2008, 16:26
|- - _Надя   Цитата(Aesthete Animus @ Nov 25 2008, 19...   Nov 25 2008, 18:46
|- - Aesthete Animus   Цитата(_Надя @ Nov 25 2008, 21:46) а что ...   Nov 25 2008, 19:12
- - _Надя   Да я тут уже поставила как то по ошибке не тот ...   Nov 25 2008, 20:02
- - vvvvv   ..... while (!(PIN&(1<<BIT2) )){} ; ...   Nov 26 2008, 18:53
|- - XVR   Цитата(_Надя @ Nov 27 2008, 22:03) по тай...   Nov 28 2008, 08:43
- - _Надя   Сегодня попробовала сделать так с Timer Capture:...   Nov 28 2008, 18:40


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

 


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


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