Ввод-вывод информации через UART AVR

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Грызет канифоль
Аватара пользователя
Сообщения: 262
Зарегистрирован: Пт ноя 16, 2007 00:40:17
Откуда: Украина

Сообщение foxit »

Кто как реализовывает обмен между МК+МК и МК+ПК?
Интересует реализация протокола обмена?
Может есть наработки?
Реклама
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

А в чем проблема? Надо передать - закинул в UDR, надо принять - прочитал из UDR (естесственно, предварительно настроив UART). Ну и все. :dont_know: Инженеры из Atmel все уже реализовали за нас на аппаратном уровне. Ну, на ПК через WinAPI. Из железа я использую переходники USB<->RS-232, на стороне МК аппаратный UART.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 5953
Зарегистрирован: Ср ноя 11, 2009 17:19:30
Откуда: Воронеж

Сообщение >TEHb< »

Можно загнаться с LPT портом, но я тоже использую usb-rs232 мосты.
Усложнять просто. Упрощать сложно.
Контактная информация:
Потрогал лапой паяльник
Сообщения: 331
Зарегистрирован: Вс мар 30, 2008 14:31:51

Сообщение PB_EXPERT »

YS писал(а):Ну, на ПК через WinAPI.
А как же переносимость кода на другие платформы?
Реклама
Эиком - электронные компоненты и радиодетали
YS
Друг Кота
Аватара пользователя
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05

Сообщение YS »

Меня мало волнуют вопросы переносимости. Я использую только Windows.

Если вдруг понадобится другая платформа - перепишу. Но пока необходимости не возникало. Кроме того, процедуры WinAPI я все равно запихиваю в свои процедуры. Получилось что-то типа маленькой своей библиотечки.

Как-то так:

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

HANDLE InitPort(AnsiString PORT,unsigned long BAUD_RATE)
{
  HANDLE h;
  DCB d;

  h=CreateFile(PORT.c_str(),GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);

  GetCommState(h,&d);

  d.BaudRate=BAUD_RATE;
  d.fBinary=true;
  d.fParity=false;
  d.ByteSize=8;
  d.StopBits=ONESTOPBIT;

  SetCommState(h,&d);

  return h;
}
void SendData(HANDLE h,unsigned char byte)
{
  unsigned long n;

  WriteFile(h,&byte,1,&n,NULL);
}
void ClosePort(HANDLE h)
{
  CloseHandle(h);
}
Ну и в программе использую InitPort(), SendData(), ClosePort().

Если вдруг чего - нужно будет только поправить их и перекомпилить программу. Хотя, повторюсь, я не зацикливаюсь на переносимости, ибо пока необходимости не возникало. Куда переносить-то? А главное, зачем? Что бы там не говорили, Windows меня вполне устраивает. И никуда переходить я в обозримом будущем не планирую.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Контактная информация:
Реклама
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»