реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> помогите разобраться глючит таймер второй на mega128
ed888
сообщение Jan 17 2007, 15:11
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 28-11-06
Пользователь №: 22 844



такая вот ситуация ! нет срабатывает прерывание второго восьмиразрядного таймера по совпадению с числом !

вот код на СИ в CVA

// T0
TCCR0 = (1<<2)|(1<<1)|(1<<3); // set bits CS02 CS0 WGM01
OCR0 = 0x52; // 2 m.sec. interval

// T2
TCCR2 = (1<<2)|(1<<1)|(1<<3); // set bits CS22 CS2 WGM21
OCR2 = 0x52; // 2 m.sec. interval

TIMSK = (1<<1)|(1<<7); // set bit OCIE0 and OCIE2 enable T0 interruption

этот обработчик срабатывает
interrupt [16] void Timer0Com( void )
{

}

а этот нет
interrupt [10] void Timer2Com( void )
{

}

может кто знает в чем дело ?
Go to the top of the page
 
+Quote Post
ed888
сообщение Jan 17 2007, 15:23
Сообщение #2





Группа: Новичок
Сообщений: 5
Регистрация: 28-11-06
Пользователь №: 22 844



может глаз замылился может еще что ... но по коду видно что инициализация для обоих щетчиков одинаковая однако прерывания от второго нет и все !!! понимаю вопрос не такой интересный как про градусник или про мотоцикл но все же если есть хоть какиенибуть соображения напишите !!!
Go to the top of the page
 
+Quote Post
VDG
сообщение Jan 17 2007, 15:33
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 845
Регистрация: 10-02-06
Пользователь №: 14 193



Можно только одно посоветовать. Взять даташит и ещё раз пройтись проверить все ли биты установлены верно. А чтобы быть уверенным, что компилер не глючит с такой формой записи "<<", можно забить прямо числом.


--------------------
Go to the top of the page
 
+Quote Post
ed888
сообщение Jan 17 2007, 15:40
Сообщение #4





Группа: Новичок
Сообщений: 5
Регистрация: 28-11-06
Пользователь №: 22 844



даташит перепроверен не единожды ошибки "увы" нет ... забил инициализацию числом дабы избежать ошибки компилятора эфект тотже sad.gif прерывания нет !
Go to the top of the page
 
+Quote Post
GDI
сообщение Jan 17 2007, 16:35
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Цитата
// T2
TCCR2 = (1<<2)|(1<<1)|(1<<3); // set bits CS22 CS2 WGM21
OCR2 = 0x52; // 2 m.sec. interval


CS22 CS21 - у T2 - это внешний тактовый сигнал,
а у Т0 - это clk/256


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
defunct
сообщение Jan 17 2007, 20:39
Сообщение #6


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



и походу вместо использования неверных коментариев
// set bit OCIE0 and OCIE2 enable T0 interruption

лучше писать так:
TIMSK = (1<< OCIE2)|(1<< OCIE0);
Go to the top of the page
 
+Quote Post
GDI
сообщение Jan 18 2007, 13:13
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Цитата
лучше писать так:
TIMSK = (1<< OCIE2)|(1<< OCIE0);


В CodeVision эти(да и другие) биты не определены

2 ed888 а почему бы не воспользоваться мастером создания проекта, если уж пользуетесь CV. Мастер - это единственный позитивный момент в CV по сравнению с IAR, в остальном IAR на голову выше.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
yvk
сообщение Jan 19 2007, 23:08
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 28-02-06
Из: Kharkiv
Пользователь №: 14 770



Цитата(ed888 @ Jan 17 2007, 14:11) *
такая вот ситуация ! нет срабатывает прерывание второго восьмиразрядного таймера по совпадению с числом !
может кто знает в чем дело ?

А в обработчике прерывания по Timer0 не сбрасывается ли флаг от Timer2?
Go to the top of the page
 
+Quote Post
defunct
сообщение Jan 21 2007, 02:20
Сообщение #9


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(GDI @ Jan 18 2007, 13:13) *
Цитата
лучше писать так:
TIMSK = (1<< OCIE2)|(1<< OCIE0);

В CodeVision эти(да и другие) биты не определены

Кто мешает их определить?
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 13:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01423 секунд с 7
ELECTRONIX ©2004-2016