Большой Воронежский Форум

Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел.
Вернуться   Большой Воронежский Форум » Компьютеры и все, что с ними связано » »Радиолюбитель
Программирование микроконтролеров,ремонт аудио/видео/бытовой техники,полезные устройства для дома,телефония, обсуждение статей журнала Радио

Ответ
 
Опции темы
Старый 23.02.2007, 17:33   #1   
Форумец
 
Аватар для sracozawr
 
Сообщений: 6
Регистрация: 15.02.2007

sracozawr вне форума Не в сети
AVR-контроллер связь с ПК через COM-порт

Делаю диплом, пытаюсь написать проги для стыковки ATMega8535 с ПК. Сейчас есть есть программа в МК принимающая данные котрые отображаются на индикаторе(7 сегментов), с ПК из проги на Delphi7 данные выталкиваются, индикатор зажигается(за основу взяты проги из книжек), но высвечивает непонятно что. У кого есть информация по программированию МК - поделитесь.
Пишу на ассемблере.
  Ответить с цитированием
Старый 23.02.2007, 18:25   #2   
Форумец
 
Сообщений: 552
Регистрация: 17.06.2005
Возраст: 40

dr.ON вне форума Не в сети
Цитата:
Сообщение от sracozawr
... У кого есть информация по программированию МК - поделитесь....
У многих, но БОЛЬШЕ всего в инете!
Спрашивай точнее чего именно надо.

P.S. 2ALL: А тут мы какую нибудь дисскусию устроим, по аналогии с темой "Пишем прошивки"?
  Ответить с цитированием
Старый 24.02.2007, 00:32   #3   
Форумец
 
Сообщений: 77
Регистрация: 18.01.2007

Gnd вне форума Не в сети
sracozawr,

Думаю, что может принести пользу форум разработчиков электроники. http://electronix.ru/forum/.
  Ответить с цитированием
Старый 24.02.2007, 08:54   #4   
Форумец
 
Аватар для sracozawr
 
Сообщений: 6
Регистрация: 15.02.2007

sracozawr вне форума Не в сети
Цитата:
Сообщение от dr.ON
У многих, но БОЛЬШЕ всего в инете!
Спрашивай точнее чего именно надо.
P.S. 2ALL: А тут мы какую нибудь дисскусию устроим, по аналогии с темой "Пишем прошивки"?
Точнее попробую.
А кто писал программу стыковки AVR с ПК, причём для AVR на асм-ре, а для ПК на Делфи?
В книжке читаю в примере "отправляем в порт строку 5А 21 00 00 00 00 7А
дальше коментируется 5А - стартовый байт"
не понимаю, вот этот стартовый байт всегда должен быть 5А или нет, может это конкретный пример (для конкретной проги)?
Вот часть кода для проги на Delphi:
begin
if not VaComm1.Active then VaComm1.Open;
sCMD:='5A'+Format(' %2.x',[cmRS]);
sum:=$5A+$21;
sCMD:=sCMD+' 00 00';
for J:=1 to 128 do begin
sum:= sum+I;
sCMD:= sCMD+Format(' %.2x',[J]);
end;
sCMD:= sCMD+A+Format(' %.2x',[12]);
sum:= sum+$12;
sCMD:=sCMD+Format(' %.2x',[Hi(sum)])+Format(' %.2x',[Lo(sum)]);
Edit1.Text :=sCMD;
VaComm1.WriteText(sCMD);
end;
end.

Строковая переменная sCMD и есть то что мы передаём на контророллер. Она формируется из стартового байта(5А) и байта команды(cmRS=$21). Непонятно зачем добавляются вот это '00 00'. То что цикл забивает 128 байт цифрами вроде понял, но итересует как вместо цифр забить конкретные данные. Да и вообще как изменить длину слова данных.
Может с кем можно голосом пообщаться? Пиво будет!!!
  Ответить с цитированием
Старый 24.02.2007, 10:04   #5   
Форумец
 
Сообщений: 552
Регистрация: 17.06.2005
Возраст: 40

dr.ON вне форума Не в сети
Цитата:
Сообщение от sracozawr
не понимаю, вот этот стартовый байт всегда должен быть 5А или нет, может это конкретный пример (для конкретной проги)?
Стартовый байт и формат пакета описывается в протоколе обмена который используеш. Выбери готовый протокол или сочини свой.

Примерно выглядит так:
A B C DDDDDDDD E
A - стартовый байт( в разныж протоколах разные)
B - служебная информация( адрес получателя, тип пакета, длинна, флаги, ...)
C - комманда
D - данные
Е - контрольная сумма( для проверки целостности пакета)
Иногда В и С меняются местами!

Цитата:
Сообщение от sracozawr
Непонятно зачем добавляются вот это '00 00'.
Это скорее всего и есть служебная информация, которая, в данной реализации, не используется.

Цитата:
Сообщение от sracozawr
но итересует как вместо цифр забить конкретные данные.
sum:= sum+D1;
sCMD:= sCMD+Format('%.2x',D1);

sum:= sum+D2;
sCMD:= sCMD+Format('%.2x',D2);
.........................................
и т.д
где D1, D2 - однобайтовые данные

Но это колхозный метод. Лучше вначале сформировать пакет данных в байтовый массив( удобно использовать структуры), а потом перегнать в строку с подсчетом контрольной суммы.

Только, помоему, вот эта штука должна писаться без пробела '%.2x'

Цитата:
Сообщение от sracozawr
Да и вообще как изменить длину слова данных.
"длину слова данных" - это что такое( поподробнее пожалуйста)?
  Ответить с цитированием
Старый 24.02.2007, 20:07   #6   
Форумец
 
Аватар для sracozawr
 
Сообщений: 6
Регистрация: 15.02.2007

sracozawr вне форума Не в сети
"длину слова данных" - это что такое( поподробнее пожалуйста)?[/QUOTE]

Это в том смысле что в МК задаётся длина байта данных(5,7,8 или 9 бит).
В проге для компа это играет какую-либо роль или нет.
  Ответить с цитированием
Старый 24.02.2007, 20:24   #7   
...
 
Аватар для shuher
 
Сообщений: 3,035
Регистрация: 06.06.2003
Возраст: 40

shuher вне форума Не в сети
Цитата:
Сообщение от sracozawr
длина байта данных
1 байт = 8 бит
Иначе не бывает. Может ты имел в виду длину пакета при передаче?
  Ответить с цитированием
Старый 24.02.2007, 21:55   #8   
Форумец
 
Сообщений: 19
Регистрация: 15.03.2005
Возраст: 40

John_ вне форума Не в сети
Да, действительно 1 байт - 8 бит Но COM-порт может работать не только с 8-ю битами. Например 9 битные посылки могут использоваться для адресации устройства на шине.
  Ответить с цитированием
Старый 24.02.2007, 21:59   #9   
...
 
Аватар для shuher
 
Сообщений: 3,035
Регистрация: 06.06.2003
Возраст: 40

shuher вне форума Не в сети
Цитата:
Сообщение от John_
Например 9 битные посылки могут использоваться для адресации устройства на шине
длина ПАКЕТА
  Ответить с цитированием
Старый 25.02.2007, 00:38   #10   
Форумец
 
Сообщений: 552
Регистрация: 17.06.2005
Возраст: 40

dr.ON вне форума Не в сети
Цитата:
Сообщение от sracozawr
Это в том смысле что в МК задаётся длина байта данных(5,7,8 или 9 бит).
В проге для компа это играет какую-либо роль или нет.
Да, менять можно через WinAPI.
Цитата:
DCB sDCB = { sizeof( DCB),};
HANDLE hCom;
hCom = CreateFile( "COM1", GENERIC_WRITE | GENERIC_READ,
0, NULL, OPEN_EXISTING, 0, NULL);
BuildCommDCB( "baud=115200 parity=N data=8 stop=2", &sDCB);
SetCommState( hCom, &sDCB);
В выделенной строчке меняеш конфиг( "data=Х") и все. Пример хоть и не на дельфи, но я думаю все и так понятно.
P.S. А че здесь тэг [CODE] не функционирует???
  Ответить с цитированием
Старый 26.02.2007, 17:39   #11   
Форумец
 
Аватар для Pavel_lb
 
Сообщений: 114
Регистрация: 01.11.2006

Pavel_lb вне форума Не в сети
Цитата:
Сообщение от sracozawr
Может с кем можно голосом пообщаться? Пиво будет!!![/COLOR]
А как всё таки, на счёт по телефону с кем можно на эту тему поговорить?
  Ответить с цитированием
Старый 27.10.2007, 10:11   #12   
Форумец
 
Сообщений: 115
Регистрация: 26.07.2007
Возраст: 37

xlr8 вне форума Не в сети
А может написать такую прогу на контроллер, которая бы читала все, что выдал порт и запоминала, а потом, по нажатию кнопки последовательно выводила эти данные на индикатор. Остается путем подачи различных команд на порт, выяснить что для чего используется.
  Ответить с цитированием
Старый 27.10.2007, 14:03   #13   
Форумец
 
Аватар для Amrel
 
Сообщений: 81
Регистрация: 08.06.2007
Возраст: 38

Amrel вне форума Не в сети
Было бы Желание...

Я делал это!!! Подключил ATmega16 к RS232, написал програмулину на Delphi7. Сейчас делаю радио удлиннитель.... По вопросам обращаться amrel[сабака]mail.ru
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind