[an error occurred while processing this directive]
|
Кто мне скажет, в какой момент выставляется прерывание от передатчика UART: в момент, когда вылез наружу последний бит данных, или когда уже вылез стоп бит?
Значит, почему спрашиваю: сейчас в приборе сделан полудуплексный RS-485. Так вот если переключить направление во время прерывания после прередачи последнего символа, то на другой стороне последний символ принимается битым. У меня такое подозрение, что прерывание выдаётся когда стоп бит ещё не вылез и моё переключение садит какой-то мусор на линию.
Сделал по-другому, перед передачей последнего символа устанавливаю бит LISTEN (эхо, приёмник начинает слышать свой передатчик), потом запрещаю прерывания от передатчика, разрешаю от приёмника и ложим символ в буфер. В процедуре приёмника переключаем направление. Но и здесь какая-то бадяга. Прерывание от приёмника при приёме последнего символа случаются стабильно только каждый второй раз. Т.е. во время первой посылки приёмник принял последний символ от передатчика, выставил прерывание - всё ОК. Второй раз - болт, даже флага прерывания нет, если передавать третий раз - то прерывание есть, четвёртый - нет и т.д.
Ерату смотрел - на мою серию вообще ничего нет.
E-mail: info@telesys.ru