Несоответствие скорости USART заданной.

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Нашел транзистор. Понюхал.
Сообщения: 185
Зарегистрирован: Чт сен 06, 2007 22:36:09
Откуда: Санкт-Петербург

Сообщение Skrrmrchoh »

Передатчик-Мега 8. Кварц- 4Мгц.

Кладу в UBRRL значение 0x0С. Это соответствует скорости 19200. Открываю терминал, принимаю. Принимается лабуда. Ставлю в терминале скорость 56000 или 57600- принимается четко то, что я отправил.

Кладу в регистр 0х33- должна бы быть скорость 4800, но опять лабуда. Работает на 14400.

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud rate: 19200
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x0c;

Где я ошибся?
Реклама
Опытный кот
Аватара пользователя
Сообщения: 703
Зарегистрирован: Вс янв 18, 2009 21:12:49

Сообщение asteroid7 »

Перед установкой (сменой) скорости UART должен быть остановлен (UCSRB = 0), и только после запущен.
Реклама
Нашел транзистор. Понюхал.
Сообщения: 185
Зарегистрирован: Чт сен 06, 2007 22:36:09
Откуда: Санкт-Петербург

Сообщение Skrrmrchoh »

Исправил, спасибо..Может, еще где- то я ошибся? Оно так и работает на 56к...При заданных 19...
Опытный кот
Аватара пользователя
Сообщения: 703
Зарегистрирован: Вс янв 18, 2009 21:12:49

Сообщение asteroid7 »

"...на 56к..." вы кварцем ошиблись.
19 это что? DEC или HEX? В принципе без разницы, скорость соответственно будет, 13156 или 9999.

В ДШ есть таблица "Примеры UBRR настройки для часто используемых частот". У меня это таблица 61. На кварце 4МГц приемлемы две скорости 250000 и 500000. Все остальные с ошибкой.
Реклама
Эиком - электронные компоненты и радиодетали
Опытный кот
Аватара пользователя
Сообщения: 890
Зарегистрирован: Вт янв 20, 2009 14:49:08
Откуда: Гондурас, Мурманск

Сообщение DrWatson »

Внимательно проверьте фьюзы, возможно работа идет от внутренней RC-цепочки, скажем 8МГц плюс коррекция допустим +50% вот и получается в 2,5-3 раза выше чем надо. А расчет коэффициента деления правильный. А ошибку менее 1% можно игнорировать если пакеты короткие.
- Если вы такие умные, то почему тогда строем не ходите?
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
Реклама
Нашел транзистор. Понюхал.
Сообщения: 185
Зарегистрирован: Чт сен 06, 2007 22:36:09
Откуда: Санкт-Петербург

Сообщение Skrrmrchoh »

Заменил кварц, все в порядке. Спасибо.
Реклама
Опытный кот
Аватара пользователя
Сообщения: 890
Зарегистрирован: Вт янв 20, 2009 14:49:08
Откуда: Гондурас, Мурманск

Сообщение DrWatson »

Вполне возможно конденсаторы не соответствовали кварцу и он заводился на 3 гармонике.
- Если вы такие умные, то почему тогда строем не ходите?
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
Нашел транзистор. Понюхал.
Сообщения: 185
Зарегистрирован: Чт сен 06, 2007 22:36:09
Откуда: Санкт-Петербург

Сообщение Skrrmrchoh »

Может..
Родился
Сообщения: 3
Зарегистрирован: Вс окт 26, 2008 15:29:44

Сообщение RockWar »

Скажите пожалуста, если в регистре 0х33 равно значению скорости 4800, то по какому принципу ведется расчет или есть какая нибудь таблица?
Друг Кота
Аватара пользователя
Сообщения: 3961
Зарегистрирован: Пн июл 13, 2009 14:37:39
Откуда: Московская область, наукоград.....

Сообщение Meteor »

Есть такой замечательный документ, называется даташит.
В нем содержатся ответы на 95% вопросов.
Например см. вложение
Вложения
usart.JPG
(56.66 КБ) 391 скачивание
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Контактная информация:
Родился
Сообщения: 3
Зарегистрирован: Вс окт 26, 2008 15:29:44

Сообщение RockWar »

Ага, понял, огромное спасибо
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»