-
Постов
1 610 -
Зарегистрирован
-
Посещение
-
Победитель дней
2
Весь контент juvf
-
Как сделать смешанный проект с/с++?
juvf ответил juvf тема в Программирование
2bseyur Спасибо, проблема решена!!! -
Как сделать смешанный проект с/с++?
juvf ответил juvf тема в Программирование
Не плучилось (( Если только в файле test.cpp написать"extern "C" int myCppF(int f) ..." - то выскакивает ошибка Error[Pe337]: linkage specification is incompatible with previous "myCppF" (declared at line 2 of "D:\Work\testcpp\test.h") D:\Work\testcpp\test.cpp 4 если объявить в test.h так же extern "C" int myCppF(int f); Error[Pe040]: expected an identifier D:\Work\testcpp\test.h 2 Warning[Pe223]: function "myCppF" declared implicitly D:\Work\testcpp\main.c 11 Error while running C/C++ compiler test.cpp Где и как конкретно применить extern "C"? -
Как сделать смешанный проект с/с++?
juvf опубликовал тема в Программирование
есть проект на си для IAR MSP430. создал новый файл. скомпелял - всё работает. указал опцию новому файлу с++. перестало собиратся. Вообщем не возможно из сишных файлов вызвать функции написанные в с++ файлах. для теста написал маленький проект main.c #include "io430.h" #include "test.h" int main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; int b; b = myCppF(56); return b; } test.h int myCppF(int f); test.cpp #include "test.h" int myCppF(int f) { return ~f; } опции всего проекта и main.c - си, test.cpp - си++. при компиляции ошибка линкера Error[e46]: Undefined external "myCppF" referred in main ( D:\Work\testcpp\Debug\Obj\main.r43 ) Error while running Linker Как вызвать из сишного файла функцию, определённую в с++? ps в прикреплении архив с этим тестовым проектом. testcpp.rar -
C++ в IAR MSP430
juvf ответил juvf тема в Программирование
Ну проблему решил, и почему она возникла в таком виде - примерно понял. А проблему решил строчкой в срр файле #include <math.h>. в cpp есть #include "main.h". а main - это уже сишный. в main.h есть #include <math.h> который, по видимому компилялся как сишный. а в си нет перегрузки функций. но с++ так и не прикрутил, есть еще проблема - но это уже другая тема. -
C++ в IAR MSP430
juvf опубликовал тема в Программирование
Есть проект для msp430f149 написанный на СИ. Пишу новый модуль (файл с функциями) для этого проекта. Ну очень нужен на с++. Для нового файла установил опцию Embedded C++. При компиляции получаю ошибки Error[Pe040]: expected an identifier C:\Program Files\IAR Systems\Embedded Workbench 5.3 Evaluation\430\INC\DLIB\math.h 128 Error[Pe018]: expected a ")" C:\Program Files\IAR Systems\Embedded Workbench 5.3 Evaluation\430\INC\DLIB\math.h 128 Error[Pa002]: the type attribute "__intrinsic" is not allowed on this declaration C:\Program Files\IAR Systems\Embedded Workbench 5.3 Evaluation\430\INC\DLIB\math.h 128 Error[Pe040]: expected an identifier C:\Program Files\IAR Systems\Embedded Workbench 5.3 Evaluation\430\INC\DLIB\math.h 130 Error[Pe018]: expected a ")" C:\Program Files\IAR Systems\Embedded Workbench 5.3 Evaluation\430\INC\DLIB\math.h 130 Error[Pa002]: the type attribute "__intrinsic" is not allowed on this declaration C:\Program Files\IAR Systems\Embedded Workbench 5.3 Evaluation\430\INC\DLIB\math.h 130 ... вот кусок кода из math.h #ifdef __cplusplus __INTRINSIC double abs(double); //строка 128 __INTRINSIC double pow(double, int); __INTRINSIC float abs(float); //строка 130 .... __INTRINSIC long double tanh(long double); #endif /* __cplusplus */ т.е. asb() несколько раз объявлена и на неё ругается. Как это побороть можно? -
Заложил в плату HX1188NL. Пока мк/схему не получил поставил 20PMT04B (с сетевухи сдёрнул) - работает.
-
Синхронизация часов реального времени
juvf ответил juvf тема в В помощь начинающему
Какие датчики? Оборудование на КП может быть расположено как угодно - на улице, в помещении или в глухом помещении, считай что в бункере на глубине 100 метров. растояние от КП до ДП до 25 км. с центральным устройством. Дп - есть сервер, или мастер, или ведущий. хаотично. Да, есть. Х.з. В ТЗ это не оговорено. Как заказчик будет питать - это его желание. Есть удалённые объекты, которые питаются от электросети (наверно эти сети разные), при пропадании сети питаются от дизеля. Пока дизель не завелся или если он крякнет то питание от аккумулятора. Вообще питание аппаратуры ориентировано на 12В. Если на объекте нет такового - ставится ИП или преобразователь , например 27в12. Да ни как не планируется. Связь с каждым объектом рассматривается индивидуально. Где-то кабель проброшен, где-то волс, где-то объект в низинке и радиоканал на прямую не пробьёт до него, приходится по проводам до одного объекта, а там ретранслировать по радиоканалу в эту низинку. Т.е. всё индивидуально. Протоколы тоже разные - Гранит, Лисна-Ч, Мэк-101, Мэк-104, Modbus и т.п. -
Синхронизация часов реального времени
juvf ответил juvf тема в В помощь начинающему
DanilinS Ну по сути то не нужно. Но какая разница нужно или нет - предложенный вами метод можно применить и в случае, если абсолютное время нужно. Только вот я боюсь что разбег часов за пол года будет гораздо больше 10 мс. Да и ездить на объекты - это тоже не вариант. Аппаратура делается как раз для того, чтоб на объекты не ездить. А 220 - хз. гдето нет, где-то есть. При чем между "там где есть" до 50 км, т.е. от разных сетей запитка. -
Синхронизация часов реального времени
juvf ответил juvf тема в В помощь начинающему
Ок! Возьму на заметку. Так не требуется синхронизировать время с географическим, требуется синхронизация времени между ДП и КП, а это радиус до 50 км. Так что если и будет погрешность относительно UT, вызванная распространением сигнала , то на ДП относительно КП погрешности не будет. p.s. Официально у нас запрещено летать по GPS. Все летаю по наземным средствам аэронавигации. А не официально все летают по GPS (со слов авиаторов). Ещё лет пять, и лётчики вообще разучатся летать без GPS. Тогда мерикосы могут нам устроить 11.09.2001 ))) -
Синхронизация часов реального времени
juvf ответил juvf тема в В помощь начинающему
Друг с другом. Задержки до минуты были в GPRS. В радиоканале нет задержек и если вся система на радиоканале, то конечно можно по рк синхронизироваться. Но система ,,,,,,,, где-то радиоканал, где-то проводной, где-то tcp/ip, а где-то комбинированный КП-<Модбудс>-<Радиоканал>-<RS-232>-<TCP/IP(МЭК104)>-скада. Наверно можно и для такого канала связи организовать синхронизацию, нужно поковыряться в NTP. Опять же, можно ли организовать NTP в рамках протокола МЭК-104? Такая картина сложилась: Намбэ ван! GPS - стоит $20, ++: точность 1 мкс (сигнал 1pps), зона покрытия - практически везде, есть функционально законченные модули. --: прием только НА ОТКРЫТОМ воздухе, в помещении нет приёма, ещё один не маловажный минус - это мерикосы. Для рыбалки и по грибы gps подойдет. А вот для серьёзных промышленных решений завязываться на gps не стоит. №2 DCF77 - стоит около 100 рублей. ++:дёшево, точность - вагон и маленькая тележка. из википедии "погрешность составляет меньше одной секунды в один миллион лет.", есть функционально законченные модули, работает на ДВ, т.е внутри помещения --: официально сигнал есть в радиусе 2000 км от Майнфлингина, Германия. Но за уралом я этот сигнал иногда получал. Если аппаратуру поставлять в центр, то покатит, а если за урал - то надо еще колдовать будет, Хотя это тоже не отечественная служба, но она мне кажется более надёжна чем GPS. Мерикосы как-то в югославии отключили gps. Могут в любое время и в рф отключить, а сигнал DCF77 врятли немцам будет смысл отключать. №3 RWM,RID, RTA и т.п. ++: Отечественный сигнал. Погрешность не более 5*10E-12 и 5*10E-11, Работают в диапазоне КВ и ДВ, передатчики по всей рф, --: Я не нашёл готового модуля №4 GSM --: Нужен оператор с таким сервисом, а это далеко не каждый, нужна регистрация и нужна абонентская плата. низкая точность. GSM модуль - порядка $100. Лучше уж через GSM/GPRS организовать NTP синхронизацию. Зона покрытия плохая. № 5 Сигналы точного времени радиостанций России и Маяк. --: Нет готового модуля, точность неизвестна, Сейчас уже на эти сигналы речь накладывают и люди жалуются, что нет синхронизации до 2-3 суток(хороший анализатор эту проблему решит. имхо), не факт что завтра эти сигналы будут в эфире. Это же радиовещательные(ширпотреб) станции, а не станции системы точного времени. ++: есть готовые решения В вики есть еще "Бета (служба времени)". Но про неё очень мало информации. Ну в общем теперь будем думать. -
Синхронизация часов реального времени
juvf ответил juvf тема в В помощь начинающему
Ну это само собой разумеется. А если нет? например по радиоканалу. Если ставить GSM для синхронизации, то нужна симка или нет? Если нужна, то это нужно подключаться к тарифу оператора со всеми вытекающими ежемесячными расходами. мысли вслух ... Давно было.... одна компания делала уличные часы. GPS был еще сырой. Они синхронизировали свои часы по сигналам точного времени передаваемыми по радио "Маяк". Они шли каждый час, 6 импульсов определённой частоты. начало 6-го сигнала соответствует 00 минут 00 секунд. Делался приемник на ДВ, настроенный на маяк. и городился алгоритм по выявлению начала 6-го сигнала. Также существует РАДИОСЛУЖБА СИГНАЛОВ ТОЧНОГО ВРЕМЕНИ которая изначально предназнач. для передачи и приема по расписанию сигналов точного времени с целью определения поправок суд. хронометров и проверки часов. Но я где-то видел, что типа это международная служба и она покрыла своим сигналом всю землю. Может есть готовые решения для синхронизации с маяком или этой службой? например 3-х ногая микросхемко, которая ловит маяк и выявляет начало 6-го импульса и генерирует импульс 00:00 (прерывание). ps Вспомнил, Ещё есть какая-то служба синхронизации времени, дома посмотрю. у меня домашняя метеостанция по ней синхронизируется. -
Синхронизация часов реального времени
juvf ответил juvf тема в В помощь начинающему
+5 Там, где связь с КП по TCP/IP, это - то что нужно. А вот про GSM ..... Возьму на заметку. Есть у нас GSM модем. Есть у него команда чтения и записи времени - часы.минуты.секунды, а вот мс нет. Не не смог в инете найти с какой точностью я получу время от модема? Зато нашел Наверно далеко не во всех городах и не все операторы предоставляют такую услугу. Или я что-то не так понимаю. Я так понял что в GSM-модеме есть внутренние часы, которые синхронизируются с оператором и с них можно читать время. Зависит ли это от оператора? На сколько они точны? Если симки не будет, но модем будет находится в зоне GSM, будут ли эти часы синхронизироваться? -
Синхронизация часов реального времени
juvf ответил juvf тема в В помощь начинающему
Относительно географического времени. Хотя не обязательно, Суть в том, что есть диспетчерский пункт (ДП), и много контролируемых пунктов (КП). На кп происходят события и регистрируются на дп. время доставки сообщения с кп на дп не фиксировано, может идти 100 мс,а может минуту. Но потом требуется на дп рассортировать все события в порядке их возникновения (наверно для разбора полётов). -
Синхронизация часов реального времени
juvf опубликовал тема в В помощь начинающему
Требуется регистрация событий на объекте с точностью до 10 мс. Первая мысль - это иметь на объекте RTC + GPS приемник для синхронизации. Какие ещё есть способы получения точного времени? -
Такой же вопрос интересует. Нужен трансформатор для W5100 без RJ-45. Чем руководствоваться при выборе трансформатора? Какой конкретно трансформатор, без rj45, подойдет для W5100?
-
Сергей Борщ Чем умничать, лучше бы толковое сказали что-нибудь. Может мы с разными процессорами пробуем? Вы с каким пробывали? Я пробовал c такой опцией, проект скомпелялся без ошибок, с выводом avr-c++ -mmcu=at90can128 -Wl,--section-start=.bootloader=0xf000 -Wl,-Map=interfaces.map main.o spi.o Display.o timer.o initialization.o interrupts.o crc.o connection.o modbus.o tcpip.o iso104.o MapModbus.o extRom.o arm150.o boot.o -o interfaces.elf Но моя функция разместилась не по адресу 0xf000. Разобрался в чём была моя проблема. Оказывается, по каждому адресу в проце лежит слово, линкеру нужно адрес указать байтовый. Т.е. 2*0xf000, и правильная опция будет -Wl,--section-start=.bootloader=0x1e000 p.s. )))) - ну это вообще на 5 балоф. Еще туда добавить "W - это дубль Вэ, а не две буквы V" и можно эти советы в тираж отдавать. Без обид ;). Я же эту опцию из пдф-ника скопировал в проект, а потом скопировал из проекта в форум. Видно же что там "-Wl". +1 Ну конечно, куда нам, любителям IDE до вас, до ГУРУ, пишущих код в vi и соберающих его из командной строки! Выяснил до конца в чём проблема из-за спортивного интереса. А на самом деле это ни к чему. Программист, пишущий в ИДЭ, не должен беспокоится о скриптах, параметрах линкера и компелятора, makefile-ах и т.п., а должен быть сконцентрирован на решении др. задач. Для того и нужна ИДЭ. опять :bb-offtopic: .... сколько раз зарекался ......
-
SysRq Спасибо!!! Проблема решена.
-
модераторы..... ну вы блин даёте!!! Тему переместили!!! Ну хоть как-то бы обосновали бы свои действия и на старом месте подсказали бы где искать мне мою тему. Да и Сергея я не понял, он мне отвечает так, как будь-то я действительно как чайник, спросил сколько бит в байте и что такое "напряжометр". А на самом деле проблема пахнет очередной багой в авр студио. Опять придется багрепорт писать. ((
-
Конечно надо. Но я не определял ни каких секций типа .data .text и .bootloader. Однако после линковки я получаю увидомление, что в этих секциях занато столько-то памяти. Может где-то avr-c++ берёт эти секции, ведь я указал во фьюзах размер загрузочного сектора и его размещение. По идее этого должно быть достаточно, чтоб ИДЕ всё остальное сделала сама. Вот я пытаюсь с этим разобраться. конечно обратил. я добавлял в "Для всего", потом для конкретного сишного файла опцию "-WI, --section-start=.bootloader=0xf000", и пробывал указать опцию линкеру "--section-start=.bootloader=0xf000", "-section-start=.bootloader=0xf000", "section-start=.bootloader=0xf000". Эффект один и тотже - "... overlaps ...". Пробывал по всякому. (( (блин, Ctrl+C на это компе не работает, не могу цитировать....) Что значит "скопировать скрипт линкера в проект" AVR Studio? И далее... наверно я не так спросил, или вы не так поняли.... я не хочу скопировать библиотечную функцию в секцию загрузчика. Я написал свой загрузчик (точнее скопировал готовый сишный код из примера), т.е. в вайле *.h объявил свою функцию, в *.c определил тело функции. Теперь мне нужно чтоб линкер разместил эту функцию по адресу 0xF000. Как это сделать?
-
Как разместить bootloader по определённому адресу?
juvf опубликовал тема в MCS51, AVR, PIC, STM8, 8bit
прескртптум: AVR Studio 4.17, WinAvr, C++, avr-c++ Есть функция-загрузчик. Её нужно поместить по адресу 0xf000. В мануале на avr-c++ написано как это сделать Но как это сделать в AVR Studio? если не указывать -Wl,--section-start=.bootloader=0xF000, то при линковке получаю ошибку c:/soft/winavr-20090313/bin/../lib/gcc/avr/4.3.2/../../../../avr/bin/ld.exe: section .bootloader [000072ea -> 0000742f] overlaps section .data [000072ea -> 0000744f] Пробовал переразместить секцию bootlooader в свойствах проекта на вкладке Costom options добавил опцию -Wl,--section-start=.bootloader=0xF000 но при линковке опять таже ошибка. Пробовал создать свою секцию и загрузчик разместить в неё - в результате при линковке таже ошибка. Как в AVR Studio разместить функцию по нужному адресу? Как задать адрес секции?