Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Некорректная работа UART
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
_lukash_
Всем привет!

Пытаюсь заставить работать UART0 на Mega162, но не получаетсяsad.gif
Если смотреть виндовым терминалом, то при настройке COM на нужную скорость, он ничего не принимает - если на меньшей, то всякие крякозябры. Если смотреть COM Port Toolkit, то на нужной скорости принимаются одни 0. Сам UART вроде правильно настроил, уже много вариантов перепробовал - все равно не корректно работаетsad.gif

UBRR0L = ((int)((float)XTAL_FREQ/16/9600+0.5)-1); //set baud rate lo
UBRR0H = ((int)((float)XTAL_FREQ/16/9600+0.5)-1) >> 8; //set baud rate hi

UCSR0B = (1<<RXCIE0) + (1<<RXEN0) + (1<<TXEN0);
UCSR0C = (1<<URSEL0) + (1<<UCSZ01)+(1<<UCSZ00);

Кварц 14745600.
В UBRR0L записывается 95 - как раз как в даташите рекомендуют для этого кварца при скорости 9600.

Вот сама отправка :

while ( !(UCSR0A & (1<<UDRE0)) ) ;
UDR0 = data;
while ( !(UCSR0A & (1<<TXC0)) ) ;

Мож кто чет подскажет - раньше отлаживал просто - смотрел приходят какие-то данные или нет, а ща уже конкретней нужно смотреть что именно приходит..
SasaVitebsk
Вот так у меня
Код
  UCSR0A    = 2;                                        // Удвоение    частоты
  UCSR0B    = 0x90;                                        // Разрешить ввод, прерывание    при    вводе
  UCSR0C    = 0x6;                                        // 8-N-1
  UBRR0 = (FCLK/9600/8)-1;                                // 4800
//  TCCR0A    = 0;                                        // Запустить таймер    1 в    режиме normal
  TCCR2B    = 0x7;                                        // FCLK/1024

где
#define FCLK 14745600 // Частота контроллера

Может у вас fuse выставлены от внутреннего генератора или установлен CKDIV8 (по умолчанию - enabled). Это найболее частые ошибки.

Проверить легко. Инициализируйте на вывод и выводите непрерывно 0x55. Станьте осциллом и замерьте.
_lukash_
Да! Заработало, спасибо!

CKDIV8 скинут был, а вот fuse были выставлены на работу от внутреннего генератора, теперь работает!
Осциллографа у меня к сожалению нет ещеsad.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.