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

 
 
> Как синхронизировать два мк мега 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
Ответов
_Надя
сообщение Nov 20 2008, 18:00
Сообщение #2


Участник
*

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



К сожалению, генерировать сигналы одним мк нельзя... не буду сильно вдаваться в подробности, но сигналы с двух мк поступают на схему контроля, которая будет улавливать рассогласование между началом импульсов с 1 мк и началом таких же импульсов со 2-го мк. рассогласование не должно превышать 1 мкс.
У меня сейчас имульсы совсем как то странно формируются... рассогласование между началами импульсов достигает 100 -200 мс. причем эта величина не постоянная, а меняется и в какой то момент времени начала фронтов импульсов совпадают а потом снова расходятся. программы практически одинаковые у двух мк, за исключением того что первый мк мастер второй слэйв.
С чем может быть связано и как такое устранить?
Go to the top of the page
 
+Quote Post
Aesthete Animus
сообщение Nov 20 2008, 18:30
Сообщение #3


Местный
***

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



Цитата(_Надя @ Nov 20 2008, 21:00) *
К сожалению, генерировать сигналы одним мк нельзя... не буду сильно вдаваться в подробности, но сигналы с двух мк поступают на схему контроля, которая будет улавливать рассогласование между началом импульсов с 1 мк и началом таких же импульсов со 2-го мк. рассогласование не должно превышать 1 мкс.
У меня сейчас имульсы совсем как то странно формируются... рассогласование между началами импульсов достигает 100 -200 мс.


Свои мысли насчет синхронизации уже изложил, поэтому хочется узнать, а как сейчас Вы их синхронизируете?

Насчет плавающего рассогласования между фронтами могу предположить, что причиной тому могут быть гонки между прерываниями. Попробуйте убрать все прерывания, кроме прерывания таймера, заменив из проверкой флага в главном цикле.
Go to the top of the page
 
+Quote Post
_Надя
сообщение Nov 24 2008, 20:39
Сообщение #4


Участник
*

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



Цитата(Aesthete Animus @ Nov 20 2008, 21:30) *
Свои мысли насчет синхронизации уже изложил, поэтому хочется узнать, а как сейчас Вы их синхронизируете?

Насчет плавающего рассогласования между фронтами могу предположить, что причиной тому могут быть гонки между прерываниями. Попробуйте убрать все прерывания, кроме прерывания таймера, заменив из проверкой флага в главном цикле.


Сейчас я их к сожалению никак не синхронизирую и работают они у меня от внутренних RC цепочек.
Убрала из программы всё, кроме одного таймера по которому формируются импульсы. Картина та же. А плавающее рассогласование - это скорее просто так кажется т.к. один мк работает быстрее чем второй и поэтому в какой то момент времени сигналы то совпадают то снова расходятся. если бы у мк CLK совпадали, то сигналы бы шли с одинаковой задержкой. В общем как то так думаю. Если ошибаюсь - поправьте , пожалуйста.
И еще . подскажите , пожалуйста что такое Timer Capture и как им пользоваться smile.gif

Сообщение отредактировал _Надя - Nov 24 2008, 20:44
Go to the top of the page
 
+Quote Post
Aesthete Animus
сообщение Nov 25 2008, 00:14
Сообщение #5


Местный
***

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



Цитата(_Надя @ Nov 24 2008, 23:39) *
Сейчас я их к сожалению никак не синхронизирую и работают они у меня от внутренних RC цепочек.

Можно конечно попытаться калибровать RC цепочку, но сомневаюсь, что даже так удастся добиться нужной Вам точности. Не пойму, что Вам мешает тактировать их от одного источника или же поставить обыкновенные кварцевые резанаторы?

Цитата(_Надя @ Nov 24 2008, 23:39) *
И еще . подскажите , пожалуйста что такое Timer Capture и как им пользоваться smile.gif

Естесственно надо почитать, даташит на странице 96, также, AppNote AVR130 wink.gif

Вообще суть очень простая. Запускаете таймер, а для этого достаточно установить ненулевой прескаллер. После этого, если на ножке ICPn обнаруживается фронт (передний или задний - это можно настроить), то в регистр ICRn записывается текущее значение TCNTn, устаналивается флаг ICFn и (если разрешено) вызывается прерывание Timer Capture Inerrupt. Далее (в перывании или проверив флаг ICFn) регистр ICRn можно прочитать и точно узнать момент генерации фронта, для того, чтобы сверить его с ожидаемым.
Go to the top of the page
 
+Quote Post
_Надя
сообщение Nov 26 2008, 18:36
Сообщение #6


Участник
*

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



Цитата(Aesthete Animus @ Nov 25 2008, 03:14) *
Можно конечно попытаться калибровать RC цепочку, но сомневаюсь, что даже так удастся добиться нужной Вам точности. Не пойму, что Вам мешает тактировать их от одного источника или же поставить обыкновенные кварцевые резанаторы?
Естесственно надо почитать, даташит на странице 96, также, AppNote AVR130 wink.gif

Вообще суть очень простая. Запускаете таймер, а для этого достаточно установить ненулевой прескаллер. После этого, если на ножке ICPn обнаруживается фронт (передний или задний - это можно настроить), то в регистр ICRn записывается текущее значение TCNTn, устаналивается флаг ICFn и (если разрешено) вызывается прерывание Timer Capture Inerrupt. Далее (в перывании или проверив флаг ICFn) регистр ICRn можно прочитать и точно узнать момент генерации фронта, для того, чтобы сверить его с ожидаемым.

подскажите пожалуйста еще, а то я совсем запуталась... я запускаю таймеры первого и второго мк. Тот мк который быстрее входит в прерывание будет формировать импульс на какой нибудь ноге и подавать этот импульс на вход ICPn второго мк? и тот сразу будет уходить в прерывание?
Я думала еще по другому написать :
мк который входит в прерывание первым посылает второму на ногу уровень, а сам ждет пока тот второй войдет в прерывание и пошлет ему уровень - после этого дальше они одновременно продолжают прогамму... так можно?
проблема у меня только в том, что я не совсем знаю как это написать на СИ...
как написать к примеру, ждать пока бит 2 порта д станет равным 1 и как только он станет 1 будем продолжать выполнение программы...?
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
||- - _Надя   Цитата(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
||- - 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
- - Aesthete Animus   Цитата(_Надя @ Nov 26 2008, 21:36) подска...   Nov 27 2008, 00:33
|- - _Надя   Цитата(Aesthete Animus @ Nov 27 2008, 03...   Nov 27 2008, 19:03
|- - BigBolt   Цитата(_Надя @ Nov 27 2008, 22:03) Может ...   Nov 28 2008, 05:12
|- - 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 Текстовая версия Сейчас: 23rd July 2025 - 16:16
Рейтинг@Mail.ru


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