Здравствуйте, решил изучить захват таймера T1 МК ATmega8535. Если не обнулять счетный регистр TCNT1=0; то таймер считает нормально до 65535, но если в прерывании обнулить TCNT1=0 то таймер считает только до 255
#include <mega8535.h>
#include <alcd.h>
#include <delay.h>
#include <stdio.h>
Каким образом происходит захват, возможно не правильный режим таймера, инициализация таймера где?
А если вот это:
tachBuf=ICR1H<<8;
tachBuf=tachBuf|ICR1L;
заменить на это:
tachBuf=ICR1;
Спасибо за отклик. Tаймер настроен регистром TCCR1B так что коэффициент деления частоты равен 1024, захват происходит по ниспадающему фронту, подавление помех отключено. Ниже полный код. При замене tachBuf=ICR1; компилятор выдает ошибку, что он "не знает" что такое ICR1.
#include <mega8535.h>
#include <alcd.h>
#include <delay.h>
#include <stdio.h>
Программа работает, при уменьшении частоты можно заметить что при нажатии кнопки сначала показывается небольшое число, например, сначала 137 потом 2734. Почему так происходит?
#include <mega8535.h>
#include <alcd.h>
#include <delay.h>
#include <stdio.h>
unsigned int temp_h;
unsigned int temp_l;
char lcd_buffer[33];
volatile unsigned int tachBuf=0;