реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Проподает стоповый бит в UART
dx40
сообщение Jun 16 2007, 18:51
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 147
Регистрация: 4-05-06
Пользователь №: 16 779



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);
        }
    }


Тыкаю осциллографом - а стоповый бит всего один! А где второй?
Go to the top of the page
 
+Quote Post
=GM=
сообщение Jun 16 2007, 21:49
Сообщение #2


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



[.......]

Ну так, неправильно инициализируете UCSRC. Надо чтобы бит URSEL=1, а у вас он равен 0, вот по умолчанию и получается один стоповый бит.

Сообщение отредактировал zltigo - Jun 17 2007, 07:56


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 17 2007, 07:58
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



To =GM=
Избегайте обширного цитирования без всякой на то надобности.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
dx40
сообщение Jun 17 2007, 09:28
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 147
Регистрация: 4-05-06
Пользователь №: 16 779



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

Спасибо! Разобрался.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 19:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01364 секунд с 7
ELECTRONIX ©2004-2016