На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
  
> Данные с микроконтроллера
    Добрый день
    Ситуация следующая. На работе когда то давно заказывали программу и установку для обработки сигнала (по старой русской привычке естественно документация уже утеряна). Со временем ситуация изменилась и программа не устраивает. Попросили переписать. Сама она не такая уж и сложная. Проблема в обработке сигнала.

    Микроконтроллер от Silicon Labs - C8051FX20-TB. Подключение через COM-порт.

    Взял параметры из конфига старой программы - соответственно ловил так:
    ExpandedWrap disabled
          HANDLE hport;
          DWORD real_read;
          DCB dcb;
          BOOL succ;
          ofstream out;
          int a;
      ...
          hport=CreateFile("COM1",GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
      ...
              dcb.DCBlength=sizeof(dcb);
          succ=GetCommState(hport,&dcb);
          dcb.BaudRate=CBR_115200;
          dcb.ByteSize=8;
          dcb.Parity=NOPARITY;//EVENPARITY;
          dcb.StopBits=ONESTOPBIT;//1;
          succ=SetCommState(hport,&dcb);
      ...
          while(true)
          {
              ReadFile(hport,&symbol,1,&real_read,NULL);
              if(real_read==1) {
              a = atoi(symbol);
              //cout <<symbol;
              cout<<a<<endl;
              }
          }



    Пробовал у себя в кабинете без "нагрузки" (только плата и питание) - выдавала "0" (что логично). Сегодня съездил в мастерскую - все равно "0"!
    Правда тут уже обратил внимание, что в старой программе учитываются 4 канала (на 1ом из них есть значения(шум), остальные - примерно "0"). Откуда их брать непонятно...

    Обратился с запросом и в силикон лэбс (не ответили) и к оф.представителю в россии с просьбой скинуть документацию или примеры:
    "Платы отладки с наименованием C8051F005-TB, C8051F020-TB, C8051F120-B, C8051F040-TB и т.д. обычно входят в состав отладочных комплектов. В состав комплектов кроме этих плат также входит программатор-адаптер DEBUGADPTR1-USB, который необходим для программирования по интерфейсу JTAG запаянных на плате микроконтроллеров.
    Если у вас есть программатор-адаптер DEBUGADPTR1-USB вы можете самостоятельно запрограммировать или перепрограммировать контроллер установленный на плате C8051Fххх-TB."

    Ну а программатора-адаптера у меня естественно нет.
    Но и суть то в том чтобы получить только значения.

    Сталкивался кто-нибудь с таким агрегатом? или хотя бы возможные идеи по получению значений?..


    P.S. - не знал в какой раздел лучше запостить
      Непонятно. Плата принимает внешний сигнал и отдает на ПК или наоборот?
      У контроллера с ПК обмен-то есть? Они понимают друг друга?

      Добавлено
      Цитата The-Boss @
      Пробовал у себя в кабинете без "нагрузки" (только плата и питание) - выдавала "0" (что логично).
      В этом и состояла вся проверка работоспособности? :huh:
      Сообщение отредактировано: trainer -
      Во имя Ctrl, Alt и святаго Del, Enter!

      Основам программирования не обучаю. Не интересно.
        Цитата trainer @
        Непонятно. Плата принимает внешний сигнал и отдает на ПК или наоборот?

        да, плата принимает внешний сигнал и отдает значения в пк (с частотой 300гц - если верить предыдущей программе)


        Цитата trainer @
        В этом и состояла вся проверка работоспособности?

        разнесенная территория - лучшего варианта подцепить с нее данные мне предложить не смогли
          Ну а схема этой C8051FX20-TB есть?
          Связь-то вообще в наличии?
          Во имя Ctrl, Alt и святаго Del, Enter!

          Основам программирования не обучаю. Не интересно.
            Цитата trainer @
            Ну а схема этой C8051FX20-TB есть?

            на месте всё утеряно
            но если правильно понял слова офдиллера - то вот доки нашел:
            Mixed Signal ISP Flash MCU Family (pdf)
            C 8 0 5 1 F 1 2 x - D K (pdf)

            Цитата trainer @
            Связь-то вообще в наличии?

            связь есть. старая программа данные получает
              Цитата The-Boss @
              старая программа данные получает
              А новая - нет? На одном и том же железе? Настройка у программ полностью аналогична?
              Сообщение отредактировано: trainer -
              Во имя Ctrl, Alt и святаго Del, Enter!

              Основам программирования не обучаю. Не интересно.
                Цитата trainer @
                А новая - нет? На одном и том же железе? Настройка у программ полностью аналогична?

                первый пост.
                я пытаюсь считать данные с нее. В старой программе все параметры взял из ее настройки на ком-порт. Код в первом посте - ничего особенного - идут нули.
                Но в старой программе сделано разделение отображение 4х каналов (непонятно откуда берущихся) - на одном из них значения меняются. Чего собственно и мне хочется

                Добавлено
                Также через PCcom Moxa порт послушал на этих настройках - тоже самое что у меня
                  Цитата The-Boss @
                  непонятно откуда берущихся
                  Из получаемых данных. Нет?

                  Добавлено
                  Цитата The-Boss @
                  В старой программе все параметры взял из ее настройки на ком-порт.
                  Исходник настройки аналогичен или есть отличия?
                  Во имя Ctrl, Alt и святаго Del, Enter!

                  Основам программирования не обучаю. Не интересно.
                    Цитата trainer @
                    Из получаемых данных. Нет?

                    конечно


                    Цитата trainer @
                    Исходник настройки аналогичен или есть отличия?

                    исходников нет - были бы - тогда бы и проблем не было. параметры аналогичны конфигу(и ini файл и в самой программе окно) старой программы

                    Добавлено
                    завтра думаю съездить на месте "прослушать" данные с порта с разными параметрами (на всякий случай)
                      Цитата The-Boss @
                      исходников нет - были бы - тогда бы и проблем не было. параметры аналогичны конфигу(и ini файл и в самой программе окно) старой программы
                      Ааа... Ну тогда именно в настройках и может быть разница. Дизассемблируй.
                      Во имя Ctrl, Alt и святаго Del, Enter!

                      Основам программирования не обучаю. Не интересно.
                        Цитата The-Boss @
                        вязь есть. старая программа данные получает

                        Отпрортмонь старую программу и все. Делов-то.
                        И не забывай устанавливать параметры таймаутов для порта.
                        Цитата TheMachine @
                        т.е. в общем случае вы правы конечно, а мне надо спать больше а пить меньше
                          Цитата shm @
                          Отпрортмонь старую программу и все. Делов-то.

                          не пробовал. чем можно сделать?
                            Цитата The-Boss @
                            чем можно сделать?

                            Одноименной свободной маленькой программой Portmon.exe

                            Добавлено
                            Настрой сразу отображением данных в hex виде (где-то во вкладках есть), увидишь вообще весь обмен между программой и МК. Также отображаются все параметры подключения. Программа может работать удаленно, для локального подключения используй Connect Local, также выбери нужный порт (можно несколько). Странно, что ты в первый раз о ней слышишь.
                            Цитата TheMachine @
                            т.е. в общем случае вы правы конечно, а мне надо спать больше а пить меньше
                              приспособил на месте получать хоть какие то значения с контроллера
                              portmon'ом не удалось подключиться локально (даже меню Computer не было) - не доглядел наверно где то
                              попробовал перехватывать Serial Port Monitor'ом - в spm.txt пример
                              Пробовал записывать symbol из примера в первом после - 002.txt
                              Прикреплённый файлПрикреплённый файлspm.txt (2,57 Кбайт, скачиваний: 111)
                              Прикреплённый файлПрикреплённый файл002.txt (17,69 Кбайт, скачиваний: 270)
                                Цитата The-Boss @
                                portmon'ом не удалось подключиться локально (даже меню Computer не было)

                                Попробуй скачать отсюда. Вообще конечно странно, у меня всегда работала даже на самых урезанных сборках Embedded.
                                Цитата The-Boss @
                                попробовал перехватывать Serial Port Monitor'ом - в spm.txt пример

                                Да от самих-то данных толку мало, portmon выводит все параметры обмена.
                                Цитата TheMachine @
                                т.е. в общем случае вы правы конечно, а мне надо спать больше а пить меньше
                                  Цитата shm @
                                  Попробуй скачать отсюда. Вообще конечно странно, у меня всегда работала даже на самых урезанных сборках Embedded.

                                  Качал и отсюда тоже. Нет пункта Computer. а через ctrl+R к локальному подключаться не хочет

                                  Цитата shm @
                                  Да от самих-то данных толку мало, portmon выводит все параметры обмена.

                                  скрин serial port monitor'a
                                  Прикреплённый файлПрикреплённый файлSPM.png (145 Кбайт, скачиваний: 349)
                                    то есть... получается. посылается запрос N833.S1...
                                    далее сыпятся данные в hex...
                                    но... из пойманного на скрине - в рабочей программе был всплеск значений пару раз до "20... 40"
                                    соответственно, при рабочих условиях должно быть порядка 15000...17000 с четким (до едениц) разбросом.... (то есть "16577.. 16579...16576" например)
                                    видимо отсюда и берутся 4 "канала" - видимо каждый "канал" делает свои преобразования с сигналом...
                                    но все равно как то не совсем стыкуются у меня в голове получаемые данные с желаемым отображением...
                                    Сообщение отредактировано: The-Boss -
                                      2 часа разгадывания распечаток:
                                      как понял из сравнения результатов программы на низких значениях - получилось что 4 "канала". Постоянно чередуются :
                                      C0
                                      80
                                      40
                                      00
                                      и как раз рабочий канал на программе 2й.
                                      верхушка в программе была 120... сопоставляется с "80 78" в hex'e, что я и поймал.

                                      Теперь уже только не понятно как получать большие значения типа 17000 (ибо понятно что FF=255)
                                        Прослушал порт сегодня на месте:
                                        значения основного "рабочего" канала - около 13000
                                        теперь по результатам прослушки постоянно чередуются уже так:
                                        FF (аля С0)
                                        BF (аля 80)
                                        72
                                        01
                                        Прикреплённый файлПрикреплённый файл_____________________.docx (41,64 Кбайт, скачиваний: 141)
                                          Цитата The-Boss @
                                          скрин serial port monitor'a

                                          The-Boss, даташита на протокол МК нету что ли? Изучать таким образом сам протокол может оказаться весьма трудоемкой задачей.
                                          Параметров подключения я на нем не увидел. Из твоей программы удалось хоть что-то считать/записать? Попробуй запусти старую программу на другом компе вместе с портмоном, хот узнаешь параметры тогда. Ну или мне старую программу можешь выслать, если это не военная разработка... Результат выложу, даже могу код необходимый для открытия и настройки порта.
                                          Сообщение отредактировано: shm -
                                          Цитата TheMachine @
                                          т.е. в общем случае вы правы конечно, а мне надо спать больше а пить меньше
                                            Цитата The-Boss @

                                            доброго времени суток!!Есть у меня в наличии плата могу предложить вам
                                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                            0 пользователей:


                                            Рейтинг@Mail.ru
                                            [ Script Execution time: 0,1726 ]   [ 23 queries used ]   [ Generated: 16.07.19, 20:37 GMT ]