|
Таймер1, режим по совпадению |
|
|
|
 |
Ответов
|
Jul 3 2006, 07:24
|

Местный
  
Группа: Свой
Сообщений: 243
Регистрация: 22-09-04
Из: Burbach, Germany
Пользователь №: 704

|
Цитата(Kesha123 @ Jul 3 2006, 08:54)  Кто-нибудь подскажет, как запустить режим по совпадению таймера1? А, именно, имеется мега32 16МГц, нужно вызывать прерывание каждую миллисекунду. Заранее благодарен! В приложении - Хидер и Сишник для обслуживания таймеров В процедуре инициализации ставите слкдующие строки: //Запуск системного таймера Timer1_SetMode(DISABLE_OC, DISABLE_OC, T1_NORMAL); Timer1_SetMatchValue(CHANNEL_A,2000); // 1000Hz(T=1ms) on f=CLK/8 (CLK=16MHz) Tim_EnableInt(OCIE1A); Timer1_Start(T1_CLK_8); Процедура обработки прерывания: //******************************************************************************* // Timer 1 output compare interrupt service routine //******************************************************************************* interrupt [TIM1_COMPA]void Tim1_compA_ISR(void){ TCNT1=0; // Ваш код..... }
|
|
|
|
|
Jul 3 2006, 07:38
|

Участник

Группа: Новичок
Сообщений: 21
Регистрация: 17-04-06
Пользователь №: 16 197

|
Цитата(ALexx @ Jul 3 2006, 11:24)  Цитата(Kesha123 @ Jul 3 2006, 08:54)  Кто-нибудь подскажет, как запустить режим по совпадению таймера1? А, именно, имеется мега32 16МГц, нужно вызывать прерывание каждую миллисекунду. Заранее благодарен!
В приложении - Хидер и Сишник для обслуживания таймеров В процедуре инициализации ставите слкдующие строки: //Запуск системного таймера Timer1_SetMode(DISABLE_OC, DISABLE_OC, T1_NORMAL); Timer1_SetMatchValue(CHANNEL_A,2000); // 1000Hz(T=1ms) on f=CLK/8 (CLK=16MHz) Tim_EnableInt(OCIE1A); Timer1_Start(T1_CLK_8); Процедура обработки прерывания: //******************************************************************************* // Timer 1 output compare interrupt service routine //******************************************************************************* interrupt [TIM1_COMPA]void Tim1_compA_ISR(void){ TCNT1=0; // Ваш код..... } Си - это, конечно, хорошо, но кто-нибудь может привести пример на Ассемблере?
|
|
|
|
|
Jul 3 2006, 08:18
|
Местный
  
Группа: Участник
Сообщений: 338
Регистрация: 1-02-06
Из: Королев, М.О.
Пользователь №: 13 846

|
Цитата(Kesha123 @ Jul 3 2006, 11:38)  Цитата(ALexx @ Jul 3 2006, 11:24)  Цитата(Kesha123 @ Jul 3 2006, 08:54)  Кто-нибудь подскажет, как запустить режим по совпадению таймера1? А, именно, имеется мега32 16МГц, нужно вызывать прерывание каждую миллисекунду. Заранее благодарен!
В приложении - Хидер и Сишник для обслуживания таймеров В процедуре инициализации ставите слкдующие строки: //Запуск системного таймера Timer1_SetMode(DISABLE_OC, DISABLE_OC, T1_NORMAL); Timer1_SetMatchValue(CHANNEL_A,2000); // 1000Hz(T=1ms) on f=CLK/8 (CLK=16MHz) Tim_EnableInt(OCIE1A); Timer1_Start(T1_CLK_8); Процедура обработки прерывания: //******************************************************************************* // Timer 1 output compare interrupt service routine //******************************************************************************* interrupt [TIM1_COMPA]void Tim1_compA_ISR(void){ TCNT1=0; // Ваш код..... } Си - это, конечно, хорошо, но кто-нибудь может привести пример на Ассемблере? Я же написал, какие значения куда пихать! Неужели трудно записать это на ассемблере? Там нужно всего-то пара команд - ldi и out
Сообщение отредактировал Harvester - Jul 3 2006, 08:25
--------------------
-Да как так-то?/-Да как-то так/-Ну так-то да
|
|
|
|
Сообщений в этой теме
Kesha123 Таймер1 Jul 3 2006, 05:54 Harvester CS12...CS10 = 010 (регистр TCCR1B) - предделитель ... Jul 3 2006, 07:38 singlskv Цитата(Harvester @ Jul 3 2006, 11:38) CS1... Jul 5 2006, 17:55  Kesha123 OCR1A = 2000 - 1 = 1999
[/quote]
Да! Пробовал... Jul 6 2006, 05:38   =GM= Цитата(Kesha123 @ Jul 6 2006, 04:38) Да... Jul 6 2006, 09:53    Kesha123 Цитата(=GM= @ Jul 6 2006, 13:53) Цитата(K... Jul 6 2006, 10:10     =GM= Цитата(Kesha123 @ Jul 6 2006, 09:10) Прер... Jul 6 2006, 12:33      Kesha123 Цитата(=GM= @ Jul 6 2006, 16:33) Цитата(K... Jul 6 2006, 12:56       =GM= Цитата(Kesha123 @ Jul 6 2006, 11:56) Груб... Jul 6 2006, 14:20        Kesha123 Пожалуй, стоит думать о замене кварца на проце Jul 7 2006, 06:32         IgorKossak Цитата(Kesha123 @ Jul 7 2006, 09:32) Пожа... Jul 7 2006, 07:41          =GM= Цитата(Kesha123 @ Jul 7 2006, 09:32) Пожа... Jul 7 2006, 11:59 IgorKossak Если требование по точности временнОго интервала ж... Jul 5 2006, 07:03 Kesha123 Цитата(IgorKossak @ Jul 5 2006, 11:03) Ил... Jul 5 2006, 11:08 IgorKossak Когда я отвечал, я смотрел на вопрос в теме.
Если ... Jul 7 2006, 12:48 =GM= Цитата(IgorKossak @ Jul 7 2006, 11:48) Ко... Jul 7 2006, 13:43  Kesha123 Погрешность стабильная на любых интервалах измерен... Jul 10 2006, 04:24   =GM= Цитата(Kesha123 @ Jul 10 2006, 03:24) Пог... Jul 10 2006, 14:07
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|