Страница 1 из 3

Проблемы с UART.

Добавлено: Пн сен 23, 2013 02:15:06
Vadim_Stupakov
Здравствуйте, уважаемые! В процессе освоения МК, пришло время разобраться с UART. Написал маленькую тестовую программку.
С ПК посылаю символ, '1' светодиод горит, '2' - светодиод гаснет. Но проблема, ничего не происходит. Со стороны ПК данные идут( RxD замкнул с TxD). Использую шнур USB->COM. Не понятно, где косяк :-(

Программу на ПК писал с использованием библиотек Qt.
Программу для МК писал в IDE ATMEL Studio , компилятор avr gcc.
МК - AVR ATmega8a

Re: Проблемы с UART.

Добавлено: Пн сен 23, 2013 07:14:00
igor-x
покажите что написали в программах? без исходников так то можно только гадать

Re: Проблемы с UART.

Добавлено: Пн сен 23, 2013 13:22:55
Vadim_Stupakov
В общем, как я понял, какие-то проблемы с кодировкой. Сделал эхо проверку. Отправляю символы на контроллер, а потом с контроллера обратно. Отправляю '1' а принимаю 'L' и не нашел никакой закономерности, не понятно, что происходит...
Код программы собственно:

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

#define F_CPU 4000000UL
#include <avr/io.h>
#include <util/delay.h>

void Init_USART();

int main(void)
{
	volatile char rc;
	Init_USART();
	DDRB |= 1<<0;
	DDRD &= ~(1<<0);
	PORTD |= 1<<0;;
	//sei();
    while(1){
		if ((UCSRA & (1<<7))){
			rc = UDR;
			UDR = rc;
		}
		if(rc == 49) PORTB |= 1<<0;
		else if(rc == 50) PORTB &= ~(1<<0);
	}
}
void Init_USART(){
	// USART initialization
	// Communication Parameters: 8 Data, 1 Stop, No Parity
	// USART Receiver: On
	// USART Transmitter: On
	// USART Mode: Asynchronous
	// USART Baud Rate: 110
	UCSRA=0x00;
	UCSRB=0x18;
	UCSRC=0x86;
	UBRRH=0x08;
	UBRRL=0xE0;
}

Re: Проблемы с UART.

Добавлено: Пн сен 23, 2013 13:32:43
igor-x
USART Baud Rate: 110
маловато будет...

Re: Проблемы с UART.

Добавлено: Пн сен 23, 2013 13:37:20
Vadim_Stupakov
А какая разница? Чем меньше - тем меньше потерь, как я понимаю.

Re: Проблемы с UART.

Добавлено: Пн сен 23, 2013 13:41:13
Vadim_Stupakov
Выставил USART Baud Rate: 2400.
В итоге теже символы что и при USART Baud Rate: 110

Re: Проблемы с UART.

Добавлено: Пн сен 23, 2013 13:41:43
igor-x
тем меньше потерь
на расстоянии 5 метров можно смело гонять скорости до 115200 .

самое главное - чтобы скорость на стороне терминала и МК была одинакова. я поэтому засомневался что терминалка может на такой низкой скорости работать.

ну хотябы 9600 сделайте

Re: Проблемы с UART.

Добавлено: Пн сен 23, 2013 13:43:08
AaNnDdRrEeYy
Скорость обмена на компе и в МК должны совпадать. В протеусе проверь, если со стороны МК проблем нет попробуй не своей прогой с компа проверить а программой "Терминал"

Re: Проблемы с UART.

Добавлено: Пн сен 23, 2013 13:46:08
Vadim_Stupakov
Да-да, всё совпадает. Терминалом сейчас и проверяю, эхо без МК работает, что отправляю - то и получаю. а вот эхо с МК не работает..
PS: Я прикрепил скрин с терминала.

Re: Проблемы с UART.

Добавлено: Пн сен 23, 2013 13:49:14
Vadim_Stupakov
Сделал 9600 - тоже самое.
Что, разве ни у кого не было проблемы с кодировкой?

Re: Проблемы с UART.

Добавлено: Пн сен 23, 2013 13:49:24
igor-x
а вот эхо с МК не работает..
тогда следующий эксперимент нужно проделать.= сделать прог. которая только передает из МК в терминалку один известный символ, постоянно .

Re: Проблемы с UART.

Добавлено: Пн сен 23, 2013 13:51:41
AaNnDdRrEeYy
У меня была, буквально вчера, моя тема под твоей. там проблема была с расчетом значения для регистра в котором скорость задается, не каждую скорость можно использовать. у меня например 9600 не завелась на частоте МК 1Мгц. пришлось использовать нестандартную 5200

Re: Проблемы с UART.

Добавлено: Пн сен 23, 2013 14:05:04
Vadim_Stupakov
igor-x писал(а):
а вот эхо с МК не работает..
тогда следующий эксперимент нужно проделать.= сделать прог. которая только передает из МК в терминалку один известный символ, постоянно .
МК каждые 100мс отправляет '1'. Результат я прикрепил в картинке.

Re: Проблемы с UART.

Добавлено: Пн сен 23, 2013 14:06:31
Vadim_Stupakov
Да, кстати. Я использую внутренний RC-генератор. Думаю, что для передачи '1' он сгодится.

Re: Проблемы с UART.

Добавлено: Пн сен 23, 2013 14:07:49
AaNnDdRrEeYy
Vadim_Stupakov писал(а):Да, кстати. Я использую внутренний RC-генератор. Думаю, что для передачи '1' он сгодится.
Частота какая?

Re: Проблемы с UART.

Добавлено: Пн сен 23, 2013 14:08:43
Vadim_Stupakov
4 МГц

Re: Проблемы с UART.

Добавлено: Пн сен 23, 2013 14:10:53
Vadim_Stupakov
Не может ли такое быть из-за шнурка USB->COM ?

Re: Проблемы с UART.

Добавлено: Пн сен 23, 2013 14:13:23
AaNnDdRrEeYy
вот так программку подправь

будет работать на скорости 9600

void Init_USART(){
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 110
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
//*********************
//ВОТ ЭТИ ДВЕ СТРОКИ
//----------------------------
UBRRH=0x00;
UBRRL=26;
//---------------------------
}

Re: Проблемы с UART.

Добавлено: Пн сен 23, 2013 14:14:09
igor-x
шнурок ты уже проверил - rx tx коротил. значит все ок.

Re: Проблемы с UART.

Добавлено: Пн сен 23, 2013 14:15:25
AaNnDdRrEeYy
ой, не 26 а 25
UBRRL=25;