Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Assembler > Данные с микроконтроллера


Автор: The-Boss 01.02.12, 08:08
Добрый день
Ситуация следующая. На работе когда то давно заказывали программу и установку для обработки сигнала (по старой русской привычке естественно документация уже утеряна). Со временем ситуация изменилась и программа не устраивает. Попросили переписать. Сама она не такая уж и сложная. Проблема в обработке сигнала.

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

Взял параметры из конфига старой программы - соответственно ловил так:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
        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. - не знал в какой раздел лучше запостить

Автор: trainer 01.02.12, 09:03
Непонятно. Плата принимает внешний сигнал и отдает на ПК или наоборот?
У контроллера с ПК обмен-то есть? Они понимают друг друга?

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

Автор: The-Boss 01.02.12, 09:38
Цитата trainer @
Непонятно. Плата принимает внешний сигнал и отдает на ПК или наоборот?

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


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

разнесенная территория - лучшего варианта подцепить с нее данные мне предложить не смогли

Автор: trainer 01.02.12, 09:46
Ну а схема этой C8051FX20-TB есть?
Связь-то вообще в наличии?

Автор: The-Boss 01.02.12, 10:15
Цитата trainer @
Ну а схема этой C8051FX20-TB есть?

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

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

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

Автор: trainer 01.02.12, 10:17
Цитата The-Boss @
старая программа данные получает
А новая - нет? На одном и том же железе? Настройка у программ полностью аналогична?

Автор: The-Boss 01.02.12, 11:02
Цитата trainer @
А новая - нет? На одном и том же железе? Настройка у программ полностью аналогична?

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

Добавлено
Также через PCcom Moxa порт послушал на этих настройках - тоже самое что у меня

Автор: trainer 01.02.12, 11:36
Цитата The-Boss @
непонятно откуда берущихся
Из получаемых данных. Нет?

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

Автор: The-Boss 01.02.12, 12:23
Цитата trainer @
Из получаемых данных. Нет?

конечно


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

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

Добавлено
завтра думаю съездить на месте "прослушать" данные с порта с разными параметрами (на всякий случай)

Автор: trainer 01.02.12, 13:29
Цитата The-Boss @
исходников нет - были бы - тогда бы и проблем не было. параметры аналогичны конфигу(и ini файл и в самой программе окно) старой программы
Ааа... Ну тогда именно в настройках и может быть разница. Дизассемблируй.

Автор: shm 02.02.12, 07:37
Цитата The-Boss @
вязь есть. старая программа данные получает

Отпрортмонь старую программу и все. Делов-то.
И не забывай устанавливать параметры таймаутов для порта.

Автор: The-Boss 02.02.12, 07:45
Цитата shm @
Отпрортмонь старую программу и все. Делов-то.

не пробовал. чем можно сделать?

Автор: shm 02.02.12, 08:33
Цитата The-Boss @
чем можно сделать?

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

Добавлено
Настрой сразу отображением данных в hex виде (где-то во вкладках есть), увидишь вообще весь обмен между программой и МК. Также отображаются все параметры подключения. Программа может работать удаленно, для локального подключения используй Connect Local, также выбери нужный порт (можно несколько). Странно, что ты в первый раз о ней слышишь.

Автор: The-Boss 06.02.12, 11:23
приспособил на месте получать хоть какие то значения с контроллера
portmon'ом не удалось подключиться локально (даже меню Computer не было) - не доглядел наверно где то
попробовал перехватывать Serial Port Monitor'ом - в spm.txt пример
Пробовал записывать symbol из примера в первом после - 002.txt
spm.txt (, : 294)
002.txt (, : 612)

Автор: shm 06.02.12, 16:10
Цитата The-Boss @
portmon'ом не удалось подключиться локально (даже меню Computer не было)

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

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

Автор: The-Boss 07.02.12, 04:30
Цитата shm @
Попробуй скачать отсюда. Вообще конечно странно, у меня всегда работала даже на самых урезанных сборках Embedded.

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

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

скрин serial port monitor'a
SPM.png (, : 628)

Автор: The-Boss 07.02.12, 08:06
то есть... получается. посылается запрос N833.S1...
далее сыпятся данные в hex...
но... из пойманного на скрине - в рабочей программе был всплеск значений пару раз до "20... 40"
соответственно, при рабочих условиях должно быть порядка 15000...17000 с четким (до едениц) разбросом.... (то есть "16577.. 16579...16576" например)
видимо отсюда и берутся 4 "канала" - видимо каждый "канал" делает свои преобразования с сигналом...
но все равно как то не совсем стыкуются у меня в голове получаемые данные с желаемым отображением...

Автор: The-Boss 07.02.12, 09:47
2 часа разгадывания распечаток:
как понял из сравнения результатов программы на низких значениях - получилось что 4 "канала". Постоянно чередуются :
C0
80
40
00
и как раз рабочий канал на программе 2й.
верхушка в программе была 120... сопоставляется с "80 78" в hex'e, что я и поймал.

Теперь уже только не понятно как получать большие значения типа 17000 (ибо понятно что FF=255)

Автор: The-Boss 08.02.12, 07:44
Прослушал порт сегодня на месте:
значения основного "рабочего" канала - около 13000
теперь по результатам прослушки постоянно чередуются уже так:
FF (аля С0)
BF (аля 80)
72
01
_____________________.docx (, : 318)

Автор: shm 08.02.12, 14:07
Цитата The-Boss @
скрин serial port monitor'a

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

Автор: Leprikon 06.02.19, 08:00
Цитата The-Boss @

доброго времени суток!!Есть у меня в наличии плата могу предложить вам

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)