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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> AVR и ПК, Обмен данными по RS232
GSK
сообщение Oct 15 2007, 16:16
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 157
Регистрация: 1-03-06
Пользователь №: 14 835



Подскажите пожалуйста кто делал проекты использующие обмем с компьютером.

Дело в следующем. Есть ATmega16 и рабочая и отлаженная плата. Посылать и принимать байты в комьпьютер получаеться беспроблем. А вот когда пытаюсь передовать строки или даже просто слова по присходит какая-то ерунда. Да и вообще с алгоритмом что-то не получаеться, как-то коряво выходит.
Может кто-то ужесталкивался с подобными проблемами. Интересуют исходники на С или Бейсике (так легче понять алгоритм). В идеале интересует следующие.
1. Компьютер выдает запрос и котроллер выдает значение одной из переменных в зависемости от запроса. Причем переменная может быть либо число, либо строка - т.е длина ответа теременна.
2. Котроллер выдает запрос и компьютер выдает значение одной из переменных в зависемости от запроса.
3. Всегда проверяеться контрольная сумма.
4. Компьютер включает выхода.
и т.д.

Заранее благодарен.
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Oct 15 2007, 16:56
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Не понимаю, какие проблемы. Придумываете протокол или берете готовый. Пример:
STX Команда Данные ETX CRCL CRCH
В УАРТ-овских прерываниях получаете\передаете пакет. Когда пакет получен и CRC верна - выставляете флаг, по которому вне прерывания обрабатываете пакет и, если надо, формируете ответ.
Судя по вашему описанию, инициаторами обмена может быть либо компьютер, либо МК. Тогда возможно, надо добавить в пакет некий номер, по которому можно разрулить ситуацию при встречных пакетах...
Go to the top of the page
 
+Quote Post
tyro
сообщение Oct 15 2007, 17:07
Сообщение #3


Любитель Кошек
*****

Группа: Свой
Сообщений: 1 593
Регистрация: 8-06-06
Пользователь №: 17 873



Цитата(GSK @ Oct 15 2007, 19:16) *
Подскажите пожалуйста кто делал проекты использующие обмем с компьютером.
Заранее благодарен.

Посмотрите здесь:_http://www.caxapa.ru/lib/wake/


--------------------
По современному этикету, в левой руке держат вилку, в правой - мышку.
Go to the top of the page
 
+Quote Post
GSK
сообщение Oct 16 2007, 03:21
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 157
Регистрация: 1-03-06
Пользователь №: 14 835



Цитата
Непомнящий Евгений

Я так понимаю, что Вы некогда не сталкивались с моей задачей. Отсюда и
Цитата
Не понимаю, какие проблемы......


Пррочитал по последней ссылке. "tyro" спасибо. Буду разбираться. Но информации много не бывает. Интересно посмотреть на чей-нибудь проект.
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Oct 16 2007, 04:51
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(GSK @ Oct 16 2007, 07:21) *
Я так понимаю, что Вы некогда не сталкивались с моей задачей.

C вашей - скорее всего нет smile.gif Но с компьютером чем-нибудь обмениваюсь постоянно...
Цитата
Интересно посмотреть на чей-нибудь проект.

У меня они довольно наворочены и специфичны, вырезать лишнее лень.
Дык а собственно что вам не понятно в моем предыдущем объяснении?
Go to the top of the page
 
+Quote Post
GSK
сообщение Oct 16 2007, 05:32
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 157
Регистрация: 1-03-06
Пользователь №: 14 835



Да в обьяснении все понятно. Спасибо за помощь.
Но теория это одно, а практика совсем другое.
Go to the top of the page
 
+Quote Post
tyro
сообщение Oct 16 2007, 06:13
Сообщение #7


Любитель Кошек
*****

Группа: Свой
Сообщений: 1 593
Регистрация: 8-06-06
Пользователь №: 17 873



Цитата(GSK @ Oct 16 2007, 08:32) *
Да в обьяснении все понятно. Спасибо за помощь.
Но теория это одно, а практика совсем другое.

Вот книжки, где кое-что есть
Применение микроконтроллеров AVR. Схемы, алгоритмы, программы (Баранов В.Н.).
Кузьминов А.Ю. Интерфейс RS232. Связь между компьютером и микроконтроллером. - М. Радио и связь, 2004. - 168 с ил.


--------------------
По современному этикету, в левой руке держат вилку, в правой - мышку.
Go to the top of the page
 
+Quote Post
IEC
сообщение Oct 16 2007, 06:57
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



Хорошо работать когда PC выступает в роли ведущего, а МК в роли ведомого. В обратном случае необходимо PC вешать в режим ожидания, что сильно его клинит, если работать через API.
Go to the top of the page
 
+Quote Post
tyro
сообщение Oct 16 2007, 07:18
Сообщение #9


Любитель Кошек
*****

Группа: Свой
Сообщений: 1 593
Регистрация: 8-06-06
Пользователь №: 17 873



Цитата(GSK @ Oct 15 2007, 19:16) *
Подскажите пожалуйста кто делал проекты использующие обмем с компьютером.
Заранее благодарен.

Для работы со стороны компьютера есть хорошая dll от моха, идет с кучей примеров, безплатная.
Взять можно здесь:http://web4.moxa.com/support/download.asp?id=87(после инсталяции в директории примеры на СИ,Бейсик,делфи).


--------------------
По современному этикету, в левой руке держат вилку, в правой - мышку.
Go to the top of the page
 
+Quote Post
vladimir_ad
сообщение Oct 16 2007, 08:30
Сообщение #10





Группа: Новичок
Сообщений: 5
Регистрация: 25-09-07
Пользователь №: 30 828



Цитата(IEC @ Oct 16 2007, 10:57) *
Хорошо работать когда PC выступает в роли ведущего, а МК в роли ведомого. В обратном случае необходимо PC вешать в режим ожидания, что сильно его клинит, если работать через API.
Ничего подобного. Ожидание события на порту в API нормально реализовано. Или синхронно читайте с настроенной COMMTIMEOUTS.
Go to the top of the page
 
+Quote Post
Axxel
сообщение Oct 16 2007, 08:58
Сообщение #11


Частый гость
**

Группа: Новичок
Сообщений: 140
Регистрация: 31-01-07
Из: Челябинск
Пользователь №: 24 896



Цитата(GSK @ Oct 15 2007, 22:16) *
А вот когда пытаюсь передовать строки или даже просто слова по присходит какая-то ерунда. Да и вообще с алгоритмом что-то не получаеться, как-то коряво выходит.

Наверняка используете стандартные функции компилятора типа getstring() или putstring() wink.gif
Используйте прерывания, как в этом небольшом примере, но это не проект, а просто тест.
Таймаут проверяйте тоже через прерывания таймера. И конечно лучше прочитать описание
кокого-нибудь стандартного протокола, типа modbus.
МК для исходника-2313.

Сообщение отредактировал Axxel - Oct 16 2007, 09:00
Прикрепленные файлы
Прикрепленный файл  232.rar ( 1.59 килобайт ) Кол-во скачиваний: 98
 


--------------------
Если боишься - не говори. если сказал - не бойся. ©
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Oct 16 2007, 13:26
Сообщение #12


Гуру
******

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



Цитата(IEC @ Oct 16 2007, 09:57) *
Хорошо работать когда PC выступает в роли ведущего, а МК в роли ведомого. В обратном случае необходимо PC вешать в режим ожидания, что сильно его клинит, если работать через API.

А какая разница, если все равно нужно ждать ответ в течение тайм-аута.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
GSK
сообщение Oct 17 2007, 03:24
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 157
Регистрация: 1-03-06
Пользователь №: 14 835



Парни, как говориться ".. забудь дедукцию, давай продукцию.."
Вот, вчера нашел.
http://www.serasidis.gr/circuits/RS232inte...2_interface.htm
Go to the top of the page
 
+Quote Post
GSK
сообщение Nov 29 2007, 10:25
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 157
Регистрация: 1-03-06
Пользователь №: 14 835



Просмотрел всю доступную информацию.
wake слишком тяжеловесна. А остальные примеры слишком просты. (правда модбас я еще не смотрел). Вообще не понимаю, почему эту тему преревели в подкатегорию "для начинающих"? Ведь эта проблема больше интересна тем, кто уже имеет опыт. Передавать байтики туда-сюда - проблем не составляет. Проблемы начинаються тогда, когда передаються большие массивы информации, на пределе пропускной способности канала для данной скорости.
Как бороться с ошибками? как считать контрольные суммы? какую скорость выбрать для меньшей ошибки рассогласования частот? какой протокол обмена? и т.д.

Так что без отработанных примеров не обойтись. Если есть ссылки, буду безмерно благодарен?
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Nov 29 2007, 15:35
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата
Как бороться с ошибками?

Ошибка в ответе: мастер повторяет посылку N раз, после чего считает, что нет связи и как-то это обрабатывает.
Ошибка в запросе: подчиненный игнорирует весь запрос.
Цитата
как считать контрольные суммы?

Да любой алгоритм. CRC-16 к примеру.
Цитата
какую скорость выбрать для меньшей ошибки рассогласования частот?

если с компьютером по нормальному шнурку - 115200 вполне нормально.
Если RS-485 и большие расстояния - 4800. Где-то видел табличку с предельными скоростями в зависимости от типа и длины кабеля.
Цитата
какой протокол обмена? и т.д.

Простейший протокол:
М(астер)->В(едомый):
STX Команда Данные ETX CRCL CRCH
В->М
STX Команда Данные ETX CRCL CRCH
Данные могут отсутствовать. В качестве CRC можно взять CRC-16. Не хотите заморачиваться - просто сумму по модулю.
Судя по вашему начальному сообщению, вам он вполне подойдет.
Go to the top of the page
 
+Quote Post

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

 


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


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