-
- Обычно после пакета следует пауза, вот по ней и разбирать пакет. - Lightelf(07.04.2017 08:59)
- Не нужно использовать паузу в качестве конца пакета ни в коем случае. Ale3000(135 знак., 07.04.2017 11:54)
- даладна... И как Вы предполагаете без паузы добиться синхронизации модуля УАРТ с принимаемым байтом? - my504(07.04.2017 12:38)
- Даже я заметил, что не использовать паузу вообще и не использовать её в качестве маркера конца пакета — совершенно разные вещи %) В — Внимательность. Д — Дурацкий букварь. - Николай Коровин(07.04.2017 12:52)
- А я и не предлагал использовать ее в качестве маркера. Более того, маркер конца пакета нужен только при переменной и ПРОИЗВОЛЬНОЙ длине пакета, а в таком варианте невозможно использование ДМА. Пауза нужна ТОЛЬКО для синхронизации. Просто удобно my504(114 знак., 07.04.2017 13:01)
- Херали "при переменной и ПРОИЗВОЛЬНОЙ длине пакета, а в таком варианте невозможно использование ДМА"? Самый смак там и использовать DMA. Сделал буфер пожирнее (чтобы пакет заведомо влез) и алга. - LightElf(07.04.2017 13:11)
- повтор. - my504(07.04.2017 13:35 - 13:37)
- Дело не в буфере, а в определении момента завершения пакета. Сам буфер тут вообще не причем. Причем счетчик ДМА, который по завершении цикла счета генерирует прерывание, которое и есть событие конца пакета. - my504(07.04.2017 13:35)
- Момент завершения пакета - состояние линии IDLE. Т.е. байтики валятся, DMA их в память складывает. Когда буфер заполнился или на линии IDLE - смотрим в буфер и парсим то что там лежит. - LightElf(07.04.2017 13:55)
- Да не нужно ничего определять, нужно только эмулировать FIFO с помощью DMA, и на этом - всё. - =AlexD=(07.04.2017 13:46)
- Отлично, только с ДМА будет не все просто, потому что потребуется перезапускать ДМА по какому либо критерию и поддерживать актуальный указатель буфера ДМА, что при его кольцевом характере создаст
индусскийплохо читаемый код... - my504(07.04.2017 14:49)- Вы не поняли - ДМА аппаратно ведёт указатель на принятые данные. Большее от него не требуется. Apтём(398 знак., 07.04.2017 18:13)
- Это все и так было понятно. Проблема в расчете границы необработанных данных. В ФИФО все сделано аппаратно, а тут нужно считать ручками. - my504(07.04.2017 18:21)
- Эээ... Apтём(762 знак., 07.04.2017 18:42 - 18:48)
- Это все и так было понятно. Проблема в расчете границы необработанных данных. В ФИФО все сделано аппаратно, а тут нужно считать ручками. - my504(07.04.2017 18:21)
- А шо делать, а кому щас лехко. - =AlexD=(07.04.2017 14:58)
- Вы не поняли - ДМА аппаратно ведёт указатель на принятые данные. Большее от него не требуется. Apтём(398 знак., 07.04.2017 18:13)
- Отлично, только с ДМА будет не все просто, потому что потребуется перезапускать ДМА по какому либо критерию и поддерживать актуальный указатель буфера ДМА, что при его кольцевом характере создаст
- Херали "при переменной и ПРОИЗВОЛЬНОЙ длине пакета, а в таком варианте невозможно использование ДМА"? Самый смак там и использовать DMA. Сделал буфер пожирнее (чтобы пакет заведомо влез) и алга. - LightElf(07.04.2017 13:11)
- А я и не предлагал использовать ее в качестве маркера. Более того, маркер конца пакета нужен только при переменной и ПРОИЗВОЛЬНОЙ длине пакета, а в таком варианте невозможно использование ДМА. Пауза нужна ТОЛЬКО для синхронизации. Просто удобно my504(114 знак., 07.04.2017 13:01)
- Даже я заметил, что не использовать паузу вообще и не использовать её в качестве маркера конца пакета — совершенно разные вещи %) В — Внимательность. Д — Дурацкий букварь. - Николай Коровин(07.04.2017 12:52)
- даладна... И как Вы предполагаете без паузы добиться синхронизации модуля УАРТ с принимаемым байтом? - my504(07.04.2017 12:38)
- Если прием по ДМА, то разбор пакета делается по флагу установленному в прерывании по этому ДМА. А есть или нет паузы между пакетами в этом процессе значения не имеет. Пауза нужна лишь для поиска начала как пакета, так и байта. такая пауза длиной my504(209 знак., 07.04.2017 09:07)
- Пакеты могут быть переменной длины, в том числе - значительно короче буфера DMA. Пакет пришел - а прерывания от DMA нет. Ферштейн? - LightElf(07.04.2017 10:26)
- Вы все неправы. Надо передавать читаемые человеком строки. Числа - в десятичном виде. Завершать "\r\n". И ниипет! - SciFi(07.04.2017 10:32)
- Как здорово, если сам выбираешь протокол! А если протокол выбирает тебя? Вот вам устройство управления с ТАКИМ протоколом, будь добр выполняй на пакетах непредсказуемой длины. И с неизвестными паузами. Известны только признаки начала и (иногда) Лагунов(21 знак., 07.04.2017 11:50)
- +1, у меня, к сожалению, практически всегда так - 0men(07.04.2017 12:21)
- Вариант кстати, если у чипца UART умеет генерить прерывание по приему определенного символа. Но это не очень распространенная опция. А паузой в передаче обычно считается период 1 или 0.5 байт при текущей скорости. - LightElf(07.04.2017 10:39)
- Опять вы все неправы. У меня везде Main Loop. Парсить принимаемые данные байт за байтом ну нискольно не напрягает. - SciFi(07.04.2017 10:42)
- Ну это ж от конструкции софта зависит. Ежели так - то само собой. - LightElf(07.04.2017 10:44)
- Опять вы все неправы. У меня везде Main Loop. Парсить принимаемые данные байт за байтом ну нискольно не напрягает. - SciFi(07.04.2017 10:42)
- И недельная пауза между строками :) - Petrovich(07.04.2017 10:36, )
- Как здорово, если сам выбираешь протокол! А если протокол выбирает тебя? Вот вам устройство управления с ТАКИМ протоколом, будь добр выполняй на пакетах непредсказуемой длины. И с неизвестными паузами. Известны только признаки начала и (иногда) Лагунов(21 знак., 07.04.2017 11:50)
- Пауза не подходит, длина пакета не подходит. Значит, использование ДМА мало пригодно для обмена по УАРТ - Petrovich(07.04.2017 10:31, )
- Не для обмена по УАРТ, а ДЛЯ ВАШЕГО ПРОТОКОЛА (в смысле использованного Вами). - my504(07.04.2017 12:41)
- Вы все неправы. Надо передавать читаемые человеком строки. Числа - в десятичном виде. Завершать "\r\n". И ниипет! - SciFi(07.04.2017 10:32)
- Пакеты могут быть переменной длины, в том числе - значительно короче буфера DMA. Пакет пришел - а прерывания от DMA нет. Ферштейн? - LightElf(07.04.2017 10:26)
- Не нужно использовать паузу в качестве конца пакета ни в коем случае. Ale3000(135 знак., 07.04.2017 11:54)
- Обычно после пакета следует пауза, вот по ней и разбирать пакет. - Lightelf(07.04.2017 08:59)