PIC - как точно отследить отправку последнего байта посылки в UART

May 13, 2004 1 Replies

Hi Rifkat !

Совсем недавно 13 May 04 09:12, Rifkat Abdulin писал к Alexey V Bugrov:

RA> Hе хочется лишний раз трогать флаги разрешения/запрещения прерываний - RA> для надежности работы проца их статус (разр)все время подтверждается RA> в main loop. Это уже религия. Один флаг ты без опаски дергаешь, а другой боишься. В нашем деле не должно быть места религиозным течениям :) Все равно тебе нужно будет когда-то где-то переключать TXEN, так манипулируй вместо него битом TXIF.

Впрочем, у каждого свой подход и свои сложившиеся методы.

WBRgrds Ruslan

Hello Rifkat!



Thursday May 13 2004 09:27, you wrote to me:


SS>> Hе уверен, что это прокатит с пиками (не работал), но для 51 я SS>> такой трюк: перед передачей последнего байта переключаю uart в 9- SS>> // прерывание после вывода последнего байта прийдет RA> Вот здесь и проблема - нет в пиках прерывания по выводу байта - только RA> по загрузке в буфер передатчика ;-)



Hу наверное не по загрузке, а скорее по "выгрузке" из буфера в сдвиговый регистр ;)



Я посмотрел немного доки по пикам. Если рассматривать момент формирования последнего прерывания относительно выхода uart, то отличие от 51 в том, что, последнее прерывание приходит в начале стопового бита _предпоследнего_ выдвигаемого байта.



Тогда напрашивается такое решение: последний байт пакета выдавать, как я уже говорил, в режиме 9-бит (чтобы не резать стоп-бит), а потом еще выдать дополнительный фиктивный байт, только для того чтобы получить прерывание в нужном месте, отключить там драйвер 485 и дальше или тормозить uart или не трогать и дать ему отмолотить фиктивный байт в пустоту.



RA> -- RA> Rifkat < Team /Grave\ >



Best regards, Sergey.


Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required