суббота, 26 марта 2011 г.

26 Mar 2011

Решили на днях испытать протокол связи, реализованный для шабашки. Сразу вылезли всякие глюки, которые были в большинстве своем отловлены. Остался один самый неприятный глюк: время от времени МК отваливался по таймауту, причем в случайные моменты времени. В ходе отладки было обнаружено, что пропадает один байт. А все из-за чего? В программе МК крутится один главный цикл, в котором поллились флаги UART. Но так как данные приходят с относительно высокой скоростью, походу во время обработки пришедшего байта приходил следующий и таким образом терялся. Сделал работу UART'а по прерываниям - полученные байтики складываются в буффер. После этого гонял байтики в течение 4х часов. Не было ни единого разрыва!

4 комментария:

  1. один поток на одно соединение?

    ОтветитьУдалить
  2. да, о многопотоках говорить как-то сложно ) все таки ядро 8051

    ОтветитьУдалить
  3. уныло, оптимизировать нечего )))

    ОтветитьУдалить
  4. как раз есть чего! иногда под такие мелкие архитектуры пишут специально на асме, чтобы дожать до минимума тактов, но это уже либо маразм либо исскуство

    ОтветитьУдалить