UART и attiny 2313 CodeVisionAVR

Обсуждаем контроллеры компании Atmel.
Ответить
Открыл глаза
Сообщения: 75
Зарегистрирован: Пн ноя 21, 2011 13:03:33

Сообщение aleksei18rus »

Помогите разобраться с UARTом, не могу понять что куда пихать, вроде все регистр настроил, частоту выставил, но ни чего не получается. Пишу на Си в codevisionavr, хочу подключить DFplayer mp3. Помогите разобраться. А то на работе надо сделать один проект, а разобраться не могу.
Реклама
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

Настройка UART производится в генераторе CVAVR
А дальше открываем http://www.atmel.com/images/doc2543.pdf
на стр. 118 и смотрим как передавать инфу, и видим

Код: Выделить всё

void USART_Transmit( unsigned char data )
{
/* Wait for empty transmit buffer */
while ( !( UCSRA & (1<<UDRE)) )
;
/* Put data into buffer, sends the data */
UDR = data;
}


То есть, хочешь передать 0х23, пишешь

Код: Выделить всё

USART_Transmit( 0x23 );

Там-же, чуть ниже на стр.121 написано как принимать инфу.

Да, описание функции должно быть в теле программы.
Реклама
Открыл глаза
Сообщения: 75
Зарегистрирован: Пн ноя 21, 2011 13:03:33

Сообщение aleksei18rus »

Вот так же писал, но в виртуальном терминале какие то треугольники

Код: Выделить всё

void USART_Transmit( unsigned char data )
{
 if ( UCSRA & (1<<UDRE))
 {UDR = data;}
}
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18682
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

aleksei18rus писал(а):Вот так же писал
то есть разницу между if и while вы не видите?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Открыл глаза
Сообщения: 75
Зарегистрирован: Пн ноя 21, 2011 13:03:33

Сообщение aleksei18rus »

Нет разницу между if и while знаю.
Реклама
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

Замечательно!
Реклама
Открыл глаза
Сообщения: 75
Зарегистрирован: Пн ноя 21, 2011 13:03:33

Сообщение aleksei18rus »

[quote="Vov123"]
написал так а в терминале протеуса все равно перевернутые треугольники

Код: Выделить всё

#include <io.h>
#include <string.h>
void USART_Transmit( unsigned char data )
{
while ( !( UCSRA & (1<<UDRE)) )
{UDR = data;}
}
void main (void)    
{   UCSRB=0x16;
     UBRR=0x17;

while (1)
{USART_Transmit( 0x23 );
}
}
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Сообщение Vov123 »

В окне терминала протеуса, правой кнопкой мыши, поставить галку "Hex Dysplay Mode"

Если подцепить библу stdio.h , можно пользоваться функциями putchar(); - для отправки одиночного символа и puts(); - массива
Ответить

Вернуться в «AVR»