-
- Даже я заметил, что не использовать паузу вообще и не использовать её в качестве маркера конца пакета — совершенно разные вещи %) В — Внимательность. Д — Дурацкий букварь. - Николай Коровин(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)