Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Как да разбера колко време отнема това?
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=5694
Страница 1 от 2

Автор:  kirchi [ Нед Апр 13, 2008 5:19 pm ]
Заглавие:  Как да разбера колко време отнема това?

GODONE = 1;
while(GODONE)
continue;

Става въпрос за мплаб и хайтеч при честота 20М. Самото преобразуване съм избрал да става за 1,6us, ама не знам проверката колко време отнема.

Автор:  ToHu [ Нед Апр 13, 2008 8:26 pm ]
Заглавие: 

ами .... струвами се вече че и хората които пишат на асемблер в MPLAB вече не разбират какво пишат ...
това изглежда така :
btfsc ...
goto $-1
та сам прецени колко време отнема .... добре е да погледнеш тези двете команди как се изпълняват, това го пише в PDF-а;

Автор:  i_dachev [ Пон Апр 14, 2008 9:02 am ]
Заглавие: 

Ползвай StopWatch на SIM дебъгера в MPLAB.
Така ще разбереш колко време ти отнема кода за конкретната честота.

Автор:  ToHu [ Пон Апр 14, 2008 1:12 pm ]
Заглавие: 

i_dachev написа:
Ползвай StopWatch на SIM дебъгера в MPLAB.
Така ще разбереш колко време ти отнема кода за конкретната честота.


И това е начин ... ама за две команди ако не знае колк ому е кода ... според мен ако не помниш на тоя процесор коя команда за колко с еизпълнява .. при условие че то има само няколко команди които са различни ..... ама айде....

Автор:  i_dachev [ Вто Апр 15, 2008 9:09 am ]
Заглавие: 

За асемблер съм съгласен но за C е добре да свикнеш да го ползваш StopWatchа.

Просто да си изградиш навик, защото хич не е ясно колко инструкции ще
ти компилира компилатора за даден код.

За конкретния пример има много малко варианти на компилация и може
и да си погледне дисасемблера и да си сметне.

Иначе съм много съгласен че трябва да се поназнайва за колко ти минава
една инструкция.

Аз съм имал такива главоблъсканици мисля си това тук толкова инструкции
толкова време. Тествам тествам и се оказва не точно колкото съм си мислил.
За това казвам че трябва нещо да свикнеш да го ползваш дори и да си 95%
сигурен, че може и без него в 99% случаи ще ти спести 100% главоболия :)

Автор:  relsys [ Чет Апр 17, 2008 11:29 pm ]
Заглавие: 

не четат тея младежи, ей не четат.... :)

Автор:  stanleyhacker [ Пет Апр 18, 2008 2:21 pm ]
Заглавие: 

btfsc ...
goto $-1

Отнема 3 цикъла, на 20МХц са по 200 нс - 600нс
Ако условието стане вярно от 2 до 4 цикъла, зависи кога се случи

Автор:  plameniv [ Съб Апр 19, 2008 2:42 am ]
Заглавие: 

stanleyhacker написа:
btfsc ...
goto $-1

Отнема 3 цикъла, на 20МХц са по 200 нс - 600нс
Ако условието стане вярно от 2 до 4 цикъла, зависи кога се случи

Правилния отговор е 3 цикъла в права (True) и 4 в обранта посока (False), зависимоста е от бита който проверяваш а не времето!
Това е защото когато имаш True се изпълнява инструкция NOP на мястото на GOTO , а NOP е инструкция от 1 цикъл !
За инструкция BTFSC , 0 = TRUE
За инструкция BTFSS , 1 = TRUE

Автор:  kirchi [ Съб Апр 19, 2008 10:44 am ]
Заглавие: 

Времето е точно 36us. Или поне осцилоскопа тъй рече.

Автор:  plameniv [ Съб Апр 19, 2008 5:05 pm ]
Заглавие:  Hm

kirchi написа:
Времето е точно 36us. Или поне осцилоскопа тъй рече.

И как така го засече на осцилоскопа не ми стана ясно. ?
Ако искаш да си сигурен в сметките най добре тази програма на С я дебъгни в ASM, повечето компилатори поддържат опция да си погледнеш какъв е във вид на ASM кода , на това място ще погледнеш какви инструкции има и сметката на калкулатора е най вярно !
20MHz/4 = 200нс за инструкция !

Автор:  kirchi [ Съб Апр 19, 2008 5:13 pm ]
Заглавие:  Re: Hm

plameniv написа:
kirchi написа:
Времето е точно 36us. Или поне осцилоскопа тъй рече.

И как така го засече на осцилоскопа не ми стана ясно. ?
Ако искаш да си сигурен в сметките най добре тази програма на С я дебъгни в ASM, повечето компилатори поддържат опция да си погледнеш какъв е във вид на ASM кода , на това място ще погледнеш какви инструкции има и сметката на калкулатора е най вярно !
20MHz/4 = 200нс за инструкция !


Опа 16 де.
Ми тъй.

GPIO0 = 0;

GODONE = 1;
while(GODONE)
continue;

GPIO0 = 1;

Автор:  plameniv [ Съб Апр 19, 2008 5:24 pm ]
Заглавие:  Re: Hm

kirchi написа:
plameniv написа:
kirchi написа:
Времето е точно 36us. Или поне осцилоскопа тъй рече.

И как така го засече на осцилоскопа не ми стана ясно. ?
Ако искаш да си сигурен в сметките най добре тази програма на С я дебъгни в ASM, повечето компилатори поддържат опция да си погледнеш какъв е във вид на ASM кода , на това място ще погледнеш какви инструкции има и сметката на калкулатора е най вярно !
20MHz/4 = 200нс за инструкция !


Опа 16 де.
Ми тъй.

GPIO0 = 0;

GODONE = 1;
while(GODONE)
continue;

GPIO0 = 1;

Нещо грешно мислиш , така осцилоскопа ще ти засече еднократен импулс което ме съмнява да го постигнеш така лесно това засичане!
Най добре добави тези 2 инструкции вътре в цикъла да се получи безкраен цикъл и да клати безкрайно пина тогава ще говорим пак!

Автор:  GTN [ Съб Апр 19, 2008 10:14 pm ]
Заглавие: 

Ами според мене си е напълно възможно да е за 36us. Все пак това са 3 инструкции, но цикъла не свършва преди да свърши преобразуването на АЦПто. А в datasheeta е казано как се смята, но това си е чиста теория, практиката може да се различава малко от теорията. Може честотата на генератора да не е точна, конфигурацията на АЦПто същото оказва влияние. Малко са вероятни хипотезите но... А да не би да се влиза в прекъсване?!?! Пробвай пак, ако ги забраниш. Нали АЦПто генерира прекъсване като приключи?

Автор:  plameniv [ Нед Апр 20, 2008 1:38 am ]
Заглавие:  Mda

GTN написа:
Ами според мене си е напълно възможно да е за 36us. Все пак това са 3 инструкции, но цикъла не свършва преди да свърши преобразуването на АЦПто. А в datasheeta е казано как се смята, но това си е чиста теория, практиката може да се различава малко от теорията. Може честотата на генератора да не е точна, конфигурацията на АЦПто същото оказва влияние. Малко са вероятни хипотезите но... А да не би да се влиза в прекъсване?!?! Пробвай пак, ако ги забраниш. Нали АЦПто генерира прекъсване като приключи?

Аз си мислех че ставаше въпрос за един обикновен Loop за колко време се изълнява. :)
Но действително АЦП-тата на контролера са бавни още повече че имат и капацитет на входа , така че е добре да се изчака вдигането на бита за готовност, но не се знае със сигурност колко ще отнеме това и е възможно всеки път да е различно, ако иска да е точно измерването за предпочитане е да се конфигурира на малко по бавна скорост иначе колкото по бързо го мъчиш да мери по грешни показания ще дава :!: :roll:

Автор:  ToHu [ Нед Апр 20, 2008 4:08 pm ]
Заглавие: 

Ами мен ако питаш на тоя въпрос не може да ти се отговори, остави колко са бавни АЦП-тата, те си имат прескалери, ние няма как да гадаем на каква честота ти работи АЦП-то за да ти кажем колко време отнема, а и времето е относително ...

Страница 1 от 2 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/