citizen писал(а):
Вот здесь:
http://www.youtube.com/watch?v=IRT4ShYi8Bw утверждается, что передавать данные из DMA в GPIO можно.
В исходниках того проекта
http://wakaba.c3.cx/repos/stm32f4-vga/VGA.c вроде как используется режим Memory to peripheral.
Частоту 1 Мгц должен обеспечивать один из таймеров, служащий источником событий для DMA.
Передавать-то можно, пока у меня получилось передать только в режиме MemoryToMemory, как в примере по ссылке - не выходит
(позже попробую весь проект пересобрать) Чисто теоретически можно генерировать DMA запросы с частотой 1 МГц по апдейту таймера и передавать (задав размер буфера = 1) по одному слову (байту, полуслову). Но в таком случае нужно будет сгенерировать около 2500 запросов на один массив, не многовато ли?
Задача тут другая - один запрос и данные из буфера пошли пошли пошли с заданной скоростью
В реалии получается так, как говорит
dccharacter - на запрос dma контроллер выплевывает данные из буфера с ему только известной скоростью (к примеру массив uint16_t [60000] - так что светодиод еле успевает моргнуть).
Angel71 писал(а):
Angel71
Памяти нужно не так уж и много на 16 серв максимум 2500 x 2 байт + возможно, второй массив такой же, а пересчитывать можно необходимыми кусками. Но, видимо, затее не суждено сбыться.
Уже переложил алгоритм DI_HALT'a c easyelectronics на stm32f4 - был немного разочарован, дрожание фронтов заставляет ноги поддергиваться, да и движения дерганные какие-то получаются, в общем, гексапод - псих выходит
(с таймерами все гораздо плавнее можно сделать), сегодня буду сглаживание прикручивать.