atmega16 прерывание от компаратора
Добавлено: Пн окт 31, 2011 17:08:40
Здравствуйте, не работает прерывание от компаратора. Хочу добиться того чтоб при изменении фронта сигнала с 0 на 1
запускался обработчик прерываний и выполнял соответствующие действия(вывод 3х импульсов).
Кто что может подсказать, заранее спасибо!
#include <mega16.h>
#include <delay.h>
// Declare your global variables here
unsigned char a;
/* Called automatically on external interrupt */
interrupt [17]void ana_comp(void) {
//for(a=3;a>0;a--);
DDRA.0=1; // PA.0 is output
PORTA.0=1; // PA.0 is High level
delay_us(5);
PORTA.0=0; // PA.0 is Low level
delay_us(45);
ACSR.4=1; //interrupt flag ACI is clean
}
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
DDRB=0; // port B is input (PB2 & PB3)
PORTB=0; //port B is input with Z
DDRA.0=1; // PA.0 is output
PORTA.0=0; // PA.0 is Low level
ACSR.3=1; //interrupt ON
// Analog Comparator ON
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0b00001011; // 0->1 rising
while (1){
}
}
запускался обработчик прерываний и выполнял соответствующие действия(вывод 3х импульсов).
Кто что может подсказать, заранее спасибо!
#include <mega16.h>
#include <delay.h>
// Declare your global variables here
unsigned char a;
/* Called automatically on external interrupt */
interrupt [17]void ana_comp(void) {
//for(a=3;a>0;a--);
DDRA.0=1; // PA.0 is output
PORTA.0=1; // PA.0 is High level
delay_us(5);
PORTA.0=0; // PA.0 is Low level
delay_us(45);
ACSR.4=1; //interrupt flag ACI is clean
}
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
DDRB=0; // port B is input (PB2 & PB3)
PORTB=0; //port B is input with Z
DDRA.0=1; // PA.0 is output
PORTA.0=0; // PA.0 is Low level
ACSR.3=1; //interrupt ON
// Analog Comparator ON
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0b00001011; // 0->1 rising
while (1){
}
}