Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: компилятор не знает регистры UCR и UBRR
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
Azat
почему не компилятся строчки
UBRR = 0x58; // активизируем приемник, передатчик и прерывание
UCR = 0x33; // скорость передачи 9600 бод

если ставлю другой тип микросхемы например at90s8535, то компилится
alkaes
Цитата(Azat @ May 28 2008, 18:41) *
почему не компилятся строчки
UBRR = 0x58; // активизируем приемник, передатчик и прерывание
UCR = 0x33; // скорость передачи 9600 бод

если ставлю другой тип микросхемы например at90s8535, то компилится


Может потому что ты взял микроконтроллер с двумя UART lol.gif поэтому там они могут называться UBRR0 UCR0 и UBRR1 UCR1
uriy
Опять приходится телепатию включать. Что за компилятор? Какой изначально контроллер? Может вы хидер не тот цепляете? В конце концов можно и самому регистры эти продефайнить!
Azat
Цитата(uriy @ May 28 2008, 19:59) *
Опять приходится телепатию включать. Что за компилятор? Какой изначально контроллер? Может вы хидер не тот цепляете? В конце концов можно и самому регистры эти продефайнить!


Компилятор WinAvr. В мэкфайле ставлю тип мк atmega16, на плате тоже atmega16
kurtis
пример инициализации УАПП из даташита

Код
void USART_Init( unsigned int baud )
{
/* Set baud rate */
UBRRH = (unsigned char)(baud>>8);
UBRRL = (unsigned char)baud;
/* Enable receiver and transmitter */
UCSRB = (1<<RXEN)|(1<<TXEN);
/* Set frame format: 8data, 2stop bit */
UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
}


дефайны всех регистров находятся тут
(директория с ВинАВР)..\avr\include\avr\iom16.h
при необходимости нужно будет подключить к проекту этот файл
Azat
нашел, там есть UBRRL И UBRRH. какой использовать?
sergeus
Цитата(Azat @ May 29 2008, 00:07) *
нашел, там есть UBRRL И UBRRH. какой использовать?

Использовать оба, это регистры для выбора скорости работы UART, стр.142 даташита, там всё написано, с примерами.
AlexKLm
Вот командная строка для компиляции для atmega8:

F:\WinAVR\bin\avr-g++.exe -c -fmessage-length=260 -I "F:\WinAVR\avr\include" -B "F:\winavr\avr\bin" -mmcu=atmega8 -minit-stack=0x45F -msize -D __AVR_ATmega8__ -D INCL_MSG -o "C:\BC2\MyProj\ATM8WELD\Utils.obj"


1. Для Вашего случая нужна опция -mmcu=atmega16
2. Ещё: -D __AVR_ATmega16__ надо.
3. -I "F:\WinAVR\avr\include" - надо указать где инклюды лежат.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.