В приёмнике уарта при включенном фифо есть уровень срабатывания. А в передатчике аналогичного уровня нет (?). Поэтому когда возникает прерывание от уарта с кодом 0xC2 сколько нужно пихать байт в THR ? Когда я контролирую бит 0x20 внутри LSR то только один байт запихивается и сразу он обнуляется. Хотя на передачу фифо тоже 16 символьное. Если прерывание возникает только когда передаётся последний байт (когда фифо опустело), то при мегабоде скорости и длительных прерываниях от других источников (до 5 символов уарта) могут происходить нежелательные паузы в передаче. Неужели нет аппаратного "прямого" способа вызывать прерывание пораньше?
Есть конечно кривоватый другой способ забивания данных в уарт - по таймеру. Но в нём непонятно сколько данных забивать, т.к. я не вижу флага заполненности фифо. Может кто-нить его видет? Или есть идеи по выходу из моего тупика?
--------------------
Заблуждаться - Ваше законное право :-)
|