Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Хнык:( ну блин вечно что-то испортит настроение:( Не могу запустить УАРТ. Вот код:

Отправлено Двоешник (213.227.202.163) 11 апреля 2011, г. 19:17


ATMega32U4


...

void Init_UART (void) {
UBRR1L = 0x33; // Set baud rate lo
UBRR1H = 0x00; // Set baud rate hi
UCSR1B = (1<<RXEN1)|(1<<TXEN1)|(1<<RXCIE1)|(1<<UDRIE1); // Enable receiver and transmitter
UCSR1C = (1<<USBS1)|(3<<UCSZ10); // Set frame format: 8data, 2stop bit
}


...


INT08U UARTDataInReceiveBuffer (void) {
INT08U t1 = UART_RxHead0, t2 = UART_RxTail0;
return (t1 != t2);
}

INT08U UARTReceiveByte (void) {
INT08U t1, t2;
INT32U tmptail0;


t1 = UART_RxHead0;
t2 = UART_RxTail0;

while (t1 == t2) {
};
tmptail0 = ( UART_RxTail0 + 1 ) & UART_RX_BUFFER_MASK0;
UART_RxTail0 = tmptail0;
return UART_RxBuf0[tmptail0];
}

void UARTTransmitByte (INT08U data0 ) {
INT08U tmphead0;


tmphead0 = ( UART_TxHead0 + 1 ) & UART_TX_BUFFER_MASK0;
while ( tmphead0 == UART_TxTail0 ) continue;
UART_TxBuf0[tmphead0] = data0;
UART_TxHead0 = tmphead0;
UCSR1B |= (1<<UDRIE1);
}
/*
********************************************************************************
* LOCAL FUNCTION
********************************************************************************
*/


#pragma vector=USART1_RX_vect
__interrupt void USART_Rx_isr(void) {
INT08U data0;
INT32U tmphead0;

data0 = UDR1;
tmphead0 = ( UART_RxHead0 + 1 ) & UART_RX_BUFFER_MASK0;
UART_RxHead0 = tmphead0;
if (tmphead0 == UART_RxTail0) { }
UART_RxBuf0[tmphead0] = data0;
}


#pragma vector=USART1_UDRE_vect
__interrupt void USART0_Tx_interrupt( void ) {
INT08U t1, t2;
INT08U tmptail0;

t1 = UART_RxHead0;
t2 = UART_RxTail0;

if (t1 != t2) {
tmptail0 = ( UART_TxTail0 + 1 ) & UART_TX_BUFFER_MASK0;
UART_TxTail0 = tmptail0;
UDR1=UART_TxBuf0[tmptail0];
}
else {
UCSR1B &= ~(1<<UDRIE1);
}
}

...

...

void main (void) {

InitDevice ();

while (1) {
UARTTransmitByte(0x55);
}
}


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
отымите от 2 единицу:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru