| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Настройка на таймери http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=17250 |
Страница 1 от 2 |
| Автор: | syscop [ Сря Апр 22, 2020 8:18 am ] |
| Заглавие: | Настройка на таймери |
Трябва ми "точен" интервал от време. Направил съм таймер, който щрака на необходимото време, но има малка разлика в това, което съм задал и това, което трябва да е. Става дума за 2-3us при интервал 10ms, логично е прекъсвания, вход във функцията за обработка и т.н. В конкретния случай не много, но може да се наложи да се намали времето таймера до 100us. Какъв е правилния начин да го настроя така, че винаги първата инструкция/ред след входа в прекъсването да се изпълнява точно навреме? След това мога да измеря останала част от кода за колко време се изпълнява и да коригирам времето. |
|
| Автор: | Zdrav [ Сря Апр 22, 2020 9:51 am ] | |||||||||
| Заглавие: | Re: Настройка на таймери | |||||||||
Предполагам някаква софтуерна имплементация (дори и да има хардуерен таймер като времева база). С този таймер се опитваш да докараш периодични "софтуерни" събития с минимален джитер или таймера се стартира по някакво събитие и искаш да получиш "софтуерното" събитие след точно определен интервал с гарантирано минимално отклонение? Но ако ще дялкаш времето инструкция по инструкция, от какъв зор? МЦУ-то няма сободен или досттъчно ресурс или на теб не ти стига вътъка? |
||||||||||
| Автор: | syscop [ Сря Апр 22, 2020 10:16 am ] |
| Заглавие: | Re: Настройка на таймери |
Моя грешка - "железен" е таймера. |
|
| Автор: | ToHu [ Сря Апр 22, 2020 10:26 am ] |
| Заглавие: | Re: Настройка на таймери |
Това повече зависи от желязото, какъв е контролера? |
|
| Автор: | syscop [ Сря Апр 22, 2020 10:43 am ] |
| Заглавие: | Re: Настройка на таймери |
MCU-то е lpc54605, но въпросът е принципен. Мога да мърдам пин и да гледам каква е честотата, респективно периода. Искам да разбера колко е времето между щракването на таймера и мръдването на пина и дали това време е постоянно. |
|
| Автор: | TheWizard [ Сря Апр 22, 2020 10:48 am ] |
| Заглавие: | Re: Настройка на таймери |
ако "заключиш" веднага прекъсванията ще зависи от оптимизацията на фунцията |
|
| Автор: | Zdrav [ Сря Апр 22, 2020 10:56 am ] | |||||||||
| Заглавие: | Re: Настройка на таймери | |||||||||
Понеже говориш и за прекъсвания, явно "мъдаш" пина с някакъв код. Щото ако задачата е мърдане на пина само, може и изцяло хардуерно(без намесата на ядрото и код някакъв) да го докараш с това МЦУ. Пина само за измерванията ли го "мърдаш"? |
||||||||||
| Автор: | syscop [ Сря Апр 22, 2020 11:02 am ] |
| Заглавие: | Re: Настройка на таймери |
Само за измерване. |
|
| Автор: | ToHu [ Сря Апр 22, 2020 11:10 am ] |
| Заглавие: | Re: Настройка на таймери |
Принципно пак зависи от контролера, ако имаш отделни вектори на прекъсване трябва да си сигурен че този е с най-голям приоритет, и/или другите са забранени докато обработва този вектор, зависи как са реализирани прекъсванията. Ако имаш един вектор за всички както е в малките пликове, трябва да си сигурен че първо проверяваш този флаг. Отделно трябва да си сигурен какво прави компилатора при прекъсване, т.е.какъв код има още извън твоя, дали там няма нещо което да създава неопределеност. Най вече ако мериш подхода е софтуерен, ако ти дава прекъсване на определена стойност няма голямо значение кога ще влезеш, достатъчно е да се офсетнеш с текущото му състояние. Ако това не те устройва може да помислиш как да използваш хардуерните ресурси за да решиш задачата. С тоя контролер не съм запознат и не мога да ти кажа как би могло да стане, трябва да се прочете малко. |
|
| Автор: | Zdrav [ Сря Апр 22, 2020 11:43 am ] | |||||||||||||||||||||||||||
| Заглавие: | Re: Настройка на таймери | |||||||||||||||||||||||||||
Не ми се задълбава. В общи линии, това което ToHu казва е така. Малко по-конкретно:
И директно от извора: https://community.arm.com/developer/ip- ... processors
... |
||||||||||||||||||||||||||||
| Автор: | syscop [ Сря Апр 22, 2020 12:02 pm ] |
| Заглавие: | Re: Настройка на таймери |
Май намерих някакво решение. Изхода на таймера, който ползвам може да се "закара" до входа на друг таймер вътрешно |
|
| Автор: | ToHu [ Сря Апр 22, 2020 12:03 pm ] |
| Заглавие: | Re: Настройка на таймери |
аз не разбрах точно каква задача решаваш, ако споделиш може да ни хрумне нещо. |
|
| Автор: | syscop [ Сря Апр 22, 2020 12:07 pm ] |
| Заглавие: | Re: Настройка на таймери |
Трябва да имам точен момент на задействане на таймера в абсолютно време. Сега го имам плюс "нещо". Искам да определя колко е това "нещо" и дали е постоянно. |
|
| Автор: | ToHu [ Сря Апр 22, 2020 12:19 pm ] |
| Заглавие: | Re: Настройка на таймери |
Вярно че не съм спал много ама пак не схванах Съвсем друг е въпроса ако като казваш да знаеш, имаш в предвид че точно в този момент трябва да направиш нещо друго, да речем ако правиш софтуерен PWM и по прекъсване инкрементваш брояча на PWM /което не виждам много смисъл да е така, но да предположим че е така реализирано/ тогава вече ако не го правиш точно на време ще ти се появи джитер в коефициента на запълване, а и в честотата, и ако е такъв случая и искаш да елиминираш нещо такова ще трябва да търсиш хардуерно решение при условие че времето за изпълнение на кода ти е в някакви мин/мах граници от които не можеш да излезеш. |
|
| Автор: | slav4o.com [ Чет Апр 23, 2020 2:01 am ] |
| Заглавие: | Re: Настройка на таймери |
Ами ако е на един вектор и да е с най-голямият приоритет, ако прекъсването дойде докато се изпълнява нещо друго с по-нисък приоритет, трябва да влезе пак в прекъсване, но в обичайната ситуация когато е в прекъсване не може да се влиза повторно. Трябва да се промени това. Иначе другият вариант е на новите пико-ве има прекъсвания с нисък и висок приоритет. И тогава да се сложи на висок приоритет. |
|
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|