| Автор |
Съобщение |
|
kirchi
Ранг: Минаващ
Регистриран на: Сря Яну 03, 2007 8:52 pm Мнения: 89 Местоположение: Димитровград
|
 Как да разбера колко време отнема това?
GODONE = 1;
while(GODONE)
continue;
Става въпрос за мплаб и хайтеч при честота 20М. Самото преобразуване съм избрал да става за 1,6us, ама не знам проверката колко време отнема.
|
| Нед Апр 13, 2008 5:19 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
ами .... струвами се вече че и хората които пишат на асемблер в MPLAB вече не разбират какво пишат ...
това изглежда така :
btfsc ...
goto $-1
та сам прецени колко време отнема .... добре е да погледнеш тези двете команди как се изпълняват, това го пише в PDF-а;
|
| Нед Апр 13, 2008 8:26 pm |
|
 |
|
i_dachev
Ранг: Новодошъл
Регистриран на: Вто Ное 16, 2004 3:29 pm Мнения: 108 Местоположение: София
|
Ползвай StopWatch на SIM дебъгера в MPLAB.
Така ще разбереш колко време ти отнема кода за конкретната честота.
|
| Пон Апр 14, 2008 9:02 am |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
И това е начин ... ама за две команди ако не знае колк ому е кода ... според мен ако не помниш на тоя процесор коя команда за колко с еизпълнява .. при условие че то има само няколко команди които са различни ..... ама айде....
|
| Пон Апр 14, 2008 1:12 pm |
|
 |
|
i_dachev
Ранг: Новодошъл
Регистриран на: Вто Ное 16, 2004 3:29 pm Мнения: 108 Местоположение: София
|
За асемблер съм съгласен но за C е добре да свикнеш да го ползваш StopWatchа.
Просто да си изградиш навик, защото хич не е ясно колко инструкции ще
ти компилира компилатора за даден код.
За конкретния пример има много малко варианти на компилация и може
и да си погледне дисасемблера и да си сметне.
Иначе съм много съгласен че трябва да се поназнайва за колко ти минава
една инструкция.
Аз съм имал такива главоблъсканици мисля си това тук толкова инструкции
толкова време. Тествам тествам и се оказва не точно колкото съм си мислил.
За това казвам че трябва нещо да свикнеш да го ползваш дори и да си 95%
сигурен, че може и без него в 99% случаи ще ти спести 100% главоболия 
|
| Вто Апр 15, 2008 9:09 am |
|
 |
|
relsys
Ранг: Форумен бог
Регистриран на: Пет Ное 25, 2005 11:41 am Мнения: 1680
|
не четат тея младежи, ей не четат.... 
|
| Чет Апр 17, 2008 11:29 pm |
|
 |
|
stanleyhacker
Ранг: Новодошъл
Регистриран на: Чет Дек 02, 2004 7:22 pm Мнения: 140
|
btfsc ...
goto $-1
Отнема 3 цикъла, на 20МХц са по 200 нс - 600нс
Ако условието стане вярно от 2 до 4 цикъла, зависи кога се случи
|
| Пет Апр 18, 2008 2:21 pm |
|
 |
|
plameniv
Ранг: Форумен бог
Регистриран на: Нед Окт 10, 2004 9:55 am Мнения: 1718
|
Правилния отговор е 3 цикъла в права (True) и 4 в обранта посока (False), зависимоста е от бита който проверяваш а не времето!
Това е защото когато имаш True се изпълнява инструкция NOP на мястото на GOTO , а NOP е инструкция от 1 цикъл !
За инструкция BTFSC , 0 = TRUE
За инструкция BTFSS , 1 = TRUE
_________________ Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !
|
| Съб Апр 19, 2008 2:42 am |
|
 |
|
kirchi
Ранг: Минаващ
Регистриран на: Сря Яну 03, 2007 8:52 pm Мнения: 89 Местоположение: Димитровград
|
Времето е точно 36us. Или поне осцилоскопа тъй рече.
|
| Съб Апр 19, 2008 10:44 am |
|
 |
|
plameniv
Ранг: Форумен бог
Регистриран на: Нед Окт 10, 2004 9:55 am Мнения: 1718
|
 Hm
И как така го засече на осцилоскопа не ми стана ясно. ?
Ако искаш да си сигурен в сметките най добре тази програма на С я дебъгни в ASM, повечето компилатори поддържат опция да си погледнеш какъв е във вид на ASM кода , на това място ще погледнеш какви инструкции има и сметката на калкулатора е най вярно !
20MHz/4 = 200нс за инструкция !
_________________ Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !
|
| Съб Апр 19, 2008 5:05 pm |
|
 |
|
kirchi
Ранг: Минаващ
Регистриран на: Сря Яну 03, 2007 8:52 pm Мнения: 89 Местоположение: Димитровград
|
 Re: Hm
Опа 16 де.
Ми тъй.
GPIO0 = 0;
GODONE = 1;
while(GODONE)
continue;
GPIO0 = 1;
|
| Съб Апр 19, 2008 5:13 pm |
|
 |
|
plameniv
Ранг: Форумен бог
Регистриран на: Нед Окт 10, 2004 9:55 am Мнения: 1718
|
 Re: Hm
 |  |  |  | kirchi написа: Опа 16 де. Ми тъй. GPIO0 = 0; GODONE = 1; while(GODONE) continue; GPIO0 = 1; |  |  |  |  |
Нещо грешно мислиш , така осцилоскопа ще ти засече еднократен импулс което ме съмнява да го постигнеш така лесно това засичане!
Най добре добави тези 2 инструкции вътре в цикъла да се получи безкраен цикъл и да клати безкрайно пина тогава ще говорим пак!
_________________ Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !
|
| Съб Апр 19, 2008 5:24 pm |
|
 |
|
GTN
Ранг: Популярен
Регистриран на: Пет Яну 26, 2007 5:05 pm Мнения: 310 Местоположение: из България
|
Ами според мене си е напълно възможно да е за 36us. Все пак това са 3 инструкции, но цикъла не свършва преди да свърши преобразуването на АЦПто. А в datasheeta е казано как се смята, но това си е чиста теория, практиката може да се различава малко от теорията. Може честотата на генератора да не е точна, конфигурацията на АЦПто същото оказва влияние. Малко са вероятни хипотезите но... А да не би да се влиза в прекъсване?!?! Пробвай пак, ако ги забраниш. Нали АЦПто генерира прекъсване като приключи?
|
| Съб Апр 19, 2008 10:14 pm |
|
 |
|
plameniv
Ранг: Форумен бог
Регистриран на: Нед Окт 10, 2004 9:55 am Мнения: 1718
|
 Mda
Аз си мислех че ставаше въпрос за един обикновен Loop за колко време се изълнява.
Но действително АЦП-тата на контролера са бавни още повече че имат и капацитет на входа , така че е добре да се изчака вдигането на бита за готовност, но не се знае със сигурност колко ще отнеме това и е възможно всеки път да е различно, ако иска да е точно измерването за предпочитане е да се конфигурира на малко по бавна скорост иначе колкото по бързо го мъчиш да мери по грешни показания ще дава 
_________________ Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !
|
| Нед Апр 20, 2008 1:38 am |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
Ами мен ако питаш на тоя въпрос не може да ти се отговори, остави колко са бавни АЦП-тата, те си имат прескалери, ние няма как да гадаем на каква честота ти работи АЦП-то за да ти кажем колко време отнема, а и времето е относително ...
|
| Нед Апр 20, 2008 4:08 pm |
|
|