Как стать автором
Обновить

Комментарии 3

Жесть, особенно запрет всех прерываний в обработчика прерывания и разрешение обратно где - то в основном потоке. Также цикл for по количеству байт в обработчике прерывания.

Я надеюсь это просто для тестов(но непонятно зачем так делать и так усложнять код) и в продукт такое не идёт.

ИМХО, Такой код сам по себе сложен для понимания. А если надо будетъ что оо поменять или добавить? , я так понимаю придётся всё переписать. Не надо так.

  1. Целью статьи является рассмотрение модулей МК, а не создание какого-либо продукта, и даже не библиотеки. Исходный код приведен исключительно для тестирования функций МК.

  2. Чтение кадра в обработчике прерывания от ENC28J60 с помощью функции eth_recvpkt() показано для примера "без DMA" как раз для того, чтобы сравнить преимущества варианта с DMA.

  3. В обработчике dma_hdl() установка прикладных флагов делается через запрещение прерывания, чтобы обеспечить атомарность их обработки в основной программе, но это совершенно опционально.

  1. Ок, но даже пример, должен быть понятным

  2. Зачем в прерывании то?

  3. Тогда и разрешение должно быть сразу после установки,а не в другом потоке, кроме того, у вас что вложенные прерывания есть, где эти флаги считываются? Или вообще в чем смысл? Это же путает основательно, если вы ради примера, то зачем вообще это показывать, просто флаги установили и ок.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории