Balabes 0 28 ноября, 2014 Опубликовано 28 ноября, 2014 · Жалоба Здравствуйте! Хочется, но не можется пока что реализовать глобальный счетчик. Поясняю, включается ДМА и начинает забирать с УАРТа в массив (допустим DMA_BufferSize= 50), счетчик ДМА начинает уменьшаться с каждым принятым байтом на 1. Все это происходит в режиме Circular, т.е. дойдя до 0 ДМА начнет переписывать массив с начала и счетчик снова станет = 50. Хотелось бы Глобальный счетчик, так что бы считал не кол-во байт до конца (как стандартно делает ДМА) а общее кол-во принятых. Пытался в прерывании по USART RXNE считать, но как я понял проц не выходит из прерывания, хотя флаг должен чистить ДМА при чтении из USART->DR. Может кто-то так делал? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DmitryM 0 28 ноября, 2014 Опубликовано 28 ноября, 2014 · Жалоба Здравствуйте! Хочется, но не можется пока что реализовать глобальный счетчик. Поясняю, включается ДМА и начинает забирать с УАРТа в массив (допустим DMA_BufferSize= 50), счетчик ДМА начинает уменьшаться с каждым принятым байтом на 1. Все это происходит в режиме Circular, т.е. дойдя до 0 ДМА начнет переписывать массив с начала и счетчик снова станет = 50. Хотелось бы Глобальный счетчик, так что бы считал не кол-во байт до конца (как стандартно делает ДМА) а общее кол-во принятых. Пытался в прерывании по USART RXNE считать, но как я понял проц не выходит из прерывания, хотя флаг должен чистить ДМА при чтении из USART->DR. Может кто-то так делал? Что ж Вы DMA мешаете своим прерыванием RXNE? Используйте прерывание от того же DMA(Half, Full). Размер буфера DMA известен, перемножить не сложно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Balabes 0 28 ноября, 2014 Опубликовано 28 ноября, 2014 · Жалоба а как быть если пришло 138 байт? 100 я в прерывании увижу, а дальше?нужно знать когда кончились данные Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 15 28 ноября, 2014 Опубликовано 28 ноября, 2014 · Жалоба Добавьте прерывание по IDLE. Вот вам ccылочка на тему про приём из UART-а с использованием DMA. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Balabes 0 28 ноября, 2014 Опубликовано 28 ноября, 2014 · Жалоба Спасибо, почитаю! По первому сообщению ТС очень похоже на то что мне надо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться