Микроконтролери и електроника
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 Обикновено правилата на играта не са абсолютно еднакви за различните процесори. дори са различни :cry:

Автор:  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 ]
Заглавие: 

Използват един прескалер едновременно, но тактуващия сигнал се взима от различни места. :)

Цитат:
The prescaler is free running, i.e., operates independently of the clock select logic of the
Timer/Counter, and it is shared by Timer/Counter1 and Timer/Counter0. Since the prescaler
is not affected by the Timer/Counter’s clock select, the state of the prescaler will
have implications for situations where a prescaled clock is used. One example of prescaling
artifacts occurs when the timer is enabled and clocked by the prescaler (6 >
CSn2:0 > 1). The number of system clock cycles from when the timer is enabled to the
first count occurs can be from 1 to N+1 system clock cycles, where N equals the prescaler
divisor (8, 64, 256, or 1024).
It is possible to use the Prescaler Reset for synchronizing the Timer/Counter to program
execution. However, care must be taken if the other Timer/Counter that shares the
same prescaler also uses prescaling. A prescaler reset will affect the prescaler period
for all Timer/Counters it is connected to.

Автор:  ToHu [ Вто Яну 04, 2005 6:48 pm ]
Заглавие: 

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

Автор:  Реконструктор [ Вто Яну 04, 2005 6:59 pm ]
Заглавие: 

Споко бе, има и още един таймер, който е на отделен прескалер. :) Има 3 таймера atMega.

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/