Пjмогите настроить таймер счетчик T1 в atmega16
Добавлено: 16 ноя 2014, 11:40
Компаратор с внутренним источником опорного напряжения (2,5В), и нужно чтоб при приходе 1 (тобиш по нарастающему фронту импульса) срабатывал захват таймера счетчика T1 (в atmega16 он вроде 16-ти битный). Мне нужно считать значение со счетчика таймера T1 (TCNT1). Оно вроде записывается в ICR1 при захвате, а оттуда потом можно и считать.
Кидаю код, помогите пожалуйста
И еще хотелось бы узнать. Надо ли разрешать прерыванию компаратора и нужно описывать вектор ISR (ANA_COMP_vect) или нет. Так же хотелось бы узнать какой вектор по T1 мне нужен ISR (TIMER1_CAPT_vect) либо другой.
#define F_CPU 1000000
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
ISR (ANA_COMP_vect)
{
ams("nop");
}
ISR (TIMER1_CAPT_vect)
{
asm("nop");
}
int main(void)
{
DDRB &=~ (1<<3); //на вход
PORTB &=~ (1<<3); // без сопротивления
ACSR &=~ (1<<ADC); //включение компаратора
ACSR |= (1<<ACBG); //внутренее опорное напряжение на AIN0
ACSR |= (1<<ACIE); //разрешение прерываний
ACSR|=(1<<ACIS0)|(1<<ACIS1); //прерывание по нарастающему фронту
// TAIMER
TCCR1B |= (1<<0); //без предделителя
TIMSK |= (1<<5); // разрешение прерываний
TCCR1B &=~ (1<<7); // подавление помех выкл.
TCCR1B |= (1<<6); //по нарастающему фронту
sei (); //разрешение прерываний
while(1)
{
asm("nop");
}
}
Кидаю код, помогите пожалуйста
И еще хотелось бы узнать. Надо ли разрешать прерыванию компаратора и нужно описывать вектор ISR (ANA_COMP_vect) или нет. Так же хотелось бы узнать какой вектор по T1 мне нужен ISR (TIMER1_CAPT_vect) либо другой.
#define F_CPU 1000000
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
ISR (ANA_COMP_vect)
{
ams("nop");
}
ISR (TIMER1_CAPT_vect)
{
asm("nop");
}
int main(void)
{
DDRB &=~ (1<<3); //на вход
PORTB &=~ (1<<3); // без сопротивления
ACSR &=~ (1<<ADC); //включение компаратора
ACSR |= (1<<ACBG); //внутренее опорное напряжение на AIN0
ACSR |= (1<<ACIE); //разрешение прерываний
ACSR|=(1<<ACIS0)|(1<<ACIS1); //прерывание по нарастающему фронту
// TAIMER
TCCR1B |= (1<<0); //без предделителя
TIMSK |= (1<<5); // разрешение прерываний
TCCR1B &=~ (1<<7); // подавление помех выкл.
TCCR1B |= (1<<6); //по нарастающему фронту
sei (); //разрешение прерываний
while(1)
{
asm("nop");
}
}