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

 
 
 
Reply to this topicStart new topic
> WAKE исходники на С для AVR, есть ли у кого?
otrog
сообщение Jul 20 2006, 11:54
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589



На
http://www.spetspribor.com/support/software/wake/wake.html
к сожалению исходники для AVR на ассемблере sad.gif
Если у кого есть на си поделитесь пожалуйста.


--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
Go to the top of the page
 
+Quote Post
Igor26
сообщение Jul 20 2006, 12:52
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



http://electronix.ru/forum/index.php?showt...10934&st=15
Go to the top of the page
 
+Quote Post
Леонид Иванович
сообщение Jul 21 2006, 05:53
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 318
Регистрация: 21-07-06
Из: Минск
Пользователь №: 18 986



Вот ссылка:
http://www.spetspribor.com/support/softwar...wake/wake_c.zip


--------------------
Go to the top of the page
 
+Quote Post
otrog
сообщение Jul 21 2006, 07:27
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589



Цитата(Леонид Иванович @ Jul 21 2006, 09:53) *

w00t.gif
Спасибо что ткнули носом. Буквально несколько дней назад на ихнем сайте небыло этого исходника.
Я уже начал перелопачивыть "wusource.zip" под АВР а тут такое счастье.


--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
Go to the top of the page
 
+Quote Post
Леонид Иванович
сообщение Jul 21 2006, 09:30
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 318
Регистрация: 21-07-06
Из: Минск
Пользователь №: 18 986



Так я увидел сегодня эту тему и выложил smile.gif Если будут вопросы, пишите.

Сообщение отредактировал Леонид Иванович - Jul 21 2006, 09:32


--------------------
Go to the top of the page
 
+Quote Post
otrog
сообщение Jul 21 2006, 11:01
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589



Цитата(Леонид Иванович @ Jul 21 2006, 13:30) *
Так я увидел сегодня эту тему и выложил smile.gif Если будут вопросы, пишите.

Ухты! Так это Вы автор WAKE-а!
Тогда Вам a14.gif и Спасибо cheers.gif за протокол.
А вопросы конечно же будут smile.gif .
Вот первый:
Как из main-а узнать передался ли пакет?
Т.е. примерно такая ситуация:
Код
    Pc_Tx_Frame();
    while( ??? ){} // ждать окончания передачи

Что подставить вместо "???"?


--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
Go to the top of the page
 
+Quote Post
Леонид Иванович
сообщение Jul 22 2006, 09:31
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 318
Регистрация: 21-07-06
Из: Минск
Пользователь №: 18 986



Цитата(otrog @ Jul 21 2006, 14:01) *
Тогда Вам a14.gif и Спасибо cheers.gif за протокол.


Я рад, что кому-то протокол пригодился.

Цитата(otrog @ Jul 21 2006, 14:01) *
Как из main-а узнать передался ли пакет?
Т.е. примерно такая ситуация:
Код
    Pc_Tx_Frame();
    while( ??? ){} // ждать окончания передачи

Что подставить вместо "???"?


После завершения передачи последнего байта пакета Pc_Tx_Sta становится равным SEND_IDLE. Но нет смысла подвешивать Main на всё время передачи пакета. Ведь передача ведётся по прерываниям в фоновом режиме, Main может в это время выполнять другие задачи. А проверить, закончилась ли передача пакета, можно в любой момент.

Подобная проблема актуальна на стороне PC при использовании RS-485 в полудуплексном режиме, когда требуется переключение направления. Под Win затруднительно определить момент окончания передачи посылки. Для Win98 эта проблема решается использованием недокументированного сервиса драйвера COM-порта для получения базового адреса микросхемы UART и прямым чтением ее регистра. Для Win 2000/XP это решается использованием режима RTS TOGGLE, который работает, правда, весьма тормознуто. В любом случае управление сигналом RTS для переключения направления должно осуществляться внутри DLL. В ближайшем будущем я планирую добавить поддержку RS-485 в wsp32.dll.


--------------------
Go to the top of the page
 
+Quote Post
Igor26
сообщение Jul 24 2006, 05:55
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 10-02-05
Пользователь №: 2 544



Цитата
В любом случае управление сигналом RTS для переключения направления должно осуществляться внутри DLL

Зачем это нужно? Переключение направления осуществляется на интерфейсной плате RS-485 автоматически.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 24 2006, 06:22
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Igor26 @ Jul 24 2006, 08:55) *
Переключение направления осуществляется на интерфейсной плате RS-485 автоматически.

В общем случае, от замены _приемопередатчиков_ RS232 на RS485 никакой "автоматики" не добавляется в принципе.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Tran
сообщение Jul 24 2006, 06:43
Сообщение #10


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

Группа: Свой
Сообщений: 135
Регистрация: 21-06-04
Пользователь №: 70



Это в случае полного дуплекса не добавляется, а в полудуплексе на RS485 надо переключать Rx/Tx.


--------------------
Настоящее чревато будущим.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 24 2006, 06:52
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Tran @ Jul 24 2006, 09:43) *
Это в случае полного дуплекса не добавляется, а в полудуплексе на RS485 надо переключать Rx/Tx.

Речь идет не о том, что надо или не надо обеспечивать, а о том, что такую функциональность за Вас
тупые приемопередатчики сами собой не обеспечат, посему и вешается переключение на RTS, например.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Леонид Иванович
сообщение Jul 24 2006, 08:37
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 318
Регистрация: 21-07-06
Из: Минск
Пользователь №: 18 986



Цитата(Igor26 @ Jul 24 2006, 08:55) *
Зачем это нужно? Переключение направления осуществляется на интерфейсной плате RS-485 автоматически.


Адаптеры RS-232 -> RS-485 с автоматическим переключением направления значительно дороже, к тому же, есть проблемы с выбором скорости передачи (многие из них требуют задания скорости с помощью DIP-переключателей).


--------------------
Go to the top of the page
 
+Quote Post
otrog
сообщение Aug 2 2006, 12:22
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589



2 Леонид Иванович
Вот возник еще вопрос по WAKE.
Как отследить момент окончания приема пакета на стороне МК? Т.е. мне нужно после окончании приема пакета от PC и при отсутствии ошибок, отправить ответный пакет от МК.
Делаю так:
Код
    if ((Pc_Rx_Sta == WAIT_FEND) && (Command != CMD_ERR)) // проверка наличия нового пакета ???????????
    {
      if (Command == 0x24)
      {
        PC_TX_ADDR = PC_RX_ADDR;
        Pc_Tx_Cmd = Pc_Rx_Cmd; // команда      
        Pc_Tx_Nbt = sizeof(Parameters); // размер посылки

        ptr = (unsigned char *)&Parameters; // указатель на начало посылки
        for (i=0;i<sizeof(Parameters);i++) { Pc_Tx_Dat[i] = *ptr++; } // переписать посылку в буфер
        Pc_Tx_Frame(); // отправить посылку
      }
    }

Но это явно не правильно. А как надо?

Спасибо.


--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
Go to the top of the page
 
+Quote Post
Doka
сообщение Aug 2 2006, 13:17
Сообщение #14


Electrical Engineer
******

Группа: СуперМодераторы
Сообщений: 2 163
Регистрация: 4-10-04
Пользователь №: 778



to Леонид Иванович
за WAKE действительно большое спасибо

разбирались с ним год назад по исходникам на Си под UNIX
насколько я помню там в одном месте был баг: при генерации пакета стаффингу мог подвергаться байт контрольной суммы (если имел соотв.значение), однако при приеме байт контрольной суммы обрабатывался без учета того, что он мог быть застаффингован - т.е. сбои могут идти очень редко - только в тех пакетах, в которых байт контр.суммы подвергнут стаффингу.
.
ЗЫ: наверняка сейчас подправили это, но на всякий случай: пользователи WAKE будьте бдительны =)


--------------------
Блог iDoka.ru
CV linkedin.com/in/iDoka
Sources github.com/iDoka


Never stop thinking...........................
Go to the top of the page
 
+Quote Post
Леонид Иванович
сообщение Aug 2 2006, 22:56
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 318
Регистрация: 21-07-06
Из: Минск
Пользователь №: 18 986



Цитата(otrog @ Aug 2 2006, 15:22) *
Вот возник еще вопрос по WAKE.
Как отследить момент окончания приема пакета на стороне МК? Т.е. мне нужно после окончании приема пакета от PC и при отсутствии ошибок, отправить ответный пакет от МК.


По успешному завершению приема пакета в переменую Command будет помещен код команды, пришедший от PC. Основная программа на микроконтроллере должна мониторить переменную Command, как только в ней появился код команды, это команда должна выполниться. По окончанию выполнения команды основная программа отправляет ответ PC с кодом выполненной команды и в Command загружает код отсутствия операции CMD_NOP.

Если пакет принят с ошибкой (например, не совпала CRC), в Command обработчиком прерывания по приему помещается код CMD_ERR. В ответ на это основная программа должна передать в PC пакет с кодом команды CMD_ERR без параметров.

Чтобы было понятней, выложил куски исходников здесь:
http://upload.caxapa.ru/Wakesample.zip

Цитата(Doka @ Aug 2 2006, 16:17) *
разбирались с ним год назад по исходникам на Си под UNIX
насколько я помню там в одном месте был баг: при генерации пакета стаффингу мог подвергаться байт контрольной суммы


Под UNIX не работаю, но DLL под WINDOWS такого бага не содержат.


--------------------
Go to the top of the page
 
+Quote Post
goodwin
сообщение Aug 2 2006, 23:43
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 481
Регистрация: 1-08-05
Пользователь №: 7 267



Большое спасибо за протокол. И самое главное - за поддержку.
Сожалею, что года черыре назад всего этого еще не было...
Сейчас вынужден притягивать за уши ради совместимости со старыми устройствами свой,
который уже давно не устрамвает по некоторым причинам...
Go to the top of the page
 
+Quote Post
goodwin
сообщение Aug 2 2006, 23:50
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 481
Регистрация: 1-08-05
Пользователь №: 7 267



Большое спасибо за протокол. И самое главное - за поддержку.
Сожалею, что года черыре назад всего этого еще не было...
Сейчас вынужден притягивать за уши ради совместимости со старыми устройствами свой,
который уже давно не устрамвает по некоторым причинам...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 19:58
Рейтинг@Mail.ru


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