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