| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| пак таймери :) http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=272 |
Страница 1 от 1 |
| Автор: | Реконструктор [ Вто Яну 04, 2005 10:19 am ] |
| Заглавие: | пак таймери :) |
Значи, вчера се замислих за следното: Таймерите в микроконтролера обикновено работят през някакъв делител от честотата на кварца.Делителя е едно малко таймерче, което инкрементира таймерния регистър. Когато записвам стойност в регистъра, гарантирано ли ми е, че малкото таймерче ще се нулира? Щото, ако например прескалера е нагласен на 1/64 от кварца, брояча е стигнал 63, аз запиша 0 в регистъра и в следващия такт на процесора вече ще имам едно. Което не е добре. |
|
| Автор: | bateAz [ Вто Яну 04, 2005 11:17 am ] |
| Заглавие: | |
Не знам, виж какво пише в .PDF Обикновено правилата на играта не са абсолютно еднакви за различните процесори. дори са различни |
|
| Автор: | ToHu [ Вто Яну 04, 2005 11:24 am ] |
| Заглавие: | |
Не не е гарантирано .... зависи от конкретния процесор, прочети си документацията какво пише за прескалера. Прескалера .. абе да .. може и таймер да го наречеш .... той си е делител, с T тригери, и ти избираш накой тригер си връзваш твоя брояч, който сам по себе си също е Т тригери, е зависи всъщност от брояча,синхронен, асинхронен и т.н., може да е с JK и т.н... това няма значение. Та когато записваш стойност в твоя брояч, няма никаква причина делителя да се нулира освен ако не са го предивидили, което едва ли са направили, освен ако нямаш специална за писане в таймера. Затова след акто разбереш, ще видиш колко инструкции ти трябват за самия запис и ще решиш каква стойност да зареждаш в тоя таймер .. м-у другото .. не знам дали си усетил, но в оня другия таймер, който брои през 10 us точноста ти е не по добра от 1 МЗР, което ще рече 10us, т.е. нищо не ти гарантира че ако искаш 100 us няма да получиш 110 .... |
|
| Автор: | Wise [ Вто Яну 04, 2005 11:50 am ] |
| Заглавие: | |
Обикновено презареждаш таймера след прекъсване от него, така че не би трябвало това да ти е проблем. |
|
| Автор: | ToHu [ Вто Яну 04, 2005 11:54 am ] |
| Заглавие: | |
е проблем му е по принцип .. така или иначе времето минава ... зависи колко му е прескалера и колко инструкции му отнема презареждането .. и кое му е по важно, първо да свърши нещо или първо да презареди .. ако трябва да го свърши ама съвсем точно, конкретно в тоя момент, по добре първо да го свърши и след това да презареди, ако не . обратното, и в зависимост от възможностите на процесора е различно, и таймера разбира се .... при пика ако си с таймер нула и го зареждш след обслужване на процес трябва да добавиш къмнего това което зареждаш, това е сбор на две 8 битови числа, но ако си с таймер 1 е на две 16 битови което отнема повече инструкции, освен всичко трябва и тея инструкции да си насмяташ колко са и дали няма през това време прескалера да се напълни и да имаш още един импулс .... |
|
| Автор: | rumen [ Вто Яну 04, 2005 2:44 pm ] |
| Заглавие: | |
Майката му е на асемблер и си броиш инструкциите без значение по какъв път се движи алгоритама времето да е едно и също. Всичко друго ще ти даде боза в изходните импулси. |
|
| Автор: | Реконструктор [ Вто Яну 04, 2005 3:11 pm ] |
| Заглавие: | |
Сега изтеглих документацията и я прегледах подробно. Оказва се, че има възможност прескалера да се ресетва, като запишеш 1 в един бит в един от контролните регистри. Лошото е, че 2 от таймерите (общо са 3) ползват един прескалер (макар и с различни настройки) и трябва да се съобразявам с тоя факт. |
|
| Автор: | ToHu [ Вто Яну 04, 2005 4:18 pm ] |
| Заглавие: | |
какво правят два от таймерите ? .. позлват един прескалер едновременно .... или прескалера може да се превключва м-у тях .. я виж точно това .. че на мен не ми звучи идейно да позлват общ прескалер ....... |
|
| Автор: | Wise [ Вто Яну 04, 2005 5:40 pm ] |
| Заглавие: | |
Какъв ти е процесора? При AVR има по-големи възможности на таймерите, а при PIC ми се е налагало да броя инструкции и да добавям NOP-ове, за да изравня по време всички разклонения. С прекъсване ли работиш или кьориш флагчето? |
|
| Автор: | Реконструктор [ Вто Яну 04, 2005 5:40 pm ] | |||||||||
| Заглавие: | ||||||||||
Използват един прескалер едновременно, но тактуващия сигнал се взима от различни места.
|
||||||||||
| Автор: | ToHu [ Вто Яну 04, 2005 6:48 pm ] |
| Заглавие: | |
Хммммм тц .. мен нещо не ме кефи, по готино всеки да си има отделен .. ууууу почвам да се отвращавам от атмел .. що така са го направили ... ами ако ползваш различни източници .... гадничко ... |
|
| Автор: | Реконструктор [ Вто Яну 04, 2005 6:59 pm ] |
| Заглавие: | |
Споко бе, има и още един таймер, който е на отделен прескалер. |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|