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

 
 
> Atmega(Uart)<-RS-422->Кмопьютер, RS-422
hooky-mars
сообщение May 11 2008, 10:00
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 19-04-08
Пользователь №: 36 906



Saluer!
Мне нужно реализовать обмен см сабж. Где найти доку по этому вопросу? И вообще где можно почитать про RS-422? Что он вообще такое? Как происходит синхронизация с ПК? По какому протоколу происходит обмен?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
TarasG
сообщение May 11 2008, 10:36
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 72
Регистрация: 25-02-08
Пользователь №: 35 378



Вот пример работы с UART (большинство функций взято из Datasheet). Здесь UART настраивается на передачу 11-битных сообщений (старт-бит, 8 бит даннх, бит чётности, стоп-бит). Скорость задаётся при инициализации.
Код
unsigned char ParityBit(unsigned char byte) //функция вычисления бита чётности
{
    unsigned char count = 0;
    for (unsigned char i = 0; i < 8; i++)
        if ((byte >> i) & 0x01)
            count++;
    return count & 0x01;
}

void USART_Init(unsigned int ubrr) //функция инициализации
{
    UBRRH = (unsigned char) (ubrr >> 8);
    UBRRL = (unsigned char) ubrr;

    UCSRB = (1 << RXCIE) | (1 << RXEN) | (1 << TXEN) | (1 << UCSZ2);

    return;
}

void USART_Transmit(unsigned char data) //отправка байта
{
    
    while (!(UCSRA & (1 << UDRE)))
    ;

    UCSRB &= ~(1 << TXB8);
    if (ParityBit(data))
        UCSRB |= (1 << TXB8);

    UDR = data;
    return;
}

unsigned char USART_Receive(void) //получение байта
{
    unsigned char status, resh, resl;

    while (!(UCSRA & (1 << RXC)))
    ;

    status = UCSRA;
    resh = UCSRB;
    resl = UDR;

    if (status & ((1 << FE) | (1 << DOR) | (1 << PE)))
        return -1;
  
    resh = (resh >> 1) & 0x01;

    if (resh != ParityBit(resl))
        return -1;

    return resl;
}

ISR (SIG_UART_RECV) //обработчик прерывания по приходу байта
{
    unsigned char data = USART_Receive();
    //здесь обрабатывается принятый байт
}
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 24th June 2025 - 18:50
Рейтинг@Mail.ru


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