Работа с RS232

Обсуждаем контроллеры компании Atmel.
Ответить
Мудрый кот
Аватара пользователя
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Сообщение igor-x »

DoctorVx писал(а):
Pavel_1978 писал(а): ..бла...бла...бла... ATmega164 это канеш круто но на него нет плат наподобие Ардуины.. возможно ли обойтись старушкой мегой8? в этом вапросе?
в этом вАпросе можно использовать Arduino Mega 2560 (поскольку ардуина уже 2 раза упоминалась здесь)
в ней аж 4 усарта есь )))
http://arduino.cc/en/Main/ArduinoBoardMega2560
кстати и стоит недорого - всего 17 долл на Ebay
Реклама
Опытный кот
Аватара пользователя
Сообщения: 830
Зарегистрирован: Пт ноя 16, 2007 11:21:37

Сообщение Pavel_1978 »

Организуешь приемный буфер, принимаешь в него байты пакета. Обрабатываешь их как тебе надо результат передаешь наружу.
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 69
Зарегистрирован: Чт авг 11, 2011 12:59:42
Откуда: Луганск

Сообщение legalize »

Atmega162 дешево и сердито с двумя УСАРТами.
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 35
Зарегистрирован: Пт июл 19, 2013 15:43:02

Сообщение DoctorVx »

legalize писал(а):Atmega162 дешево и сердито с двумя УСАРТами.
Да действительно не дорогая микрушка с богатым функциналом =) А не подскажете кусочек кода =))
Реклама
Эиком - электронные компоненты и радиодетали
Мудрый кот
Аватара пользователя
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Сообщение igor-x »

DoctorVx писал(а):... А не подскажете кусочек кода =))
вот кусочек кода :

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

// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
   {
   rx_buffer[rx_wr_index]=data;
   if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
   if (++rx_counter == RX_BUFFER_SIZE)
      {
      rx_counter=0;
      rx_buffer_overflow=1;
      };
   };
}
Реклама
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 35
Зарегистрирован: Пт июл 19, 2013 15:43:02

Сообщение DoctorVx »

igor-x писал(а):
DoctorVx писал(а):... А не подскажете кусочек кода =))
вот кусочек кода :

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

// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
   {
   rx_buffer[rx_wr_index]=data;
   if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
   if (++rx_counter == RX_BUFFER_SIZE)
      {
      rx_counter=0;
      rx_buffer_overflow=1;
      };
   };
}
Спасибо =) тут как я понял в UDR принятые данные из одного UART а где ловить данные второго в меге162? Очень извиняюсь за глупые и скорее всего вполне очевидные вопросы, но мне очень нужно!
Реклама
Мудрый кот
Аватара пользователя
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Сообщение igor-x »

где ловить данные второго в меге162 ?
данные второго нужно ловить в прерывании от второго усарт. кусочек кода аналогичный, но требуется второй приемный буфер в программе.
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 35
Зарегистрирован: Пт июл 19, 2013 15:43:02

Сообщение DoctorVx »

Вот набросал схемку под Atmtga162, я ничего не упустил? далее всё чисто программная работа или ещё требуется какая либо обвязка?
Вложения
Эмулятор.jpg
(213.34 КБ) 325 скачиваний
Опытный кот
Аватара пользователя
Сообщения: 830
Зарегистрирован: Пт ноя 16, 2007 11:21:37

Сообщение Pavel_1978 »

DoctorVx писал(а):Вот набросал схемку под Atmtga162, я ничего не упустил? далее всё чисто программная работа или ещё требуется какая либо обвязка?
На каких скростях работает UART? Посмотри в ДШ если нужная скорость обеспечивается внутренним генератором, то кварц можно не ставить. Кнопка сброса тоже не нужна.
С питанием определился?
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 35
Зарегистрирован: Пт июл 19, 2013 15:43:02

Сообщение DoctorVx »

Да с питанием определился =) Необходимо придумать питания из самого ком порта в виду спецефичности использования прибора, нет возможности подвести отдельное питание, вот надо както придумать как это всё запитать от rs232 . google по этому поводу тож ничё дельного не пишет, везде примеры с доп. питанием.. =( была идея брать от USB но нет возможности в данном конкретном случае USB Не имеется =(
Мудрый кот
Аватара пользователя
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Сообщение igor-x »

аа. почему в сторону девайса не поставил МАХ232 ?
как я понимаю этот девайс раньше работал с портом СОМ напрямую - значит согласование нужно в обе стороны
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 35
Зарегистрирован: Пт июл 19, 2013 15:43:02

Сообщение DoctorVx »

Скорость Uart остаётся загадкой если честно но судя по всему не думаю что более 54к. Может существуют техники распознавания и автоматической адаптации к используемой скорости??
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 35
Зарегистрирован: Пт июл 19, 2013 15:43:02

Сообщение DoctorVx »

igor-x писал(а):аа. почему в сторону девайса не поставил МАХ232 ?
как я понимаю этот девайс раньше работал с портом СОМ напрямую - значит согласование нужно в обе стороны
дак MAX232 Вроде 2х канальный же... мне показалось что хватит одного?
Мудрый кот
Аватара пользователя
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Сообщение igor-x »

аа похоже 2 канала...

кажется я понял зачем нужен девайс. :))

он ставится в кабель принтера работающего по RS232 .
можно получать интересные фокусы - кассовый аппарат пробивает 100 рублей, а на чеке печатается 1 руб.
остальное - себе в карман
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 35
Зарегистрирован: Пт июл 19, 2013 15:43:02

Сообщение DoctorVx »

Может быть кто вы знаете дохренаканальный MAX? просто есть некоторый ограничивающий фактор , такой как размер девайса, скажем так использование большого количества микросхем крайне не желательно..
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 35
Зарегистрирован: Пт июл 19, 2013 15:43:02

Сообщение DoctorVx »

igor-x писал(а):аа похоже 2 канала...

кажется я понял зачем нужен девайс. :))

он ставится в кабель принтера работающего по RS232 .
можно получать интересные фокусы - кассовый аппарат пробивает 100 рублей, а на чеке печатается 1 руб.
остальное - себе в карман
Да вы от части Правы =)) махинации с кассой =))))))))))))
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 35
Зарегистрирован: Пт июл 19, 2013 15:43:02

Сообщение DoctorVx »

Махинации не в плане криминала, просто необходимо реализовать данную возможность..
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 35
Зарегистрирован: Пт июл 19, 2013 15:43:02

Сообщение DoctorVx »

Вот если я вот так свою конструкцию буду питать?? всё будет ОК? или необходимо чтото более существенное с дросселями и стабилизатором напряжения с возможностью повышения напряжения? например LM5000??
Вложения
Безымянный.jpg
(146.84 КБ) 316 скачиваний
Последний раз редактировалось DoctorVx Вт май 20, 2014 13:47:23, всего редактировалось 1 раз.
Мудрый кот
Аватара пользователя
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Сообщение igor-x »

реализовать данную возможность
думаю могу поучаствовать в реализации данной возможности. за проценты от этой возможности :))
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 35
Зарегистрирован: Пт июл 19, 2013 15:43:02

Сообщение DoctorVx »

igor-x писал(а):
реализовать данную возможность
думаю могу поучаствовать в реализации данной возможности. за проценты от этой возможности :))
За процент =))))))))))))) отличное предложение, только вот в данном случае к сожалению выгода не планируется =( а только самообучение хардварному реверс инженерингу =(
Ответить

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