Здравствуйте ,проблема такая ATtiny2313A-SU.внутренний RC генератор.
не работают всесте таймер 0 и таймер 1 в режиме захвата. суть
программы захватом измеряем длину уровня, вычесляем и таймером 0 на 3 семисегментных индикатора,так вот таймер0 в железе не работает, в протеусе моделируется отлично. может я чего не знаю?
исходник прилагаю
#include ‹tiny2313.h›
#include ‹delay.h›
eeprom char a,b,c,d,e,f;
unsigned char i=1,zamer_t;
unsigned int r=0,x,y,t,m=180;
//unsigned int d[3];
unsigned char seg[]=
{ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} ;
interrupt [EXT_INT1] void ext_int1_isr(void)
{}
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{ b=1;
//if(r›65000)
// PORTD.4=0;
// r++;
if(m‹180)
m++;
else
{ PORTD.3=1;
delay_us(10);
PORTD.3=0;
m=0; }
PORTB = 0x00; //выключаем все сегменты
PORTD=~i&0x17;
switch(i)
{ case 1:
{PORTB = seg[t%10];} break; //раскладываем число на разряды
case 2:
{PORTB = seg[t%100/10];if(t‹10) PORTB=0; } break;
case 4:
{PORTB = seg[t%1000/100];if(t‹100) PORTB=0;} break; //
}
if (i›2) i=1;
else
i=i‹‹1;
}
interrupt [TIM1_CAPT] void timer1_capt_isr(void)
{ c=1;
switch(zamer_t)
{
case 0: // Вычисляем ширину импульса
{
x = ICR1; // Запоминаем значениие счётчика
TCCR1B &= ~(1 ‹‹ ICES1); // Устанавливаем прерывание по спадающему фронту импульса
zamer_t = 1; // Переходим к следующему вычислению
}break;
case 1:
y = ICR1; // Запоминаем значение счётчика
TCCR1B |= (1 ‹‹ ICES1); // Устанавливаем прерывание по нарастающему фронту импульса
// Приводим все переменные к одному типу и вычисляем длительность импульса
t = ((1550-((y -x)/5.

)*0.33333)+1;
TCNT1=0;
zamer_t = 0;
// Переходим к следующему вычислению
break;
}}
void main(void)
{
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
// Func2=In Func1=In Func0=In
// State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Func7=In Func6=In Func5=In Func4=In Func3=out Func2=Out Func1=Out Func0=Out
// State7=T State6=T State5=T State4=T State3=T State2=1 State1=1 State0=1
PORTD=0x0F;
DDRD=0x0F;
// Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTB=0x00;
PORTB=0xFF;
PORTD=0x00;
a=1;
delay_ms(10000);
PORTB=0x00;
//if(PIND.5==0)
// PORTB=0x07;
// delay_ms(1000);
//******************************************
//**************************************
//*******************************************
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 4000,000 kHz
// Mode: Normal top=FFh
// OC0A output: Disconnected
// OC0B output: Disconnected
TCCR0A=0x00;
TCCR0B=0x02;
TCNT0=0x00;
OCR0A=0x00;
OCR0B=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 4000,000 kHz
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Rising Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: On
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x82;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: On
// INT1 Mode: Low level
// Interrupt on any change on pins PCINT0-7: Off
GIMSK=0x00;
MCUCR=0x00;
EIFR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x02;
TIMSK=0x0a;
// Universal Serial Interface initialization
// Mode: Disabled
// Clock source: Register & Counter=no clk.
// USI Counter Overflow Interrupt: Off
USICR=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
// Global enable interrupt
#asm("sei")
while (1)
{
};
}