Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ATmega16 + usart
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
COMA
Добрый день!

Настроил USART на прием и отправку данных по USRAT.
Параметры 9600 8 бит данных 2 стоп бита.

Начинает работает, если только остановить программу jtag-ом и заново запустить на выполнение.
Т.е. запускаем - не работает. Жму паузу, запускаю. Начинает работать прекрасно.

Чудеса. smile.gif

Понимаю что ошибка в программе не могу разобраться. Давно не работал с мегами smile.gif

инициализация USART
Код
void start_UART (UINT8 baud_rate_code)
{
    UINT32 baud_rate;

    switch (baud_rate_code) {
        case 1: baud_rate = 9600; break;
        case 2: baud_rate = 19200; break;
        case 3: baud_rate = 38400; break;
        case 4: baud_rate = 57600; break;
        case 5: baud_rate = 76800; break;
        case 6: baud_rate = 115200; break;
        default:;
    }

    UBRRH=HIGHBYTE(((SYS_OSC/16)/baud_rate)-1);
    UBRRL=LOWBYTE(((SYS_OSC/16)/baud_rate)-1);

    // Старт бит + 8 бит + 2 стоп бита
    UCSRC=(1 << USBS)|(1 << UCSZ1)|(1 << UCSZ0);
    UCSRB=(1 << RXEN)|(1 << TXEN);

    UCSRB_RXEN = 1;
    UCSRB_RXCIE = 1;
}
alvy
Вроде криминального ничего нет, кроме лишнего взведения RXEN (UCSRB_RXEN = 1) - он уже взведен строчкой выше.
Палыч
Цитата(COMA @ Jun 9 2010, 09:26) *
UCSRC=(1 << USBS)|(1 << UCSZ1)|(1 << UCSZ0);

А, где URSEL ?
COMA
Добавил URSEL все работает.

Вот что значит не читать документацию.
Всем спасибо!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.