Подключение Atmega8 к ПК по UART.

Обсуждаем контроллеры компании Atmel.
Ответить
Мудрый кот
Аватара пользователя
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

Сообщение Kavka »

А последовательный интерфейс как к компьютеру подключаете? В COM-порт или USB-RS232 конвертер?
Согласование уровней есть?
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Реклама
Встал на лапы
Сообщения: 146
Зарегистрирован: Вс сен 16, 2012 22:00:40

Сообщение foton6 »

платка с ебея на PL2303
у нее VCC Gnd RxD TxD.
Реклама
Нашел транзистор. Понюхал.
Сообщения: 194
Зарегистрирован: Сб ноя 07, 2009 15:27:59

Сообщение kushman »

Запутался окончательно) Контроллер работает от внутреннего генератора, фьюзы не выставляю вообще никакие. Инициализировал UART следующим кодом:

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

void initUART()
{
    UCSRA=0x00;
    UCSRB=0x18;
    UCSRC=0x86;
    UBRRH=0x00;
    UBRRL=0x33; 
}
Это получается нормальный асинхронный режим работы, без удвоения скорости. Как видно из кода, скорость устанавливается на 9600, однако успешно передача ведется на скорости 1200, то есть в 8 раз ниже. Для надежности отправляю байт обратно на ПК, он возвращается в целости и сохранности. Пробовал выставить скорость на 115200, соответственно на скорости 14400 (в 8 раз ниже чем 115200) следуя данной логике должна нормально идти передача. Нифига, одни кракозябры. В чем хитрость, не могу понять?

Вот функции приема и передачи:

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

void UART_Transmit(unsigned char data)
{
    while ( !( UCSRA & (1<<UDRE)) );
    sprintf(lcd_buffer, "UART_Send");
    send_lcd(set_second_line, lcd_buffer);
    UDR = data;
}

unsigned char UART_Receive(void) {

    while(!(UCSRA & (1<<RXC)) );
    return UDR;
}
Нашел транзистор. Понюхал.
Сообщения: 194
Зарегистрирован: Сб ноя 07, 2009 15:27:59

Сообщение kushman »

Если FUSE-биты не выставляются вообще никакие, то контроллер по умолчанию работает от внутреннего генератор? А если когда-то выставлял, а потом убрал?
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Сообщения: 146
Зарегистрирован: Вс сен 16, 2012 22:00:40

Сообщение foton6 »

kushman писал(а):Если FUSE-биты не выставляются вообще никакие, то контроллер по умолчанию работает от внутреннего генератор? А если когда-то выставлял, а потом убрал?
Новые контроллеры работают от внутренней РЦ цепочки по умолчанию( atmega8A 1мГц).
Если вы изменяли фюзы, а потом возвращали на место то естестно все вернулось на круги своя)

А не зная лучше фьюзы не тыкать)

Вот статейка по фьюзам (мне очень понравилась):
http://easyelectronics.ru/avr-uchebnyj- ... e-bit.html
Реклама
Ответить

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