Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.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" (что логично). |
Автор: The-Boss 01.02.12, 09:38 |
да, плата принимает внешний сигнал и отдает значения в пк (с частотой 300гц - если верить предыдущей программе) разнесенная территория - лучшего варианта подцепить с нее данные мне предложить не смогли |
Автор: trainer 01.02.12, 09:46 |
Ну а схема этой C8051FX20-TB есть? Связь-то вообще в наличии? |
Автор: The-Boss 01.02.12, 10:15 |
на месте всё утеряно но если правильно понял слова офдиллера - то вот доки нашел: Mixed Signal ISP Flash MCU Family (pdf) C 8 0 5 1 F 1 2 x - D K (pdf) связь есть. старая программа данные получает |
Автор: trainer 01.02.12, 10:17 |
А новая - нет? На одном и том же железе? Настройка у программ полностью аналогична? |
Автор: The-Boss 01.02.12, 11:02 |
Цитата trainer @ А новая - нет? На одном и том же железе? Настройка у программ полностью аналогична? первый пост. я пытаюсь считать данные с нее. В старой программе все параметры взял из ее настройки на ком-порт. Код в первом посте - ничего особенного - идут нули. Но в старой программе сделано разделение отображение 4х каналов (непонятно откуда берущихся) - на одном из них значения меняются. Чего собственно и мне хочется Добавлено Также через PCcom Moxa порт послушал на этих настройках - тоже самое что у меня |
Автор: trainer 01.02.12, 11:36 |
Из получаемых данных. Нет? Добавлено Исходник настройки аналогичен или есть отличия? |
Автор: The-Boss 01.02.12, 12:23 |
конечно исходников нет - были бы - тогда бы и проблем не было. параметры аналогичны конфигу(и ini файл и в самой программе окно) старой программы Добавлено завтра думаю съездить на месте "прослушать" данные с порта с разными параметрами (на всякий случай) |
Автор: trainer 01.02.12, 13:29 |
Цитата The-Boss @ Ааа... Ну тогда именно в настройках и может быть разница. Дизассемблируй. исходников нет - были бы - тогда бы и проблем не было. параметры аналогичны конфигу(и ini файл и в самой программе окно) старой программы |
Автор: shm 02.02.12, 07:37 |
Отпрортмонь старую программу и все. Делов-то. И не забывай устанавливать параметры таймаутов для порта. |
Автор: The-Boss 02.02.12, 07:45 |
не пробовал. чем можно сделать? |
Автор: shm 02.02.12, 08:33 |
Одноименной свободной маленькой программой 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 |
Попробуй скачать отсюда. Вообще конечно странно, у меня всегда работала даже на самых урезанных сборках Embedded. Да от самих-то данных толку мало, portmon выводит все параметры обмена. |
Автор: The-Boss 07.02.12, 04:30 |
Цитата shm @ Попробуй скачать отсюда. Вообще конечно странно, у меня всегда работала даже на самых урезанных сборках Embedded. Качал и отсюда тоже. Нет пункта Computer. а через ctrl+R к локальному подключаться не хочет скрин 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, даташита на протокол МК нету что ли? Изучать таким образом сам протокол может оказаться весьма трудоемкой задачей. Параметров подключения я на нем не увидел. Из твоей программы удалось хоть что-то считать/записать? Попробуй запусти старую программу на другом компе вместе с портмоном, хот узнаешь параметры тогда. Ну или мне старую программу можешь выслать, если это не военная разработка... Результат выложу, даже могу код необходимый для открытия и настройки порта. |
Автор: Leprikon 06.02.19, 08:00 |
Цитата The-Boss @ доброго времени суток!!Есть у меня в наличии плата могу предложить вам |