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

 
 
 
Reply to this topicStart new topic
> Кольцевой буфер и DMA, в xMega
ArtemKAD
сообщение Jul 6 2012, 14:54
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Не подскажет ли кто, может ли DMA канал в xMega A3 организовать автоматическое закидывание байтов данных в кольцевой буфер без ручной переустановки указателя на начало?
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Jul 6 2012, 15:23
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(ArtemKAD @ Jul 6 2012, 17:54) *
Не подскажет ли кто, может ли DMA канал в xMega A3 организовать автоматическое закидывание байтов данных в кольцевой буфер без ручной переустановки указателя на начало?

Настройка ADDRCTRL.DESTRELOAD в ненулевое значение.
Только зачем?
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Jul 6 2012, 17:11
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Спасибо, попробую. Похоже именно оно.
Есть асинхронный входной USART (и даже не один). Есть желание перестать гоняться за каждым принятым байтом(успевать до принятия следующего). Но нет желания резервировать буфер на всю возможную принятую строку.

ЗЫ. А вот если-бы еще и автоматом символ конца строки обнаруживал. disco.gif
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Jul 6 2012, 17:29
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(ArtemKAD @ Jul 6 2012, 20:11) *
Спасибо, попробую. Похоже именно оно.
Есть асинхронный входной USART (и даже не один). Есть желание перестать гоняться за каждым принятым байтом(успевать до принятия следующего). Но нет желания резервировать буфер на всю возможную принятую строку.

Не знаю поможет ли вам перегрузка адреса: дма примет сколько-то байт перегрузит адрес и начнет преписывать буфер новыми значениями.
К тому же может быть неизвестан объём принимаемых данных. и как тогда настраивать дма?

PS. Мне больше понравилось использование дма для передачи по уарту, приём как-то не очень, разве что приём пакетов известной длины.
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Jul 6 2012, 18:43
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Цитата
дма примет сколько-то байт перегрузит адрес и начнет преписывать буфер новыми значениями.

По идее пока он начнет переписывать я успею от уже принятых данных буфер подчистить.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Jul 6 2012, 19:47
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(ArtemKAD @ Jul 6 2012, 21:43) *
По идее пока он начнет переписывать я успею от уже принятых данных буфер подчистить.

А как собитаетесь узнавать сколько байт уже пришло в приёмный буфер?
Channel Destination Address проверять? Это корректно?
Go to the top of the page
 
+Quote Post
ArtemKAD
сообщение Jul 7 2012, 08:04
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 508
Регистрация: 26-06-06
Из: Киев
Пользователь №: 18 364



Цитата
А как собитаетесь узнавать сколько байт уже пришло в приёмный буфер?

Для текстового потока могу никак - достаточно факта того, что там хоть один есть. На место изъятого из буфера байта помещаю какой нибудь невероятный символ (к примеру 0xFF) и так, пока не встречу такой-же символ, что будет означать начало еще не занятого участка. Главное, что-бы указатель записи не перегнал указатель чтения (определяется длиной буфера и максимальным временем реакции)...
Цитата
Channel Destination Address проверять? Это корректно?

Пока не знаю. Хотя и так попробую...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th June 2025 - 03:48
Рейтинг@Mail.ru


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