реклама на сайте
подробности

 
 
> Проблемы с UART
Chupa
сообщение Sep 13 2012, 16:22
Сообщение #1





Группа: Новичок
Сообщений: 2
Регистрация: 9-01-10
Пользователь №: 54 692



Доброго времени суток.

Битый день промучался с UART, пытаясь заставить его нормально работать. Методом тыка выяснил, что работает при скорости 14400 бод (пробовал также 9600 и 19200). Но имеется несколько проблем, которые так побороть и не удалось:
1) Отправляемые с ПК символы принимаются не все (с потерями).
2) Отправляемые с МК символы приходят на ПК в виде "ааа" (любые).
3) В каком виде приходят на МК символы неизвестно, но похоже тоже не те, что нужно.

В чем может быть причина? Код:

CODE
#define F_CPU 8000000L
#define LED1 0
#define LED2 1
#define LED_PORT PORTB
#define LED_DDR DDRB

#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>

ISR(USART_RX_vect)
{
switch(UDR)
{
case '1': LED_PORT |= 1<<LED2; break;
case '0': LED_PORT &= ~(1<<LED2); break;
default: break;
}
}

int main(void)
{
#define baudrate 14400L
#define bauddivider (F_CPU/(16*baudrate)-1)
#define HI(x) ((x)>>8)
#define LO(x) ((x) & 0xFF)

UBRRL = HI(bauddivider);
UBRRH = LO(bauddivider);
UCSRA = 0;
UCSRB = 1<<RXEN|1<<TXEN|1<<RXCIE|0<<TXCIE;
UCSRC = 0<<UMSEL|1<<UCSZ0|1<<UCSZ1;

LED_DDR = 1<<LED1|1<<LED2;
LED_PORT = 0xFF;

sei();

while(1)
{
LED_PORT ^= 1<<LED1;
_delay_ms(1000);
}

return 0;
}


P.S. В качестве USB-UART использую программатор USBASP с прошивкой AVR-Doper, в качестве терминала - avrdebug.

Сообщение отредактировал IgorKossak - Sep 13 2012, 20:27
Причина редактирования: [codebox] для длинного кода!!!
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 22:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.01388 секунд с 7
ELECTRONIX ©2004-2016