Ещё один эксперимент.
Код
void test_UART()
{
U0TXBUF = 0x5a;
P6OUT |= 1;
for(; IFG1 & UTXIFG0 == 0;);
P6OUT |= 4;
for(;UART0.uart->utctl.txept == 0;);
P6OUT &= ~5;
}
Итого:
На обеих ногах импульс длительностью 8,5 мс
То есть: TXIFG формируется сразу же, как только кинули байт в буфер.
10 мкс в прошлом разе - это время выполнения обработчика прерывания.
То есть, по всей вероятности, в момент прерывания TXEPT уже торчит.
Попутно ткнулся в выходной сигнал и обнаружил, что начало стартового бита запаздывает относительно момента записи в сдвиговый регистр на 400 мкс, то есть половину битового интервала.
Щас гляну ещё конец.
Что и требовалось доказать.
TXEPT (по которому предположительно вызывается прерывание), тоже отодвинут на пол-интервала от конца стопового бита
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)