Hi All !
Случайно заметил особенность камня: Флаг занятости передатчика (TXIF) устанавливается на команду позже, чем происходит запись в регистр передатчика. (подразумевается, что сдвиговый регистр передатчика TSR уже занят) То есть имеем:
это не работает:
movwf TXREG,a btfsc TXIF,a bra $-1
Проскакивает мимо, так как к моменту проверки флаг еще не взведен.
а это работает:
movwf TXREG,a nop btfsc TXIF,a bra $-1
Hормально ждет освобождения буфера, так как флаг уже взведен.
Что интересно: я не увидел этого нигде ни в даташите ни в ерратах, а симулятор в MPLAB 7.22 это показывает именно так, взводит флаг через команду после записи в регистр. Hо если симулятор об этом в курсе, то где задокументировано такое поведение? Я не нашел.
Да, железо ведет себя точно так же, без вставленного нопа не работает.
Теперь думаю, какие еще флаги могут так себя вести... :(
WBRgrds Ruslan