Отговори на тема  [ 12 мнения ] 
пак таймери :) 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение пак таймери :)
Значи, вчера се замислих за следното: Таймерите в микроконтролера обикновено работят през някакъв делител от честотата на кварца.Делителя е едно малко таймерче, което инкрементира таймерния регистър. Когато записвам стойност в регистъра, гарантирано ли ми е, че малкото таймерче ще се нулира? Щото, ако например прескалера е нагласен на 1/64 от кварца, брояча е стигнал 63, аз запиша 0 в регистъра и в следващия такт на процесора вече ще имам едно. Което не е добре. :)


Вто Яну 04, 2005 10:19 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
Не знам, виж какво пише в .PDF Обикновено правилата на играта не са абсолютно еднакви за различните процесори. дори са различни :cry:


Вто Яну 04, 2005 11:17 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30684
Местоположение: София
Мнение 
Не не е гарантирано .... зависи от конкретния процесор, прочети си документацията какво пише за прескалера. Прескалера .. абе да .. може и таймер да го наречеш .... той си е делител, с T тригери, и ти избираш накой тригер си връзваш твоя брояч, който сам по себе си също е Т тригери, е зависи всъщност от брояча,синхронен, асинхронен и т.н., може да е с JK и т.н... това няма значение. Та когато записваш стойност в твоя брояч, няма никаква причина делителя да се нулира освен ако не са го предивидили, което едва ли са направили, освен ако нямаш специална за писане в таймера. Затова след акто разбереш, ще видиш колко инструкции ти трябват за самия запис и ще решиш каква стойност да зареждаш в тоя таймер .. м-у другото .. не знам дали си усетил, но в оня другия таймер, който брои през 10 us точноста ти е не по добра от 1 МЗР, което ще рече 10us, т.е. нищо не ти гарантира че ако искаш 100 us няма да получиш 110 ....


Вто Яну 04, 2005 11:24 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Дек 19, 2004 6:26 pm
Мнения: 1628
Местоположение: Сливен
Мнение 
Обикновено презареждаш таймера след прекъсване от него, така че не би трябвало това да ти е проблем.


Вто Яну 04, 2005 11:50 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30684
Местоположение: София
Мнение 
е проблем му е по принцип .. така или иначе времето минава ... зависи колко му е прескалера и колко инструкции му отнема презареждането .. и кое му е по важно, първо да свърши нещо или първо да презареди .. ако трябва да го свърши ама съвсем точно, конкретно в тоя момент, по добре първо да го свърши и след това да презареди, ако не . обратното, и в зависимост от възможностите на процесора е различно, и таймера разбира се .... при пика ако си с таймер нула и го зареждш след обслужване на процес трябва да добавиш къмнего това което зареждаш, това е сбор на две 8 битови числа, но ако си с таймер 1 е на две 16 битови което отнема повече инструкции, освен всичко трябва и тея инструкции да си насмяташ колко са и дали няма през това време прескалера да се напълни и да имаш още един импулс ....


Вто Яну 04, 2005 11:54 am
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Чет Ное 25, 2004 3:42 pm
Мнения: 913
Мнение 
Майката му е на асемблер и си броиш инструкциите без значение по какъв път се движи алгоритама времето да е едно и също.
Всичко друго ще ти даде боза в изходните импулси.


Вто Яну 04, 2005 2:44 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Сега изтеглих документацията и я прегледах подробно. Оказва се, че има възможност прескалера да се ресетва, като запишеш 1 в един бит в един от контролните регистри. Лошото е, че 2 от таймерите (общо са 3) ползват един прескалер (макар и с различни настройки) и трябва да се съобразявам с тоя факт.


Вто Яну 04, 2005 3:11 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30684
Местоположение: София
Мнение 
какво правят два от таймерите ? .. позлват един прескалер едновременно .... или прескалера може да се превключва м-у тях .. я виж точно това .. че на мен не ми звучи идейно да позлват общ прескалер .......


Вто Яну 04, 2005 4:18 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Дек 19, 2004 6:26 pm
Мнения: 1628
Местоположение: Сливен
Мнение 
Какъв ти е процесора?
При AVR има по-големи възможности на таймерите, а при PIC ми се е налагало да броя инструкции и да добавям NOP-ове, за да изравня по време всички разклонения. С прекъсване ли работиш или кьориш флагчето?


Вто Яну 04, 2005 5:40 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Използват един прескалер едновременно, но тактуващия сигнал се взима от различни места. :)

Цитат:
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.


Вто Яну 04, 2005 5:40 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30684
Местоположение: София
Мнение 
Хммммм тц .. мен нещо не ме кефи, по готино всеки да си има отделен .. ууууу почвам да се отвращавам от атмел .. що така са го направили ... ами ако ползваш различни източници .... гадничко ...


Вто Яну 04, 2005 6:48 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Споко бе, има и още един таймер, който е на отделен прескалер. :) Има 3 таймера atMega.


Вто Яну 04, 2005 6:59 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 12 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 2 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни