PIC18F452 USART баг

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

Reply to
Ruslan Mohniuc
Loading thread data ...

Hi Ruslan, hope you are having a nice day!

18 Hоя 05, Ruslan Mohniuc wrote to All:

Это фича.

RM> movwf TXREG,a RM> nop RM> btfsc TXIF,a RM> bra $-1

RM> Hормально ждет освобождения буфера, так как флаг уже взведен.

RM> Что интересно: я не увидел этого нигде ни в даташите ни в ерратах, а RM> симулятор в MPLAB 7.22 это показывает именно так, взводит флаг через RM> команду после записи в регистр. Hо если симулятор об этом в курсе, то RM> где задокументировано такое поведение? Я не нашел.

RM> Теперь думаю, какие еще флаги могут так себя вести... :(

39564b.pdf page172 выделено в рамочке на сером фоне.

Note:

TXIF is not cleared immediately upon load- ing data into the transmit buffer TXREG. The flag bit becomes valid in the second instruction cycle following the load instruction.

WBR, AVB

Reply to
Alexey V Bugrov

Это описано в микрочиповском документе AN774. Та рекомендую проверять лиюо вставлять Nop после проверки, либо вместо TXIF флаг TRMT.

Reply to
invalid unparseable

Hi Alexey !

Совсем недавно 18 Nov 05 23:42, Alexey V Bugrov писал к Ruslan Mohniuc:

AB> Это фича.

RM>> Что интересно: я не увидел этого нигде ни в даташите ни в ерратах

AB> 39564b.pdf page172 выделено в рамочке на сером фоне.

От блин, а я как распечатал себе давно-предавно 39564a 2001го года, так и не задумывался о наличии более новой редакции. За новыми ерратами на сайт вчера полез, а вот на версию даташита не обратил внимание. Уже скачиваю. У меня даже камни 452-е есть более старые, чем новая редакция даташита, так в них все так же работает. :)

Спасибо. Hужно почаще из пещеры выбираться, смотреть что в мире изменилось.

WBRgrds Ruslan

Reply to
Ruslan Mohniuc

Hi Владимир !

Совсем недавно 19 Nov 05 00:20, Владимир Соломийчук писал к Ruslan Mohniuc:

ВС> Это описано в микрочиповском документе AN774. ВС> Та рекомендую проверять лиюо вставлять Nop после проверки, либо вместо ВС> TXIF флаг TRMT. Спасибо, гляну.

WBRgrds Ruslan

Reply to
Ruslan Mohniuc

Hello Ruslan!

18 Nov 05 19:46, you wrote to All:

RM> Флаг занятости передатчика (TXIF) устанавливается на команду позже, RM> чем происходит запись в регистр передатчика. (подразумевается, что

Это не волнует никого, кроме конструкторов RS-422. Дело в том, что имеет смысл сначала проверять готовность, и только затем помещать байт в регистр. Пусть потом железо порта выдает байт, пока оно это делает, ты можешь заняться подготовкой следующего.

Anatoly

Reply to
Anatoly Mashanov

Ruslan, ты ещё здесь сидишь?

Пятница Hоябрь 18 2005 19:46, Ruslan Mohniuc wrote to All:

RM> Случайно заметил особенность камня: RM> Флаг занятости передатчика (TXIF) устанавливается на команду позже, RM> чем происходит запись в регистр передатчика. (подразумевается, что RM> сдвиговый регистр передатчика TSR уже занят) То есть имеем: RM> это не работает: RM> movwf TXREG,a RM> btfsc TXIF,a RM> bra $-1 RM> Проскакивает мимо, так как к моменту проверки флаг еще не взведен.

Угу, известный глюк. Впрочем, это вообще плохой стиль работы с передатчиком, гораздо разумнее проверять готовность _до_ передачи байта. Тогда после передачи можно полезными делами заниматься, а не тупо ждать окончания передачи (и скорость обмена будет выше).

Георгий

Reply to
George Shepelev

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.