[an error occurred while processing this directive]
|
Основа - таймерное прерывание с частотой 8х или 16хBaud. В нем делаются все действия по передаче и часть действий по приему. Структура - отдельные конечные автоматы, полностью повторяющие функционирование аппаратного UART, неоднократно описанное в литературе. Распознавание приема старт-бита делать по прерыванию от спада на квази-RxD, от него отсчитывать все таймауты. Здесь очень удобно использовать Capture, но и без него никаких сложностей не возникнет.
Я так делал системку с 4 программными и 2 аппаратными UART на Меге128 (16 МГЦ). Система обеспечивала безукоризненный плотный обмен по всем каналам одновременно (UART1=115.2K, UART2=921.6K, SUART3..SUART6=115.2K). "эталонная" аппаратная восьмипортовка давала на порядок более высокую частоту сбоев
E-mail: info@telesys.ru