| Автор |
Съобщение |
kirchi
Ранг: Минаващ

Регистриран на: 03 Яну 2007
Мнения: 68
Местожителство: Димитровград
|
 Как да разбера колко време отнема това?
GODONE = 1;
while(GODONE)
continue;
Става въпрос за мплаб и хайтеч при честота 20М. Самото преобразуване съм избрал да става за 1,6us, ама не знам проверката колко време отнема.
|
| Нед Апр 13, 2008 4:19 pm |
|
 |
ToHu
Ранг: Форумен бог

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

Регистриран на: 16 Ное 2004
Мнения: 100
Местожителство: София
|
Ползвай StopWatch на SIM дебъгера в MPLAB.
Така ще разбереш колко време ти отнема кода за конкретната честота.
|
| Пон Апр 14, 2008 8:02 am |
|
 |
ToHu
Ранг: Форумен бог

Регистриран на: 26 Сеп 2004
Мнения: 4508
Местожителство: София
|
i_dachev написа:Ползвай StopWatch на SIM дебъгера в MPLAB.
Така ще разбереш колко време ти отнема кода за конкретната честота.
И това е начин ... ама за две команди ако не знае колк ому е кода ... според мен ако не помниш на тоя процесор коя команда за колко с еизпълнява .. при условие че то има само няколко команди които са различни ..... ама айде....
|
| Пон Апр 14, 2008 12:12 pm |
|
 |
i_dachev
Ранг: Новодошъл

Регистриран на: 16 Ное 2004
Мнения: 100
Местожителство: София
|
За асемблер съм съгласен но за C е добре да свикнеш да го ползваш StopWatchа.
Просто да си изградиш навик, защото хич не е ясно колко инструкции ще
ти компилира компилатора за даден код.
За конкретния пример има много малко варианти на компилация и може
и да си погледне дисасемблера и да си сметне.
Иначе съм много съгласен че трябва да се поназнайва за колко ти минава
една инструкция.
Аз съм имал такива главоблъсканици мисля си това тук толкова инструкции
толкова време. Тествам тествам и се оказва не точно колкото съм си мислил.
За това казвам че трябва нещо да свикнеш да го ползваш дори и да си 95%
сигурен, че може и без него в 99% случаи ще ти спести 100% главоболия
|
| Вто Апр 15, 2008 8:09 am |
|
 |
relsys
Ранг: Напреднал

Регистриран на: 25 Ное 2005
Мнения: 406
|
не четат тея младежи, ей не четат....
|
| Чет Апр 17, 2008 10:29 pm |
 |
 |
stanleyhacker
Ранг: Новодошъл

Регистриран на: 02 Дек 2004
Мнения: 140
|
btfsc ...
goto $-1
Отнема 3 цикъла, на 20МХц са по 200 нс - 600нс
Ако условието стане вярно от 2 до 4 цикъла, зависи кога се случи
|
| Пет Апр 18, 2008 1:21 pm |
|
 |
plameniv
Ранг: Форумен бог

Регистриран на: 10 Окт 2004
Мнения: 1452
|
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 1:42 am |
|
 |
kirchi
Ранг: Минаващ

Регистриран на: 03 Яну 2007
Мнения: 68
Местожителство: Димитровград
|
Времето е точно 36us. Или поне осцилоскопа тъй рече.
|
| Съб Апр 19, 2008 9:44 am |
|
 |
plameniv
Ранг: Форумен бог

Регистриран на: 10 Окт 2004
Мнения: 1452
|
 Hm
kirchi написа:Времето е точно 36us. Или поне осцилоскопа тъй рече.
И как така го засече на осцилоскопа не ми стана ясно. ?
Ако искаш да си сигурен в сметките най добре тази програма на С я дебъгни в ASM, повечето компилатори поддържат опция да си погледнеш какъв е във вид на ASM кода , на това място ще погледнеш какви инструкции има и сметката на калкулатора е най вярно !
20MHz/4 = 200нс за инструкция !
_________________ Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !
|
| Съб Апр 19, 2008 4:05 pm |
|
 |
kirchi
Ранг: Минаващ

Регистриран на: 03 Яну 2007
Мнения: 68
Местожителство: Димитровград
|
 Re: Hm
plameniv написа:kirchi написа:Времето е точно 36us. Или поне осцилоскопа тъй рече.
И как така го засече на осцилоскопа не ми стана ясно. ?
Ако искаш да си сигурен в сметките най добре тази програма на С я дебъгни в ASM, повечето компилатори поддържат опция да си погледнеш какъв е във вид на ASM кода , на това място ще погледнеш какви инструкции има и сметката на калкулатора е най вярно !
20MHz/4 = 200нс за инструкция !
Опа 16 де.
Ми тъй.
GPIO0 = 0;
GODONE = 1;
while(GODONE)
continue;
GPIO0 = 1;
|
| Съб Апр 19, 2008 4:13 pm |
|
 |
plameniv
Ранг: Форумен бог

Регистриран на: 10 Окт 2004
Мнения: 1452
|
 Re: Hm
kirchi написа:plameniv написа:kirchi написа:Времето е точно 36us. Или поне осцилоскопа тъй рече.
И как така го засече на осцилоскопа не ми стана ясно. ?
Ако искаш да си сигурен в сметките най добре тази програма на С я дебъгни в ASM, повечето компилатори поддържат опция да си погледнеш какъв е във вид на ASM кода , на това място ще погледнеш какви инструкции има и сметката на калкулатора е най вярно !
20MHz/4 = 200нс за инструкция !
Опа 16 де.
Ми тъй.
GPIO0 = 0;
GODONE = 1;
while(GODONE)
continue;
GPIO0 = 1;
Нещо грешно мислиш , така осцилоскопа ще ти засече еднократен импулс което ме съмнява да го постигнеш така лесно това засичане!
Най добре добави тези 2 инструкции вътре в цикъла да се получи безкраен цикъл и да клати безкрайно пина тогава ще говорим пак!
_________________ Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !
|
| Съб Апр 19, 2008 4:24 pm |
|
 |
GTN
Ранг: Ориентиран

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

Регистриран на: 10 Окт 2004
Мнения: 1452
|
 Mda
GTN написа:Ами според мене си е напълно възможно да е за 36us. Все пак това са 3 инструкции, но цикъла не свършва преди да свърши преобразуването на АЦПто. А в datasheeta е казано как се смята, но това си е чиста теория, практиката може да се различава малко от теорията. Може честотата на генератора да не е точна, конфигурацията на АЦПто същото оказва влияние. Малко са вероятни хипотезите но... А да не би да се влиза в прекъсване?!?! Пробвай пак, ако ги забраниш. Нали АЦПто генерира прекъсване като приключи?
Аз си мислех че ставаше въпрос за един обикновен Loop за колко време се изълнява.
Но действително АЦП-тата на контролера са бавни още повече че имат и капацитет на входа , така че е добре да се изчака вдигането на бита за готовност, но не се знае със сигурност колко ще отнеме това и е възможно всеки път да е различно, ако иска да е точно измерването за предпочитане е да се конфигурира на малко по бавна скорост иначе колкото по бързо го мъчиш да мери по грешни показания ще дава
_________________ Избийте баламите и тарикатите сами ще умрат!
Няма невъзможни работи - има много трудни работи!
----------------------------------------------------------------------------------
"Я в Москве с киркой уран найду, при такой повышенной зарплате" !
|
| Нед Апр 20, 2008 12:38 am |
|
 |
ToHu
Ранг: Форумен бог

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