Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > AVRstudio обработка прерывания по переполнению


Автор: mooz 4.9.2007, 18:21
я написал:
....
#include <avr/interrupt.h>
....
void ioinit (void)
{
инициализация портов и проч.

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 8000.000 kHz
// Mode: Normal top=FFh
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x01;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x02;

sei(); // Global enable interrupts

}//end of ioinit

//================================
ISR(TIMER0_OVF_vect)//функция обработки прерывания
{
....код, выполняемый при прерывании
}
//================================

int main (void)
{
ioinit ();
....всякий код
}
//================================
ВОПРОСЫ:
1. после второго вызова ISR(TIMER0_OVF_vect)программа не выходит из функции.
2. если в программе есть функция ISR(TIMER0_OVF_vect) счетчик считает не не до 0хFF а 0х07.

что я делаю непправильно?

Автор: cardinal 4.9.2007, 21:37
Цитата(mooz @  4.9.2007,  17:21 Найти цитируемый пост)
1. после второго вызова ISR(TIMER0_OVF_vect)программа не выходит из функции.

Наверняка после обработки по прерыванию надо какой-нибудь битик выставить...
Цитата(mooz @  4.9.2007,  17:21 Найти цитируемый пост)
2. если в программе есть функция ISR(TIMER0_OVF_vect) счетчик считает не не до 0хFF а 0х07.

А потом что?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)