Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс. e-mail:jobsmp@pochta.ru |
Примерно следующая проблема: активировал FIFO для передачи данных. Передаю буфер в, скажем, 100 байт. По TBIR прерыванию подгружаю данные в FIFO. По TIR прерыванию смотрю, равен ли индекс в буфере данных размеру буфера и пустой ли FIFO. Если да, то переключаю ASC на приём (полудуплексная передача). При этом теряю при передаче 1 байт, т.е. вместо 100 байт приходят 99. Думаю, что из-за того, что TIR прерывамие приходит тогда, когда FIFO пуст, но последний байт всё еще стоит в Shift register.
Не могу найти, как определить, что Shift register пуст. Может кто встречался с подобным? Был бы рад любому совету. С XC161 я новичек