ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 марта
783012
symbions (27.09.2017 10:26, просмотров: 13214) MBedder
AVR и три сосны... Делаю обмен по УАРТу с ПК, надо поддерживать режимы 8N1,8N2,8odd,8even. Запустил без проблем, но вот обработка ошибок - не работет: с ПК идёт посылка с 8-мью битами и контролем по чётности(even), на приборе стоит режим 8 бит с контролем по нечётности(odd) - и обмен идёт прекрасно. С программами на ПК разобрался - в тестовых просто не обращают на ошибки такого рода при обмене (putty,Hercules и писанная давным-давно нашим программистом), в боевой - там да, рубит приём. Но вот с программой в Атмеге32А - не понятно. //проверка ошибок фрейма, чётности - нечётности, 2х стопбитов if ((UCSRA&(1<<FE))==1) {//ошибка фрейма bufer_UART.chislo_bayt = 0;//сбросили приёмный буфер в начальное состояние UCSRA=0x02;//сброс FE return; } if (Nastroyki.rejim!=R_NPOSB){//если не режим с одним стопбитом if (Nastroyki.rejim==R_NPTSB){//если режим с двумя стопбитами //это уже сделал от безысходности - но как и предполагалось - не пашет if ((UCSRB&(1<<RXB8))==1) {//ошибка 2х стопбитов bufer_UART.chislo_bayt = 0;//сбросили приёмный буфер в начальное состояние return; } }else{//else - если режим с двумя стопбитами if ((UCSRA&(1<<PE))==1) {//ошибка чётности/нечётности bufer_UART.chislo_bayt = 0;//сбросили приёмный буфер в начальное состояние UCSRA=0x02;//сброс PE return; } }//else - если режим с двумя стопбитами }//если не режим с одним стопбитом В даташите пишет, что контроль чётности сделан автоматически - так вот - не работает по факту :( Или я что-то не понимаю :( Что скажете, господа-товарищи?