Страница 1 из 1
UART и attiny 2313 CodeVisionAVR
Добавлено: Чт фев 25, 2016 23:44:19
aleksei18rus
Помогите разобраться с UARTом, не могу понять что куда пихать, вроде все регистр настроил, частоту выставил, но ни чего не получается. Пишу на Си в codevisionavr, хочу подключить DFplayer mp3. Помогите разобраться. А то на работе надо сделать один проект, а разобраться не могу.
Re: UART и attiny 2313 CodeVisionAVR
Добавлено: Пт фев 26, 2016 04:13:48
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, пишешь
Там-же, чуть ниже на стр.121 написано как принимать инфу.
Да, описание функции должно быть в теле программы.
Re: UART и attiny 2313 CodeVisionAVR
Добавлено: Пт фев 26, 2016 04:22:58
aleksei18rus
Вот так же писал, но в виртуальном терминале какие то треугольники
Код: Выделить всё
void USART_Transmit( unsigned char data )
{
if ( UCSRA & (1<<UDRE))
{UDR = data;}
}
Re: UART и attiny 2313 CodeVisionAVR
Добавлено: Пт фев 26, 2016 07:56:23
ARV
aleksei18rus писал(а):Вот так же писал
то есть разницу между
if и
while вы не видите?
Re: UART и attiny 2313 CodeVisionAVR
Добавлено: Пт фев 26, 2016 11:13:36
aleksei18rus
Нет разницу между if и while знаю.
Re: UART и attiny 2313 CodeVisionAVR
Добавлено: Пт фев 26, 2016 11:25:29
Vov123
Замечательно!
Re: UART и attiny 2313 CodeVisionAVR
Добавлено: Вс фев 28, 2016 15:12:09
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 );
}
}
Re: UART и attiny 2313 CodeVisionAVR
Добавлено: Вс фев 28, 2016 16:32:18
Vov123
В окне терминала протеуса, правой кнопкой мыши, поставить галку "Hex Dysplay Mode"
Если подцепить библу stdio.h , можно пользоваться функциями putchar(); - для отправки одиночного символа и puts(); - массива