Отговори на тема  [ 17 мнения ]  Отиди на страница 1, 2  Следваща
Как да разбера колко време отнема това? 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Яну 03, 2007 8:52 pm
Мнения: 89
Местоположение: Димитровград
Мнение Как да разбера колко време отнема това?
GODONE = 1;
while(GODONE)
continue;

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


Нед Апр 13, 2008 5:19 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение 
ами .... струвами се вече че и хората които пишат на асемблер в MPLAB вече не разбират какво пишат ...
това изглежда така :
btfsc ...
goto $-1
та сам прецени колко време отнема .... добре е да погледнеш тези двете команди как се изпълняват, това го пише в PDF-а;


Нед Апр 13, 2008 8:26 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Вто Ное 16, 2004 3:29 pm
Мнения: 108
Местоположение: София
Мнение 
Ползвай StopWatch на SIM дебъгера в MPLAB.
Така ще разбереш колко време ти отнема кода за конкретната честота.


Пон Апр 14, 2008 9:02 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение 
i_dachev написа:
Ползвай StopWatch на SIM дебъгера в MPLAB.
Така ще разбереш колко време ти отнема кода за конкретната честота.


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


Пон Апр 14, 2008 1:12 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Вто Ное 16, 2004 3:29 pm
Мнения: 108
Местоположение: София
Мнение 
За асемблер съм съгласен но за C е добре да свикнеш да го ползваш StopWatchа.

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

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

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

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


Вто Апр 15, 2008 9:09 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение 
не четат тея младежи, ей не четат.... :)


Чет Апр 17, 2008 11:29 pm
Профил ICQ WWW
Ранг: Новодошъл
Ранг: Новодошъл
Аватар

Регистриран на: Чет Дек 02, 2004 7:22 pm
Мнения: 140
Мнение 
btfsc ...
goto $-1

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


Пет Апр 18, 2008 2:21 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Окт 10, 2004 9:55 am
Мнения: 1718
Мнение 
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

_________________
Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !


Съб Апр 19, 2008 2:42 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Яну 03, 2007 8:52 pm
Мнения: 89
Местоположение: Димитровград
Мнение 
Времето е точно 36us. Или поне осцилоскопа тъй рече.


Съб Апр 19, 2008 10:44 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Окт 10, 2004 9:55 am
Мнения: 1718
Мнение Hm
kirchi написа:
Времето е точно 36us. Или поне осцилоскопа тъй рече.

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

_________________
Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !


Съб Апр 19, 2008 5:05 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Сря Яну 03, 2007 8:52 pm
Мнения: 89
Местоположение: Димитровград
Мнение Re: Hm
plameniv написа:
kirchi написа:
Времето е точно 36us. Или поне осцилоскопа тъй рече.

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


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

GPIO0 = 0;

GODONE = 1;
while(GODONE)
continue;

GPIO0 = 1;


Съб Апр 19, 2008 5:13 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Окт 10, 2004 9:55 am
Мнения: 1718
Мнение Re: Hm
kirchi написа:
plameniv написа:
kirchi написа:
Времето е точно 36us. Или поне осцилоскопа тъй рече.

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


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

GPIO0 = 0;

GODONE = 1;
while(GODONE)
continue;

GPIO0 = 1;

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

_________________
Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !


Съб Апр 19, 2008 5:24 pm
Профил
Ранг: Популярен
Ранг: Популярен
Аватар

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


Съб Апр 19, 2008 10:14 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

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

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

_________________
Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !


Нед Апр 20, 2008 1:38 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение 
Ами мен ако питаш на тоя въпрос не може да ти се отговори, остави колко са бавни АЦП-тата, те си имат прескалери, ние няма как да гадаем на каква честота ти работи АЦП-то за да ти кажем колко време отнема, а и времето е относително ...


Нед Апр 20, 2008 4:08 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 17 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни