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

 
 
2 страниц V  < 1 2  
Closed TopicStart new topic
> HELP! MEGA16 UART, как правильно инициализировать UART?
manul78
сообщение Jul 10 2009, 07:56
Сообщение #16


Местный
***

Группа: Участник
Сообщений: 403
Регистрация: 14-05-07
Из: Россия, г.Пенза
Пользователь №: 27 719



Цитата(mempfis_ @ Jul 10 2009, 09:41) *
Размер символа определяется UCSZ2-UCSZ0. Биты RXB8/TXB8 используются для считывания/передачи 9го бита символа ( если используется формат 9 бит)


Блин ! Я уже устал объяснять ! В начальных установках передатчика у меня НЕТ команд изменения USRC !

//Set data frame format: asynchronous mode,no parity, 1 stop bit, 8 bit size
UCSRC=(1<<URSEL)|(0<<UMSEL)|(0<<UPM1)|(0<<UPM0)| (0<<USBS)|(0<<UCSZ2)|(1<<UCSZ1)|(1<<UCSZ0);

У меня ничего этого НЕТ !!! И все работает ! Терминал принимает и посылает информацию в режиме 8N1 !

Как такое может быть ? Т.е. по умолчанию у меня должно быть 5N1 !!!

Может у меня ATmega16 - из какой-то "кривой" партии ? Т.е. там стоит UART а не USART ?

Сообщение отредактировал manul78 - Jul 10 2009, 08:01


--------------------
" Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий." (с) К.Прутков.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jul 10 2009, 08:32
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(manul78 @ Jul 10 2009, 10:56) *
Блин ! Я уже устал объяснять ! В начальных установках передатчика у меня НЕТ команд изменения USRC !
Вот, именно - блин! Вы в DS хоть иногда смотрите? Намекаю: начальное значение (Initial Value) регистра UCSRC.
Go to the top of the page
 
+Quote Post
manul78
сообщение Jul 10 2009, 12:28
Сообщение #18


Местный
***

Группа: Участник
Сообщений: 403
Регистрация: 14-05-07
Из: Россия, г.Пенза
Пользователь №: 27 719



Цитата(Палыч @ Jul 10 2009, 12:32) *
Вот, именно - блин! Вы в DS хоть иногда смотрите? Намекаю: начальное значение (Initial Value) регистра UCSRC.


Т.е Вы хотите сказать, что при старте ATmega16 бутлоадер грузит в UCSRC "базовые" значения 8N1 ?

Потому-что если UCSRC не инициализируется "святым духом" то биты UCSZ2, UCSZ1, UCSZ0 равны НУЛЮ !

Интересно как это организованно "начальное значение (Initial Value) регистра UCSRC." аппаратно или програм-
но ?


--------------------
" Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий." (с) К.Прутков.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jul 10 2009, 13:03
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(manul78 @ Jul 10 2009, 15:28) *
Интересно как это организованно "начальное значение (Initial Value) регистра UCSRC." аппаратно или програмно ?
Конечно - аппаратно. По reset регистры устанавливаются в Initial Value.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 10 2009, 13:08
Сообщение #20


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(manul78 @ Jul 10 2009, 15:28) *
Потому-что если UCSRC не инициализируется "святым духом" то биты UCSZ2, UCSZ1, UCSZ0 равны НУЛЮ !
А нули там должны появляться от "святого духа", или же они являются частным случаем инициализирующего значения?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
pimen
сообщение Jul 13 2009, 19:43
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 67
Регистрация: 30-11-07
Пользователь №: 32 846



Цитата
19.5 USART Initialization
...
The following simple USART initialization code examples show one assembly and one C function
that are equal in functionality. The examples assume asynchronous operation using polling
(no interrupts enabled) and a fixed frame format. The baud rate is given as a function parameter.
For the assembly code, the baud rate parameter is assumed to be stored in the r17:r16 registers.
When the function writes to the UCSRC Register, the URSEL bit (MSB) must be set due to
the sharing of I/O location by UBRRH and UCSRC.


Цитата
19.10.2 Read Access
Doing a read access to the UBRRH or the UCSRC Register is a more complex operation. However,
in most applications, it is rarely necessary to read any of these registers.
The read access is controlled by a timed sequence. Reading the I/O location once returns the
UBRRH Register contents. If the register location was read in previous system clock cycle, reading
the register in the current clock cycle will return the UCSRC contents. Note that the timed
sequence for reading the UCSRC is an atomic operation. Interrupts must therefore be controlled
(for example by disabling interrupts globally) during the read operation.
The following code example shows how to read the UCSRC Register contents.


По русски:
запрещены прерывания во время записи и чтения регистров UBRRH и UCSRC.
для записи в UBRRH бит URSEL должен быть равен 0, для записи в регистр UCSRC бит URSEL должен быть равен 1.
для чтения UBRRH его надо считать первым. повторное чтение данного регистра вернет содержимое регистра UCSRC.

Цитата
Студия некорректно отбражает этот регистр - читайе описание ее багов в хелпе. Смею предположить, что и JTAGICE и JTAGICE mkII при отображении в окнах регистров также отображают UCSRC неправильно, ибо читает его как и все остальные регистры - однократным чтением.


подтверждаю )

Всем спасибо, разобрался

Сообщение отредактировал pimen - Jul 13 2009, 19:45
Go to the top of the page
 
+Quote Post
manul78
сообщение Jul 14 2009, 09:56
Сообщение #22


Местный
***

Группа: Участник
Сообщений: 403
Регистрация: 14-05-07
Из: Россия, г.Пенза
Пользователь №: 27 719



Цитата(Сергей Борщ @ Jul 10 2009, 17:08) *
А нули там должны появляться от "святого духа", или же они являются частным случаем инициализирующего значения?


Осознал... , тему можно считать закрытой...


--------------------
" Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий." (с) К.Прутков.
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Closed TopicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


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


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