| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Молба за тест на PIC http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=14539 |
Страница 1 от 4 |
| Автор: | DanielDimov [ Нед Май 01, 2016 1:19 pm ] | |||||||||
| Заглавие: | Молба за тест на PIC | |||||||||
Направил съм един метод за изчисляване на разстоянието м-у две точки и искам да разбра за колко такта приблизително се изпълнява на различни процесори. Метода е много по-добър от всичко до момента защото е прост, с фиксирано време за изпълнение и дава точност в рамките на ±0.005% от истинската дължина на геодезичната линия! Само за сравнение - метода който в момента се използва масово (FAI sphere) дава точност ±0.5%. Най-точния метод (Vincenty) дава геодезична точност (под 1 мм), но е итеративен и с неясно време за изпълнение. До тук съм го тествал на Cotrex-M3 и Cortex-M4 резултата е съответно около 35'000 и 1'900 такта (M4-ката има FPU Ето кода:
|
||||||||||
| Автор: | DanielDimov [ Нед Май 01, 2016 1:22 pm ] |
| Заглавие: | Re: Молба за тест на PIC |
Това което искам да знам в крайна сметка е на какъв точно процесор е направен теста, на каква честота, колко броя викания на функцията за колко секунди са се изпълнили. Благодаря предварително! |
|
| Автор: | Cekins [ Нед Май 01, 2016 4:53 pm ] |
| Заглавие: | Re: Молба за тест на PIC |
За кой да е пик можеш спокойно да го пуснеш през симулатор на MPLAB. Ще ти даде всички отговори които търсиш. |
|
| Автор: | DanielDimov [ Пон Май 02, 2016 10:22 am ] |
| Заглавие: | Re: Молба за тест на PIC |
Трябва ми резултат от истински тест. |
|
| Автор: | miro_atc [ Пон Май 02, 2016 3:57 pm ] | |||||||||
| Заглавие: | Re: Молба за тест на PIC | |||||||||
един съвет - тествай и с различни компилатори. А пък специално под GCC имай предвид че математиките не се правят от самия компилатор а от библиотечни функции, което пък зависи от това кой как е компилирал тулчейна. Ягарто примерно ползваше newlib и то портнато с краката. За float не съм гледал, ама за 64-bit long повечето функции липсват и директно се линкват абстрактните дефаулт функции дето не използват нищо повече от събиране/изваждане. Така 64-бит деление вместо да го сведе до 32-бит за което ядрото има инструкции го свежда до стандарния побитов цикъл с изваждане. Тоя проблем с GCC и математиките може да го има и с другите архитектури, макар че не помня дали беше newlib или clib/mlib но имаше приличен порт MIPS, т.е. евентуално PIC32 може и да е по-добре. |
||||||||||
| Автор: | DanielDimov [ Пон Май 02, 2016 5:11 pm ] |
| Заглавие: | Re: Молба за тест на PIC |
На кортексите компилатора е стандартния който идва с LPCXpresso (в момента е GCC 4.9.3) Въобще ме интересува със стандартните средства, всички опции по дефолт и без да си дава човек никакъв зор да оптимизира за скорост какво се постига... |
|
| Автор: | palavrov [ Пон Май 02, 2016 6:51 pm ] | |||||||||
| Заглавие: | Re: Молба за тест на PIC | |||||||||
Малко бележки по питането и коментарите ти до тук, надявам се да не го приемеш като заяждане а като дружески коментар: - Имай в предвид, че понякога разликата в бързината със и без оптимизации може да е драстична. Отделно има конструкции на C които се компилират/оптмизират различно според архитектурата което също има голямо значение. - Не се вързвай на приказки от рода на "premature optimization is the root of all evil", това важи за опитни програмисти които са наясно колко е бърз и как ще се оптимизира кода който пишат. За останалите това правило не важи и трябва първо да им стане ясно компилатора кога, какво и защо прави преди да кажат, че не ги интересува. Това по принцип го казвам де, ти може и да си наясно с тези неща. - Кода който си дал не изчислява нито време нито тактове. Винаги печата броя на итерациите който е един и същ. Т.е. за да ти отговори някой прецизно на въпроса трябва да положи доста повече усилия от това да компилира и да стартира. - Имаш "magic constant" 568. Дори и за тест не се прави така. По добре го направи масив с неизвестна големина и после му вземи размера със sizeof(array)/sizeof(*array). Отделно по добре да го направиш масив от структури с 4 елемента в тях или двуизмерен масив array[][4] = { { 1,2,3,4}, {5,6,7,8} ... }; - тогава sizeof на масива е малко дивотия, но пък е интересно предизвикателство. Може да ти се струва като безмислено заяждане, но точно това говори най-много колко си подреден/мърляв като програмист. - Съмнявам се да имаш някаква полза като просто някой ти каже едни цифри. Какво ще научиш от тях? Коя архитектура е по добра от друга ли? Ще промениш ли нещо по алгоритъма като видиш тези цифри? Т.е. ако няма да правиш промяна цялото упражнение е губене на твоето и на хората които евентуално биха ти помогнали време. |
||||||||||
| Автор: | DanielDimov [ Пон Май 02, 2016 8:26 pm ] |
| Заглавие: | Re: Молба за тест на PIC |
За масива си прав - по-добре е да се взима дължината и да се раздели на 4. За времето - най-простото което работи при мен е следното: аз ползвам HTerm за да чета трейса на контролера, а той запомня времето в което е получен всеки един байт по серийния канал. Като видя разликата във времената на съобщението преди сметките и съобщението след тях - знам колко време е отнело. Става и със светване и угасване на светодиод. |
|
| Автор: | palavrov [ Пон Май 02, 2016 9:41 pm ] |
| Заглавие: | Re: Молба за тест на PIC |
Клатенето на GPIO си ми е любимия подход за мерене на време. Един лог.анализатор и мериш колко е времето между двата фронта. Преди време ми трябваше да меря разстояние на GPS координати спрямо някакви други GPS координати - като имаш в предвид, че при тях прецизноста е няколко метра да мериш с прецизност милиметри не печелиш нищо. После работих при едни юнаци които си правеха техен супер прецизен GPS приемник при който прецизноста беше 2-3 см. Т.е. масовия пазар за мерене на геодезични разстояние едва ли ще се впечатли от по голяма прецизност, по скоро интереса ще е академичен. Но ти свалям шапка щом си успял да го подобриш |
|
| Автор: | DanielDimov [ Пон Май 02, 2016 10:28 pm ] |
| Заглавие: | Re: Молба за тест на PIC |
Само че не всеки има анализатор/осцилоскоп, а часовник на телефона си всеки има. Като се направи теста няколко стотин хиляди пъти - се получава общо време подходящо за мерене на ръка... Приложението което ще има метода е за измерване на полети. Примерно излетял си от място с едни координати и си кацнал на място с други координати. Колко разстояние си прелетял по права линия?!? Този въпрос е безсмислен за малки разстояния ( < 100 м ) - малките разстояния не се мерят с GPS а с рулетки или с лазери ако трябва да е точно. Също така е безсмислен за много големи разстояния ( > 1000 км ) защото такива полети няма. Затова тестовите ми данни са произволни отмествания от една точка до ±3 градуса (сумарно 6 градуса), което при екватора прави най-много около 900 км линия. Грешката ми се искаше в най-лошите случаи да не надвишава 100 метра и мисля, че я постигнах. |
|
| Автор: | dan [ Пон Май 02, 2016 10:38 pm ] | |||||||||
| Заглавие: | Re: Молба за тест на PIC | |||||||||
не съм чел писаното нагоре, но: GPS за повишена точност няма ли нужда от "точните" кодове за дешифриране, или аз съм проспал нещо последните 3-4 години? А в геодезията мисля, че се използват "фазови" методи при различни честоти. не знам тук такъв ли е случая... |
||||||||||
| Автор: | DanielDimov [ Вто Май 03, 2016 12:09 am ] |
| Заглавие: | Re: Молба за тест на PIC |
Темата е за изчисляване на разстоянието между две позиции. Получаването на точна позиция е съвсем друга тема (също доста интересна). Ние за сега сме приели, че точността на съвременните масови приемници (20 - 30 м) ни устройва. |
|
| Автор: | palavrov [ Вто Май 03, 2016 12:43 am ] |
| Заглавие: | Re: Молба за тест на PIC |
Няма да спамя повече - само един кратък отговор за dan. От известно време прецизно позициониране вече може да се прави и без достъп до военните кодове. Доколкото знам е доста математика, отнема време да се стигне до прецизност няколко сантиметра, приемниците май трябва да са постоянно онлайн за да получават данни какво е отклонението на сателитите - те не са заковани в космоса ами се мандахерцат +- няколко метра - май във форма на осморки или нещо такова. Нямах достъп до сорсовете и формулите които ползваха в тази фирма, така че каквото знам е от интернет и разни познати които са се интересували. Мисля, че някъде имаше читаво описание как се постига тази точност но минаха няколко години от тогава и едва ли ще успея да го намеря. А за точността на масовите GPS - по добре е от 20-30м - по скоро е 5-6. С триангулация на силата на сигнала на GSM клетките прецизноста е 30-40-50м. Всички цифри са ми по смътни спомени, може и да бъркам. |
|
| Автор: | DanielDimov [ Вто Май 03, 2016 1:20 am ] |
| Заглавие: | Re: Молба за тест на PIC |
Това, че точността била 5 - 6 метра е собствената оценка на приемника според информацията с която той разполага. Действителността не е толкова розова. Правих преди време тестов полет с един "raw" GPS и няколко обикновени и резултатите бяха доста изненадващи. Утре мога да ви покажа какви неща излязоха от този експеримент ако ви е интересно. |
|
| Страница 1 от 4 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|