Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Въпроси за Таймерите
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=7615
Страница 1 от 1

Автор:  amdatlon [ Съб Мар 06, 2010 12:02 pm ]
Заглавие:  Въпроси за Таймерите

Здравейте!
Аз като абслютно начинаещ в областта на Микроконтролерите, се опитвам да си изясня нещата относно организацията им.
И за това ми е нужно малко помощ от вас :)
Става дума за начина на работа с таймерите ( в частност ПИК-овете 16F877, 18F458).

Ще кажа какво съм разбрал , вие кажете къде греша:
(За пример вземам Таймер 1 и CCS )

1. setup_timer_1( T1_INTERNAL | T1_DIV_BY_1 );
Таймера брой от 65536 до 0 и като приключи почва от начало.
Времето за едно отброяване зависи от честотата на външния кварц
( примерно 20MHz , ако има такъв #use delay(clock=2000000 ) )
времето за едно отброяване е = 1 / ( 20 000 000 / (4*1)) = 0.2 usес

Когато таймера изброи 65536 пъти х 0,2 мксек , се генерира прекъсване .
Т.е на всеки 0.0131072 секунди има прекъсване

Ако в даден момент искам да знам до къде е стигнал таймера го взимам с
time = get_timer1(); , примерно time =2456;
Това 2456 предполагам е стойността на брояча на таймера, а времето ще го сметна като : 2456 х 0.2 usec = 0.0004912 [sec]


2. Тези сметки по горе влияят ли се от честотата на процесора ( примерно 4 Mhz ) или само от външния кварц. И как в CCS се променя тази честота .
Правя си някой експерименти с протеуса , а там честотата на пика може да се задава от него .

За сега това се сещам да питам , и много Благодаря предварително
:)

Автор:  Cekins [ Съб Мар 06, 2010 3:49 pm ]
Заглавие: 

Честотата на процесора е Fosc/4. Честотата на таймера е или тази или честотата от собствения му осцилатор (таймер 1 има и собствен осцилатор предвиден за 32.768 kHz кварц). Източника се избира от регистъра T1CON. Също така Т1 има прескалер от 1 до 16 (дели входната на толкова). Този таймер брои само напред - от 0 до 65535. Прекъсването е при преминаване от FFFF към 0. Има няколко ПИК-а които имат таймер (Timer2) който брои и в двете посоки, но това е с друга цел.
А между другото знаеш ли Английски?

Автор:  amdatlon [ Съб Мар 06, 2010 4:08 pm ]
Заглавие: 

Много Благодаря за разясненията :)

А относно това как се взима и изчислява моментното времена таймера преди да се е препълнил , ( Точка 1 ) имали нещо вярно в разъжденията ми ? :oops:

Английският ми е на ниво да разбера по основните неща , а по дребните детайли малко ми остават в мъгла . Опитвам се да го уча но на мен лично езиците не ми се отдават особено :(
Малък опит имам само с делфи-то и по - малко "C".

Автор:  Cekins [ Съб Мар 06, 2010 4:44 pm ]
Заглавие: 

Ами то този метод е по кьоравия. Ако Fosc=20MHz, входната на таймера е 5. 5000000/65536=76.29 Hz. Времето е 1/76.29. Това е времето за което ще се напълни.
За английския - много лошо, другия език на който има документация е китайски. Има малко и на руски. На български не се надявай скоро да има нещо.

Автор:  amdatlon [ Съб Мар 06, 2010 7:15 pm ]
Заглавие: 

Да де, и аз така го докарах като сметки :)
Даже хич и не съм търсил докумнтация на БГ :D , защото ми е ясно че няма да намеря .
Но за английския като цяло ме затрудняват разните му там времена , с думите горе долу се оправям
:wink:

Автор:  Cekins [ Съб Мар 06, 2010 9:39 pm ]
Заглавие: 

Еми за съжаление ще трябва да се оправяш по-добре с техническия език. В противен случай трябва да си намериш читав учител. Тук във форума рядко се обясняват основните неща - основната причина е, че всичко това е написано достатъчно разбираемо (е поне в повечето случаи) в документациите. Обърни внимание колко често се случва някой да зададе въпрос и да го пратят в трета глуха.

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