Цитата(zltigo @ Oct 11 2006, 12:17)

Естествено 16, поскольку мгновенным ничего не бывает, и скорость передачи не бесконечно низкая, то и пока будете 16 запихивать первый уже в сдвиговый регистр в большинстве реальных приложений попадет, значит 17. 17-тым не пользуюсь, а 16 загружаю.
17 - пожалуй перебор.
Такой ситуации практически не бывает на относительно невысоких скоростях передачи.
Время передачи одного/двух бит (стоповый бит) или 7..11 бит (целого слова) часто довольно большое.
Например для B9600 м.б. ~100..1100мкс.
Да и на макс. скорости для 8N1 у проца есть 10*16 тактов, что вполне соизмеримо с временем записи 16 байтиков в U0THR с учётом хорошей оптимизации, задержек на ISR и тормознутой переферии.
А смутил меня попавшийся в двух примерах такой (псевдо)код в ISR:
Код
while (U0LSR & ULSR_THRE)
{
U0THR = uart0_tx_buffer[uart0_tx_extract_idx++];
}
Т.е. они там по одному (в лучшем случае два) байту за прерывание отправляли, при активированном FIFO.