Димон Безпарольный 2 11 мая, 2019 Опубликовано 11 мая, 2019 (изменено) · Жалоба Софт читает 4 АЦП каждые 2 мс. Нужно записать поток на SD. Сделал двойную буферизацию, пишу в буфер в прерываниях от АЦП. Первая беда в том, что если прерывание выполняется более 100мкс, наблюдаю множественные ошибки FR_DISK_ERR при записи блока. Блоки 512 - 8192 пробовал разные, не помогает. Беда в том, что числа INT должны быть преобразованы в текстовый HEX. Это отнимает время. Процессор пашет на 84МГц и ускорять его я не имею право. Хотя резерв есть. Отключать прерывания при записи блока нельзя. Как - то можно победить сей недуг? Библиотека FATFS R0.12c Среда - Keil 5.17. К слову, если писать без буферов, при большом потоке данных также возникают такие же ошибки. Может библиотека некорректно определять готовность карты принимать данные? Изменено 11 мая, 2019 пользователем Димон Безпарольный Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Димон Безпарольный 2 11 мая, 2019 Опубликовано 11 мая, 2019 · Жалоба Отбой! Включил hsd.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_ENABLE; - полегчало. Ушел разбираться что за змий такой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Димон Безпарольный 2 11 мая, 2019 Опубликовано 11 мая, 2019 · Жалоба А вот и нет - ничего путного в Сети не нашел на эту тему. Беда. Может кто знает? У всех Disable стоит и никто не парится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AVI-crak 0 11 мая, 2019 Опубликовано 11 мая, 2019 · Жалоба Управление количеством транзакций дма со стороны sd, грубо говоря можно корректно обработать массив в 66кб (больше счётчика дма). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MiklPolikov 0 12 мая, 2019 Опубликовано 12 мая, 2019 · Жалоба Ну во-первых не нужно сваливать в одну кучу "прерывания АЦП" и "запись SD" Напишите стабильно работающую задачу записи SD . Оттестируйте с разными объёмами данных, разными скоростями и периодичностями, соберите статистику неудач в течении суток. Да-да, ошибка SD не должна быть фатальным крахом всей системы, а должна корректно обрабатываться. И лог ошибок должен куда- то сохраняться, например во встроенную память CPU. И вот только с таким подходом я когда-то сделал стабильную работу SD. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться