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

 
 
> Передать блок данных с мк на мк, как лучше реализовать?
zombi
сообщение Mar 22 2016, 14:20
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Нужно в одном изделии передавать с одной xmega на другую каждую миллисекунду 12288 бит = 1536 байт.
Чем побыстрее, но не дольше чем за 200 мкс.
Оба мк тактируются от общего внешнего генератора 32MHz.
Свободных ног у каждого по 10 шт. есть.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Kovrov
сообщение Mar 28 2016, 12:21
Сообщение #2


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



Для приема:
Триггер ДМА завести по прерыванию внешнего входа
источник будет порт приема
назначение будет буфер озу с инкрементом
по истечению нужного колва байт в транзакции ДМА вывести запрос на прерывание у дма
вот и всего делоф.

Для передачи:
добавляем эвент контроллер дергания ноги строба.
загрузка проца минимальна.





--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
zombi
сообщение Mar 28 2016, 13:51
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(Kovrov @ Mar 28 2016, 15:21) *
Триггер ДМА завести...

Предлагаете и в приёмнике и в передатчике использовать DMA?
А сколько тактов необходимо для передачи одного байта из увв во внутр. память и наоборот?
И как оба процесса синхронизировать?
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Mar 29 2016, 07:28
Сообщение #4


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



Цитата(zombi @ Mar 28 2016, 18:51) *
Предлагаете и в приёмнике и в передатчике использовать DMA?
А сколько тактов необходимо для передачи одного байта из увв во внутр. память и наоборот?
И как оба процесса синхронизировать?


Может я чето не понял
у вас есть 10 линий ио для реализации параллельного интерфейса
и нужно перекачать 1600 байт за 1 мс
так?
по схемотехнике:
на приемнике:
задействуем 1 полный порт для приема передачи
1 пин ввода вывода произвольный (разрешение интерфейса)
1 пин (строб для чтения данных) - если надумали работать через PWM таймера то зарезервировать вывод OC таймера если через евент систем - то любую ножку.
---
далее:
условимся что приемник будет командовать передатчиком т.е разрешать работу и стробить
----
что делает сигнал строба:
по спаду - передатчик готовит данные на выдачу на порт
по подъему приемник читает это все дело в буфер
можно и наоборот главное четко это для себя определить.
----
в приемнике разрешаем работу ножки вывода строба
определяем длительность спада как ОСА
определяем длительность подъема как ОСВ
задаем вершину счета (переменные PER или TOP) именно по ним коунтер таймера обнуляем
----
длительность периода можно регулировать
мне хватило 3 такта длит спада 3 такта подъема итого 6 на период + ещё запас до вершины таймера (TOP) , хотя top может равняться = OCB
31,25 нС * 6 = 187,5 нС/байт *1600 = 300 мкС
под ваше условие 1мс -
можно спокойно сделать период 10тактов +10тактов = 20*31,25 *1600 = 1000мкС
----
свои тайминги можете крутить как хотите переменными OCA OCB и PER.
---
Главное здесь то, что процу нужно обрабатывать только старт,стоп пакета и флаг прерывания дма.
зыы:
такие опыты я делал когда получил из образцов мега а1 ещё давным давно


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
_pv
сообщение Mar 29 2016, 09:08
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



Цитата(Kovrov @ Mar 29 2016, 13:28) *
Может я чето не понял, у вас есть 10 линий ио для реализации параллельного интерфейса и нужно перекачать 1600 байт за 1 мс

Только не за 1мс, а за 200мкс, то есть не больше 4 тактов на байт.
Сколько тактов надо ДМА у хмеги не знаю, но есть подозрение что не успеет и синхронизацией с точностью до такта могут быть проблемы.
А вот процессору, чтобы положить байт из порта в память с инкрементом надо два такта, а чтобы из памяти в порт - три такта.
Если ДМА не успевает на передатчике единственная возможность это развернуть цикл 1536 раз
LD REG, Y+
OUT PORT, REG
LD REG, Y+
OUT PORT, REG
...
3 такта на байт.

А на приёмнике тоже самое только
IN REG, PORT
ST Y+, REG
NOP
IN REG, PORT
ST Y+, REG
NOP
...
и те же 3 такта на байт.

на приёмнике можно флэш можно сэкономить добавив передатчику один NOP чтобы было 4 такта и сделав бесконечный цикл
IN REG, PORT
ST Y+, REG
RJMP -2
4 такта на байт.
Выходить из которого придётся по прерыванию либо внешнему от передатчика, либо по таймеру, меняя адрес возврата на стэке.

Осталось только синхронизироваться, использовать просто прерывание нельзя, будет джиттер, так как не все инструкции однотактовые.

Передатчик должен дёрнуть ногой в 1, подождать несколько NOPов, дернуть обратно в 0, опять подождать определённое количество NOPов и потом уже начинать LD OUT LD OUT.
Приёмник должен сначала сделать поллинг ноги от передатчика, потом включить внешнее прерывание от этой же ноги на спад и сделать десяток другой NOPов, тогда в прерывание приёмник уйдёт строго синхронно с передатчиком, можно точно посчитать такты и вставить в передатчике нужное количество NOPов чтобы приёмник сэмплил данные строго через два такта после того как передатчик их выставил.
SBIS PORT,PIN
RJMP -2 //тут будет джиттер в несколько таков
SEI
NOP //а вот в прерывание по спаду он уже прыгнет с однотактовых NOPов без джиттера.
NOP
NOP
...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- zombi   Передать блок данных с мк на мк   Mar 22 2016, 14:20
- - ЯadiatoR   При 32МГц в 200мкс 6400 тактов. Как раз должно хва...   Mar 22 2016, 14:52
- - zombi   Цитата(ЯadiatoR @ Mar 22 2016, 17:52) Одн...   Mar 22 2016, 15:28
- - ЯadiatoR   Ну вариантов определения первого байта не много - ...   Mar 22 2016, 15:37
|- - zombi   Цитата(ЯadiatoR @ Mar 22 2016, 18:37) (а ...   Mar 22 2016, 15:46
- - _pv   это если они от одного источника тактируются или о...   Mar 22 2016, 16:08
- - Lerk   _pv, Цитата(zombi @ Mar 22 2016, 17:20) О...   Mar 22 2016, 16:20
- - _pv   да, действительно. тогда проблем не должно быть, т...   Mar 22 2016, 17:10
- - 501-q   Цитата(zombi @ Mar 22 2016, 19:20) Нужно ...   Mar 23 2016, 04:21
- - ЯadiatoR   Да что вы заморачиваетесь, если обработка в прерыв...   Mar 23 2016, 05:21
|- - _pv   Цитата(ЯadiatoR @ Mar 23 2016, 11:21) Да ...   Mar 23 2016, 07:49
|- - 501-q   Цитата(_pv @ Mar 23 2016, 12:49) я так по...   Mar 23 2016, 08:48
|- - _pv   Цитата(501-q @ Mar 23 2016, 14:48) Н...   Mar 23 2016, 09:10
|- - 501-q   Цитата(_pv @ Mar 23 2016, 14:10) и что-то...   Mar 23 2016, 09:23
- - ЯadiatoR   Ну на деле есть 6400 тактов. Конечно, компилятор р...   Mar 23 2016, 07:59
|- - _pv   Цитата(ЯadiatoR @ Mar 23 2016, 13:59) Ну ...   Mar 23 2016, 09:34
- - ЯadiatoR   Ну флеш то заиспользовать не проблема - а принимат...   Mar 23 2016, 09:18
- - ЯadiatoR   rjmp это хорошо, а кто инкремент будет делать? Или...   Mar 23 2016, 09:44
|- - _pv   Цитата(ЯadiatoR @ Mar 23 2016, 16:44) rjm...   Mar 23 2016, 09:48
|- - 501-q   Цитата(_pv @ Mar 23 2016, 14:48) ST Y+, r...   Mar 23 2016, 10:36
- - ЯadiatoR   сначала написал - потом подумал, жалко удалить ком...   Mar 23 2016, 09:58
- - ILYAUL   ЦитатаНо если памяти хватает, то можно тупо повтор...   Mar 23 2016, 20:36
- - piroman   SPI + DMA и нет проблем.   Mar 24 2016, 11:41
|- - ЯadiatoR   Цитата(piroman @ Mar 24 2016, 14:41) SPI ...   Mar 24 2016, 11:55
|- - 501-q   Цитата(zombi @ Mar 28 2016, 18:51) Предла...   Mar 29 2016, 04:12
||- - Kovrov   Цитата(501-q @ Mar 29 2016, 09:12) Ч...   Mar 29 2016, 07:06
- - Склихасовский   у меня был подобный опыт реализация LVDS на хмега...   Mar 29 2016, 05:27
- - ЯadiatoR   Может тут имелась ввиду не сама сложность, а то, ч...   Mar 29 2016, 07:10
- - Kovrov   а кому нужен этот геморой чтоб 1/5 времени проц то...   Mar 29 2016, 09:16
|- - _pv   Цитата(Kovrov @ Mar 29 2016, 15:16) а ком...   Mar 29 2016, 09:20
- - zombi   to _pv - именно так и планирую делать и это единст...   Mar 29 2016, 09:22
- - Kovrov   мое мнение вам нужно в корне пересмотреть вашу иде...   Mar 29 2016, 09:48
|- - zombi   Цитата(Kovrov @ Mar 29 2016, 12:48) мое м...   Mar 29 2016, 10:26
|- - Kovrov   Цитата(zombi @ Mar 29 2016, 15:26) уточни...   Mar 29 2016, 10:53
|- - zombi   Это задача а не идея.   Mar 29 2016, 11:13
- - Kovrov   ну остается только пожелать вам удачи в реализации...   Mar 29 2016, 11:15


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

 


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


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