| Микроконтролери и електроника 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 [ Вто Апр 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 ] | |||||||||
| Заглавие: | ||||||||||
Правилния отговор е 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 | |||||||||
И как така го засече на осцилоскопа не ми стана ясно. ? Ако искаш да си сигурен в сметките най добре тази програма на С я дебъгни в ASM, повечето компилатори поддържат опция да си погледнеш какъв е във вид на ASM кода , на това място ще погледнеш какви инструкции има и сметката на калкулатора е най вярно ! 20MHz/4 = 200нс за инструкция ! |
||||||||||
| Автор: | kirchi [ Съб Апр 19, 2008 5:13 pm ] | ||||||||||||||||||
| Заглавие: | Re: Hm | ||||||||||||||||||
Опа 16 де. Ми тъй. GPIO0 = 0; GODONE = 1; while(GODONE) continue; GPIO0 = 1; |
|||||||||||||||||||
| Автор: | plameniv [ Съб Апр 19, 2008 5:24 pm ] | |||||||||||||||||||||||||||
| Заглавие: | Re: Hm | |||||||||||||||||||||||||||
Нещо грешно мислиш , така осцилоскопа ще ти засече еднократен импулс което ме съмнява да го постигнеш така лесно това засичане! Най добре добави тези 2 инструкции вътре в цикъла да се получи безкраен цикъл и да клати безкрайно пина тогава ще говорим пак! |
||||||||||||||||||||||||||||
| Автор: | GTN [ Съб Апр 19, 2008 10:14 pm ] |
| Заглавие: | |
Ами според мене си е напълно възможно да е за 36us. Все пак това са 3 инструкции, но цикъла не свършва преди да свърши преобразуването на АЦПто. А в datasheeta е казано как се смята, но това си е чиста теория, практиката може да се различава малко от теорията. Може честотата на генератора да не е точна, конфигурацията на АЦПто същото оказва влияние. Малко са вероятни хипотезите но... А да не би да се влиза в прекъсване?!?! Пробвай пак, ако ги забраниш. Нали АЦПто генерира прекъсване като приключи? |
|
| Автор: | plameniv [ Нед Апр 20, 2008 1:38 am ] | |||||||||
| Заглавие: | Mda | |||||||||
Аз си мислех че ставаше въпрос за един обикновен Loop за колко време се изълнява. Но действително АЦП-тата на контролера са бавни още повече че имат и капацитет на входа , така че е добре да се изчака вдигането на бита за готовност, но не се знае със сигурност колко ще отнеме това и е възможно всеки път да е различно, ако иска да е точно измерването за предпочитане е да се конфигурира на малко по бавна скорост иначе колкото по бързо го мъчиш да мери по грешни показания ще дава |
||||||||||
| Автор: | ToHu [ Нед Апр 20, 2008 4:08 pm ] |
| Заглавие: | |
Ами мен ако питаш на тоя въпрос не може да ти се отговори, остави колко са бавни АЦП-тата, те си имат прескалери, ние няма как да гадаем на каква честота ти работи АЦП-то за да ти кажем колко време отнема, а и времето е относително ... |
|
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|