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

 
 
 
Reply to this topicStart new topic
> 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
Dog Pawlowa
сообщение May 11 2008, 10:08
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(hooky-mars @ May 11 2008, 14:00) *
Saluer!
Мне нужно реализовать обмен см сабж. Где найти доку по этому вопросу? И вообще где можно почитать про RS-422? Что он вообще такое? Как происходит синхронизация с ПК? По какому протоколу происходит обмен?

Что, Гугл перестал работать? Это один из множества физических последовательных интерфейсов.
Любой последовательный протокол спасет.
Ыыш, налетело ленивых студней с Марса.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
hooky-mars
сообщение May 11 2008, 10:15
Сообщение #3





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



Гугл гуд, работает. Но нашол я токо нормальное описание распиновок, да еще кучу чипов Mаxim. Но понимания процесса обмена эта инфа не дает.....
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение May 11 2008, 10:18
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(hooky-mars @ May 11 2008, 14:15) *
Гугл гуд, работает. Но нашол я токо нормальное описание распиновок, да еще кучу чипов Mаxim. Но понимания процесса обмена эта инфа не дает.....

А RS232 понимаете? Точно?
Процесс обмена точно такой.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
hooky-mars
сообщение May 11 2008, 10:25
Сообщение #5





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



Т.е. RS-422 идеалогически очень похож на RS-485? Обмен всеравно по типу RS-232? Спасибо! Уж по RS-232 инфы какой надо наваом....
Go to the top of the page
 
+Quote Post
aaarrr
сообщение May 11 2008, 10:33
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



RS422 физически очень похож на RS485 (по сути одно и то же, только соединение точка-точка), а "идеологически" - на RS232.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение May 11 2008, 10:36
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(hooky-mars @ May 11 2008, 14:25) *
Т.е. RS-422 идеалогически очень похож на RS-485? Обмен всеравно по типу RS-232? Спасибо! Уж по RS-232 инфы какой надо наваом....

Я разве говорил о Rs485? - Это полудуплекс.
Если в задании не указано другое, можно трактовать Rs422 как дуплексное одноточечное подключение - т.е. аналог не Rs485, а Rs232. Препод дернется - ссылайтесь на меня smile.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
TarasG
сообщение May 11 2008, 10:36
Сообщение #8


Участник
*

Группа: Новичок
Сообщений: 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
hooky-mars
сообщение May 11 2008, 11:43
Сообщение #9





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



Цитата(Dog Pawlowa @ May 11 2008, 14:36) *
Я разве говорил о Rs485? - Это полудуплекс.
Если в задании не указано другое, можно трактовать Rs422 как дуплексное одноточечное подключение - т.е. аналог не Rs485, а Rs232. Препод дернется - ссылайтесь на меня smile.gif



Больно препод серьезный.... Второй месяц над куросвиком ипусь....... На след неделе начианается сессия, а уменя токо полкурсовика готово не счиатя бумажного оформления..... sad.gif

TO TarasG, Cпасибо smile.gif ..... Теперь мне остальсь перевести под асм
Go to the top of the page
 
+Quote Post
TarasG
сообщение May 11 2008, 11:59
Сообщение #10


Участник
*

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



Цитата(hooky-mars @ May 11 2008, 14:43) *
TO TarasG, Cпасибо smile.gif ..... Теперь мне остальсь перевести под асм

Не за что. Я сейчас как раз UARTом и занимаюсь wink.gif А в даташите есть аналогичные примеры и на асме smile.gif
Go to the top of the page
 
+Quote Post

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

 


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


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