Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > [avr] Atmega128 USART


Автор: Mikron 16.6.2010, 14:32
Добрый день
Проблема с приемом данных в Atmega128

Что бы я не передавал в ком порт, и не считывал, в UDR всегда записано значение 0xff 

Код

void uart1_init(void)
{
    UBRR1L=1;                 // 250000 бит/с при такт частоте 8 МГц без удвоения
    UBRR1H=0;
    UCSR1A=0x80;                //   RXCn   TXCn  UDREn    FEn   DORn   UPEn   U2Xn  MPCMn
                               // сбросить бит окончания приема
    UCSR1B=0xd8;                // RXCIEn TXCIEn UDRIEn  RXENn  TXENn UCSZn2  RXB8n  TXB8n
                               // разрешить прервывание по окончанию приёма, прервывание окончанию передачи,
                               // приём, передачу
    UCSR1C=0x0e;                //     -  UMSELn  UPMn1  UPMn0  USBSn UCSZn1 UCSZn0 UCPOLn
                               // нет чётности, 2 стоп бита, 8 битов данных
}


Код

ISR(USART1_RX_vect)
{
     unsigned char c,s;
     s=UCSR1A;
     c=UDR1;
}


даже если сделать так, что бы UDR точно сбрасывался, все равно значение 0xff

Код

ISR(USART1_RX_vect)
{
     unsigned char c,s;
     UDR1;
     s=UCSR1A;
     c=UDR1;
}


Помогите разобраться что не так

Автор: Mikron 18.6.2010, 11:59
нашел ошибку(
я тупанул, кварц был на 16 МГц

UBRR1L=3;
и все норм

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)