Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проподает стоповый бит в UART
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
dx40
MEGA8, 12 MHz использую UART передатчик (приемник отключен), скорость передачи 250кбит

// UART 250000, 8N2
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x0E;
UBRRH=0x00;
UBRRL=0x02;

Передаю так
Код
   for(;;){
        usbPoll();

        if (UCSRA&(1<<UDRE)) {
            flag=0;
            if ((dmxcnt&8000)==8000) { //если dmxcnt<0
                if (dmxcnt==(-3)) {UCSRB=UCSRB&247; PORTD=PORTD&253;  }   //выключаем UART, делаем break
                if (dmxcnt==(-2)) {PORTD=PORTD&253;  }  
                if (dmxcnt==(-1)) PORTD |=(1<<1);   //MaB
        } else {
            UCSRB=UCSRB|8;
            UDR=dmxbuf[dmxcnt];
        }
        dmxcnt++;
        if (dmxcnt>dmxlen) dmxcnt=(-3);
        }
    }


Тыкаю осциллографом - а стоповый бит всего один! А где второй?
=GM=
[.......]

Ну так, неправильно инициализируете UCSRC. Надо чтобы бит URSEL=1, а у вас он равен 0, вот по умолчанию и получается один стоповый бит.
zltigo
To =GM=
Избегайте обширного цитирования без всякой на то надобности.
dx40
Цитата(=GM= @ Jun 17 2007, 01:49) *
Ну так, неправильно инициализируете UCSRC. Надо чтобы бит URSEL=1, а у вас он равен 0, вот по умолчанию и получается один стоповый бит.

Спасибо! Разобрался.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.