Страница 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;