Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.57/148: Рейтинг темы: голосов - 148, средняя оценка - 4.57
kot913
0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 17
1

Синхронизация двух контроллеров.

16.05.2015, 18:09. Просмотров 26922. Ответов 38
Метки нет (Все метки)

Здравствуйте.
Возникла необходимость синхронизировать два контроллера с точностью до такта,
для быстрого обмена данными.
Посоветуйте пожалуйста как это сделать.
Спасибо,тема закрыта.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2015, 18:09
Ответы с готовыми решениями:

Связь двух контроллеров по SPI.
у меня есть драйвер на Miko168. мне понадобилось связать две платы вместе. из...

Синхронизация двух 16-ти разрядных таймеров
Привет! Не могу сделать так что бы 2 счётчика в mega 162 начинали счёт...

Сеть контроллеров
Всем трям. Есть такой вопрос. Есть несколько устройств и блок управления....

MP9011 Программирование контроллеров
У меня проблема не могу прошить не один контроллер с помощью MP9011 соединяю...

Проекты контроллеров стиральных машин
Ребят, такое дело, нужны исходники AVR и WMLAB проекта "Управление стиральной...

38
BykTiho
0 / 0 / 0
Регистрация: 12.04.2010
Сообщений: 3,260
17.05.2015, 16:15 21
Поясните. Существует множество синхронных протоколов обмена данными. Чем они не подходят? При их использовании нет необходимости обеспечивать синхронность клока контроллеров.
0
kot913
0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 17
17.05.2015, 16:34 22
Добрый день.Всем большое спасибо.Удалось с точностью до такта при помощи двух прерываний.Скорость передачи 3 такта байт(120 байт) +20 тактов на синхронизацию.
Всё красиво заработало.А для чего нужна синхронизация? Все дело в интерфейсе.Он
достаточно нудный.

А как закрыть тему?
0
kot913
0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 17
17.05.2015, 18:30 23
Цитата Сообщение от BykTiho
Поясните. Существует множество синхронных протоколов обмена данными. Чем они не подходят? При их использовании нет необходимости обеспечивать синхронность клока контроллеров.
Скорость.
0
BykTiho
0 / 0 / 0
Регистрация: 12.04.2010
Сообщений: 3,260
17.05.2015, 18:34 24
Цитата Сообщение от kot913
А как закрыть тему?
Отредактировать самое первое сообщение
0
kot913
0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 17
18.05.2015, 10:51 25
Цитата Сообщение от _pv
Цитата Сообщение от kot913
По порядку.Контроллер atmega1284 память от $100 до $267f экранная область.
У контроллера свои задачи, заниматься выводом информации на дисплей со скоростью 2,5Mбит в сек. ему просто некогда.Поэтому выводом информации,синхронизации,тактированием дисплея занимается attiny2313, дёшево сердито.
Attiny2313 выводит информацию построчно с частотой клоков дисплея
и для чего тут нужна синхронизация до такта?
в 2313 надо сделать буфер, который mega128 заполняет когда хочет и когда там есть место, а 2313 выводит на экран. и единственную ногу Clear-to-Send (или статусный байт который 2313 постоянно обратно шлёт меге), состояние которой говорит меге: надо слать данные или буфер еще достаточно полный и надо подождать.

tiny2313:

Код
const int BUFF_SIZE = 100;
Fifo<BUFF_SIZE> buff;

interrupt SPI/USORT_ISR(){
buff.push(DATA_REG);
if (buff.busy() < (BUFF_SIZE - 10)) on(PIN_CTS); else off(PIN_CTS);
}

...

u8 x = 0;
u8 y = 0;
while (1){
if (buff.busy()){
u8 data = buff.pop();
u8 n = 8;
while (n--){
off(PIN_LCD_CLK);
if (data & 1) LCD_PORTx = 0xFF; else LCD_PORTx = 0x00;
data >>= 1;
on(PIN_LCD_CLK);
}
if (++x >= 320/8){
x = 0;
hsync();
if (++y >= 240){
y = 0;
vsync();
}
}
}
}
mega128:

if (active(PIN_CTS)) UART/SPI_Send(videoMem[pix++]);
Вы не поняли сути интерфейса.2313 сама формирует клоки,и по каждому клоку выдаёт бит.Процесс непрерывный 320 клоков 320 бит,68 клоков H-syhg и далее
процесс повторяется 240 раз кол_во строк.Потом следует V-syhg длительностью
18 строк.То есть если тактовая 20 МГц а частота клоков 2 МГц то есть 10 тактов
на передачу одного бита,вполне достаточно,но после передачи одного БАЙТА (8 бит)
Вам нужно за 10 тактов узнать что байт передан , приготовить к передаче следующий байт и к фронту следующего клока выставит бит. Не забывайте при этом считать строки, формировать H-syhg, V-syhg. Ну и как итог после опустошения буфера 120 байт на загрузку следующего есть 68 клоков минус время потраченное на на переходы на подсчёт строк и т.д. Реального Времени на загрузку буфера остается меньше 30 мкс С уважением kot913/
0
itysiy
0 / 0 / 0
Регистрация: 18.01.2012
Сообщений: 1,418
18.05.2015, 10:58 26
шашки или ехать. проблема из-за неправильного выбора аппаратных средств.
0
_pv
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,515
18.05.2015, 12:17 27
Цитата Сообщение от kot913
Вы не поняли сути интерфейса.
это Вы сути интерфейса похоже не поняли, lcd модулю на однородность клоков положить.
это не CRT монитор у которого луч сам по себе убежит на соседний пиксель если ему вовремя данные не подсунуть.
соответственно никто не мешает выдать подряд 8 пикселей из одного байта, на частоте несколько МГц, (причём если использовать для этого SPI всё будет куда проще). потом достать из буфера следующий байт, проверить счётчики строк/столбцов, заполненность буфера, затупив на десяток другой таков, пусть даже поймав посередине этого действа прерывание например от UARTa с данными от меги.
циклический буфер при этом может быть даже меньше чем на одну строку и его заполняемость к горизонтальной синхронизации вообще никак не привязана.
0
Btosk Worryor
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 392
18.05.2015, 14:01 28
Цитата Сообщение от _pv
Цитата Сообщение от kot913
Вы не поняли сути интерфейса.
это Вы сути интерфейса похоже не поняли, lcd модулю на однородность клоков положить.
это не CRT монитор у которого луч сам по себе убежит на соседний пиксель если ему вовремя данные не подсунуть.
соответственно никто не мешает выдать подряд 8 пикселей из одного байта, на частоте несколько МГц, (причём если использовать для этого SPI всё будет куда проще). потом достать из буфера следующий байт, проверить счётчики строк/столбцов, заполненность буфера, затупив на десяток другой таков, пусть даже поймав посередине этого действа прерывание например от UARTa с данными от меги.
циклический буфер при этом может быть даже меньше чем на одну строку и его заполняемость к горизонтальной синхронизации вообще никак не привязана.
+1
при таком подходе 2313 становится тормозом, т.к. требует SPI с клоком f/4. Тогда как на ЖКИ можно кидать данные с клоком f/2.

Вот что то похожее http://we.iosyitistromyss.ru/STM32/podk ... overy.html
0
kot913
0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 17
18.05.2015, 17:44 29
Цитата Сообщение от _pv
Цитата Сообщение от kot913
Вы не поняли сути интерфейса.
это Вы сути интерфейса похоже не поняли, lcd модулю на однородность клоков положить.
это не CRT монитор у которого луч сам по себе убежит на соседний пиксель если ему вовремя данные не подсунуть.
соответственно никто не мешает выдать подряд 8 пикселей из одного байта, на частоте несколько МГц, (причём если использовать для этого SPI всё будет куда проще). потом достать из буфера следующий байт, проверить счётчики строк/столбцов, заполненность буфера, затупив на десяток другой таков, пусть даже поймав посередине этого действа прерывание например от UARTa с данными от меги.
циклический буфер при этом может быть даже меньше чем на одну строку и его заполняемость к горизонтальной синхронизации вообще никак не привязана.
Согласен ,но снижение скорости вывода строки приведёт к мерцанию дисплея.
Кроме того разнородность клоков плохо отражается на равномерности засветки экрана.Затупив на 10 другой тактов будем наблюдать яркий бит перед затуплением.
Пробовал ,видел.
0
kot913
0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 17
18.05.2015, 18:00 30
Цитата Сообщение от itysiy
шашки или ехать. проблема из-за неправильного выбора аппаратных средств.
Сейчас уже не вижу проблемы.Все прекрасно работает.На выходе классный дисплей с возможностью выбора,в каком цвете выводить и на какой цвет выводить.А как дополнение ,atmega1284 с экранной областью.Помните синклер или рк 86 ,кинул байт в озу и сразу видно на экране.Как бонус никаких тормозов ,на вывод графики atmega тратит менее 5% своего времени.Картинка обновляется с частотой 24 гц.
0
kot913
0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 17
18.05.2015, 18:41 31
Через 2-4 часа напишу для чего сей проект был задуман.
Знакомый попросил.Занимается с детьми в кружке при школе .Программирование , робототехника и всё такое.Бюджет мизерный голый энтузиазм (святой человек).
Попробую его словами.Как правило после небольшой теоретической части, все начинается с мигания светодиодом.Тут главный затык .Понятия биты,байты,инициализация портов,задержки цикл,МГц,мкс и т.д. и т.п. вызывают у детей, ну скажем легкое напряжение.Надо было упростить процесс.
Вот он и попросил сделать девйс чтобы было всё не так напряжённо.
Ребёнок пишет свою первую строку в жизни ,STS 1000,R16 и хоп на экране появляется чёрточка.Вторая строка STS 1000+40,R16 и, о чудо ,появляется вторая черточка.Потом он выключает компьютер,а чёрточки остаются это ОН их сделал и они никуда не денутся.
Ну а порты, инициализация и т.д. попозже когда втянется.Главное пробудить интерес.
А разные цвета чтобы повеселее было.
Проект не коммерческий в одном экземпляре.Делал ради интереса из того что было под рукой.
Вообще я не программист, так между делом.
0
Btosk Worryor
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 392
18.05.2015, 23:03 32
Нет, ну это понятно. В данном случае интересна сама идея работы с подобным дисплеем по SPI. Именно при помощи только одной 1284.
По UART-у принимать информацию от компьютера, а по SPI выводить на дисплей.
У меня макетка с 1284 есть, но нет переходника с разъема ЖКИ на ДИП :)
0
Btosk Worryor
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 392
18.05.2015, 23:06 33
Цитата Сообщение от kot913
Процесс непрерывный 320 клоков 320 бит,68 клоков H-syhg и далее
процесс повторяется 240 раз кол_во строк.Потом следует V-syhg длительностью
18 строк.То есть если тактовая 20 МГц а частота клоков 2 МГц то есть 10 тактов
на передачу одного бита,вполне достаточно,но после передачи одного БАЙТА (8 бит)
Вам нужно за 10 тактов узнать что байт передан , приготовить к передаче следующий байт и к фронту следующего клока выставит бит. Не забывайте при этом считать строки, формировать H-syhg, V-syhg. Ну и как итог после опустошения буфера 120 байт на загрузку следующего есть 68 клоков минус время потраченное на на переходы на подсчёт строк и т.д. Реального Времени на загрузку буфера остается меньше 30 мкс С уважением kot913/
Я все импульсы синхронизации делал длительностью по одномум клоку, хотя это и потребовало тактировать контроллер учетверенным пиксельным клоком.
Т.е. длительностью этих импульсов можно абсолютно не заморачиваться и делать их как удобно.
0
kot913
0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 17
19.05.2015, 00:13 34
Цитата Сообщение от Btosk Worryor
Нет, ну это понятно. В данном случае интересна сама идея работы с подобным дисплеем по SPI. Именно при помощи только одной 1284.
По UART-у принимать информацию от компьютера, а по SPI выводить на дисплей.
У меня макетка с 1284 есть, но нет переходника с разъема ЖКИ на ДИП :)
Сложно на одном контроллере, что бы приемлемо светилось, и не мерцало нужна очень высокая скорость вывода на дисплей,и время работы с UART-ом будет только когда V-suhg.Поэтому два контроллера ,2313 берёт на себя всю грязную работу.А 1284 свободен и только изредка подгружает буфер.
У PH320240t-006-ip1q такой разъём я охренел его рисовать.
0
kot913
0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 17
19.05.2015, 00:20 35
Цитата Сообщение от Btosk Worryor
Цитата Сообщение от kot913
Процесс непрерывный 320 клоков 320 бит,68 клоков H-syhg и далее
процесс повторяется 240 раз кол_во строк.Потом следует V-syhg длительностью
18 строк.То есть если тактовая 20 МГц а частота клоков 2 МГц то есть 10 тактов
на передачу одного бита,вполне достаточно,но после передачи одного БАЙТА (8 бит)
Вам нужно за 10 тактов узнать что байт передан , приготовить к передаче следующий байт и к фронту следующего клока выставит бит. Не забывайте при этом считать строки, формировать H-syhg, V-syhg. Ну и как итог после опустошения буфера 120 байт на загрузку следующего есть 68 клоков минус время потраченное на на переходы на подсчёт строк и т.д. Реального Времени на загрузку буфера остается меньше 30 мкс С уважением kot913/
Я все импульсы синхронизации делал длительностью по одномум клоку, хотя это и потребовало тактировать контроллер учетверенным пиксельным клоком.
Т.е. длительностью этих импульсов можно абсолютно не заморачиваться и делать их как удобно.
Согласен, длительность самого импльса не важна.Важна длительность H-suhg, по дефолту для данного индикатора кажись 68 клоков.Она кстати может программироваться
в самом дисплее.
0
Btosk Worryor
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 392
19.05.2015, 00:33 36
Цитата Сообщение от kot913
Сложно на одном контроллере, что бы приемлемо светилось, и не мерцало нужна очень высокая скорость вывода на дисплей,и время работы с UART-ом будет только когда V-suhg.Поэтому два контроллера ,2313 берёт на себя всю грязную работу.А 1284 свободен и только изредка подгружает буфер.
У PH320240t-006-ip1q такой разъём я охренел его рисовать.
Если вы будете выводить картинку напрямую на ЖКИ через SPI, то аппаратный клок SPI становится пиксельным клоком. А данные SPI - соответственно пикселами.
Т.е. что вы передаете данные на 2313, что на сам ЖКИ, разницы не будет практически.
Только передавая на 2313, вы не можете поднять частоту SPI выше 5 МГц, т.к. SPI slave больше не потянет. А передавая на ЖКИ, можно использовать частоту SPI 10 МГц.

PS: для детей да, конечно же цветной экранчик гораздо лучше черно-белого.
Но вот заморачиваться с асмом...
Имхо было бы гораздо круче использовать что-то типа бейсика.
0
kpk
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 461
19.05.2015, 05:39 37
Цитата Сообщение от Btosk Worryor
PS: для детей да, конечно же цветной экранчик гораздо лучше черно-белого.
Но вот заморачиваться с асмом... Имхо было бы гораздо круче использовать что-то типа бейсика.
Здесь Форт подобный язык Rida4 в чём то для детей проще
(палка палка огуречек - вот и вышел человечек :)
0
kot913
0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 17
19.05.2015, 08:17 38
Цитата Сообщение от Btosk Worryor
Цитата Сообщение от kot913
Сложно на одном контроллере, что бы приемлемо светилось, и не мерцало нужна очень высокая скорость вывода на дисплей,и время работы с UART-ом будет только когда V-suhg.Поэтому два контроллера ,2313 берёт на себя всю грязную работу.А 1284 свободен и только изредка подгружает буфер.
У PH320240t-006-ip1q такой разъём я охренел его рисовать.
Если вы будете выводить картинку напрямую на ЖКИ через SPI, то аппаратный клок SPI становится пиксельным клоком. А данные SPI - соответственно пикселами.
Т.е. что вы передаете данные на 2313, что на сам ЖКИ, разницы не будет практически.
Только передавая на 2313, вы не можете поднять частоту SPI выше 5 МГц, т.к. SPI slave больше не потянет. А передавая на ЖКИ, можно использовать частоту SPI 10 МГц.

PS: для детей да, конечно же цветной экранчик гораздо лучше черно-белого.
Но вот заморачиваться с асмом...
Имхо было бы гораздо круче использовать что-то типа бейсика.

У PH320240t-006-ip1q есть только 24 битный RGB.
На 2313 данные передаются параллельно через PORTD.
А насчёт детишек не знаю, меня попросили помочь я делаю.Наверно уровень у них разный.
0
kot913
0 / 0 / 0
Регистрация: 13.05.2015
Сообщений: 17
19.05.2015, 08:29 39
Цитата Сообщение от KPK
Цитата Сообщение от Btosk Worryor
PS: для детей да, конечно же цветной экранчик гораздо лучше черно-белого.
Но вот заморачиваться с асмом... Имхо было бы гораздо круче использовать что-то типа бейсика.
Здесь Форт подобный язык Rida4 в чём то для детей проще
(палка палка огуречек - вот и вышел человечек :)

Объясняю, мне педагог обрисовали проблему.Я согласовал конечный результат.Сказали здорово, ну я и делаю,это же не за деньги а так.
А выбор компонентов это то что было в коробочках.В принципе куплено давно, и валялось без дела уже не один год.
Повторюсь, для начальных шагов в ассемблере это очень наглядно .Сразу видно какой из себя байт,какой бит, что такое стек и как он работает (адрес начала стека в экранную область озу).
Задать экранную область с нуля, наверно будет видно регистры контроллера (наверно).
PinBoard хорошая штука,но что бы с ним работать нужен небольшой базовый объём знаний и интерес.
Так вот эта штука,ну как я это понимаю,нужна чтобы вызвать начальный интерес к программированию.Все наглядно,результат видно сразу.
0
19.05.2015, 08:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.05.2015, 08:29

Возможно ли программирование контроллеров на высокоуровневом языке?
Здравствуйте! Знаком с радиоэлектроникой и языком C#. C и Assembler не знаю....

Языки программирования для контроллеров, микроконтроллеров и пр.
Извините за нубский вопрос: а собственно на каком языке можно программировать...

Совместимость архитектур мобильных контроллеров и AVR
Здравствуйте! Хотел бы спросить - похожи ли архитектуры тех микропроцессоров,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
39
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru