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

 
 
 
Reply to this topicStart new topic
> uart & mega8535, Проблема с установкой скорости
studert
сообщение Mar 24 2005, 21:09
Сообщение #1


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

Группа: Свой
Сообщений: 76
Регистрация: 6-03-05
Из: Новосибирск
Пользователь №: 3 121



У этого контроллера на одном адресе сидит 2 регистра UBRRH и UCSRC, в одном есть биты отвечающие за число бит, а во втором за делитель частоты кварца. Мне надо выставить делитель в пределах 3-103 и 8бит данных, а не получается выставить 1й и 2й бит независимо в обоих регистрах. В даташите написано, что URSEL отвечает за переключение между этими регистрами, но у меня все равно ничего не получается, пробовал писать с установкой этого бита, все равно пишется в оба регистра. Может я чего не понял?
Go to the top of the page
 
+Quote Post
Miron
сообщение Mar 25 2005, 06:20
Сообщение #2


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

Группа: Validating
Сообщений: 149
Регистрация: 11-02-05
Из: Рязань
Пользователь №: 2 574



Цитата(studert @ Mar 25 2005, 00:09)
У этого контроллера на одном адресе сидит 2 регистра UBRRH и UCSRC, в одном есть биты отвечающие за число бит, а во втором за делитель частоты кварца. Мне надо выставить делитель в пределах 3-103 и 8бит данных, а не получается выставить 1й и 2й бит независимо в обоих регистрах. В даташите написано, что URSEL отвечает за переключение между этими регистрами, но у меня все равно ничего не получается, пробовал писать с установкой этого бита, все равно пишется в оба регистра. Может я чего не понял?
*


Попробуй так:
//******************************************************************
//UART initialize
void uart0_init(void)
{
UCSRB = 0x00; //disable while setting baud rate
UCSRA = 0x00; //disable while setting baud rate
UBRRL =0x33; //set baud rate
UBRRH = 0x00;
UCSRC = 0x86;
UCSRA = 0x01; //enable
UCSRB = 0xDC; //enable
}
Go to the top of the page
 
+Quote Post
Olegovich
сообщение Mar 25 2005, 06:23
Сообщение #3


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

Группа: Свой
Сообщений: 131
Регистрация: 3-03-05
Из: Санкт-Петербург
Пользователь №: 3 037



Цитата(studert @ Mar 25 2005, 00:09)
У этого контроллера на одном адресе сидит 2 регистра UBRRH и UCSRC, в одном есть биты отвечающие за число бит, а во втором за делитель частоты кварца. Мне надо выставить делитель в пределах 3-103 и 8бит данных, а не получается выставить 1й и 2й бит независимо в обоих регистрах. В даташите написано, что URSEL отвечает за переключение между этими регистрами, но у меня все равно ничего не получается, пробовал писать с установкой этого бита, все равно пишется в оба регистра. Может я чего не понял?
*

Ты всё правильно понял - именно такая ботва происходит, попробуй не трогать эти долбаные регистры. Сейчас плохо помню, но у меня получалось таким образом выставить 9 бит.
Я тут на форуме что-то писал п о этому поводу недавно.
Кажется, по умолчанию UBRRH=0, UCSRC=0x06, это как-то можно использовать.
Go to the top of the page
 
+Quote Post
yung
сообщение Mar 25 2005, 12:19
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 207
Регистрация: 25-03-05
Из: Рязань
Пользователь №: 3 669



Цитата(studert @ Mar 25 2005, 00:09)
У этого контроллера на одном адресе сидит 2 регистра UBRRH и UCSRC, в одном есть биты отвечающие за число бит, а во втором за делитель частоты кварца. Мне надо выставить делитель в пределах 3-103 и 8бит данных, а не получается выставить 1й и 2й бит независимо в обоих регистрах. В даташите написано, что URSEL отвечает за переключение между этими регистрами, но у меня все равно ничего не получается, пробовал писать с установкой этого бита, все равно пишется в оба регистра. Может я чего не понял?
*


Похожую проблему я встречал в какой-то меге, но это был глюк avr-studio (симуляция) , на самом кристалле все нормально работало.
Go to the top of the page
 
+Quote Post
Sergio66
сообщение Mar 25 2005, 13:00
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 235
Регистрация: 9-02-05
Пользователь №: 2 526



Цитата(studert @ Mar 25 2005, 00:09)
У этого контроллера на одном адресе сидит 2 регистра UBRRH и UCSRC, в одном есть биты отвечающие за число бит, а во втором за делитель частоты кварца. Мне надо выставить делитель в пределах 3-103 и 8бит данных, а не получается выставить 1й и 2й бит независимо в обоих регистрах. В даташите написано, что URSEL отвечает за переключение между этими регистрами, но у меня все равно ничего не получается, пробовал писать с установкой этого бита, все равно пишется в оба регистра. Может я чего не понял?
*


У меня все это работает как часы, и реализовано вот так
void uart0_init(void)
{

UCSRB = 0x00; //disable while setting baud rate
UCSRA = 0x00;
UCSRC = 0x86;
UBRRL = 0x17; //set baud rate lo
UBRRH = 0x00; //set baud rate hi
UCSRB = 0x98;
}
Камень - Mega32, но работает и на Mega16 и на 8535
попробуй! Должно пойти.
Go to the top of the page
 
+Quote Post
Olegovich
сообщение Mar 25 2005, 14:31
Сообщение #6


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

Группа: Свой
Сообщений: 131
Регистрация: 3-03-05
Из: Санкт-Петербург
Пользователь №: 3 037



Цитата(Sergio66 @ Mar 25 2005, 16:00)
У меня все это работает как часы, и реализовано вот так
void uart0_init(void)
{

UCSRB = 0x00; //disable while setting baud rate
UCSRA = 0x00;
UCSRC = 0x86;
UBRRL = 0x17; //set baud rate lo
UBRRH = 0x00; //set baud rate hi
UCSRB = 0x98;
}
Камень - Mega32, но работает и на Mega16 и на 8535
попробуй! Должно пойти.
*


Между мегами 8515, 8535 и мегой 16 есть разница. В 16-ой этого бага нет точно.
Go to the top of the page
 
+Quote Post

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

 


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


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