| Микроконтролери и електроника 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 ) имали нещо вярно в разъжденията ми ? Английският ми е на ниво да разбера по основните неща , а по дребните детайли малко ми остават в мъгла . Опитвам се да го уча но на мен лично езиците не ми се отдават особено Малък опит имам само с делфи-то и по - малко "C". |
|
| Автор: | Cekins [ Съб Мар 06, 2010 4:44 pm ] |
| Заглавие: | |
Ами то този метод е по кьоравия. Ако Fosc=20MHz, входната на таймера е 5. 5000000/65536=76.29 Hz. Времето е 1/76.29. Това е времето за което ще се напълни. За английския - много лошо, другия език на който има документация е китайски. Има малко и на руски. На български не се надявай скоро да има нещо. |
|
| Автор: | amdatlon [ Съб Мар 06, 2010 7:15 pm ] |
| Заглавие: | |
Да де, и аз така го докарах като сметки Даже хич и не съм търсил докумнтация на БГ Но за английския като цяло ме затрудняват разните му там времена , с думите горе долу се оправям |
|
| Автор: | Cekins [ Съб Мар 06, 2010 9:39 pm ] |
| Заглавие: | |
Еми за съжаление ще трябва да се оправяш по-добре с техническия език. В противен случай трябва да си намериш читав учител. Тук във форума рядко се обясняват основните неща - основната причина е, че всичко това е написано достатъчно разбираемо (е поне в повечето случаи) в документациите. Обърни внимание колко често се случва някой да зададе въпрос и да го пратят в трета глуха. |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|