Привет Всем. Подскажите пожалуйста в чём проблема: Tiny13 выдаёт каждые 36 секунд импульс, если симулирую в Proteus
то проблем нет. Я вижу каждые 36 секунд импульс. А вот в железе ,вижу каждые 31 секунду импульс. Вот код:
/*****************************************************
Chip type : ATtiny13
AVR Core Clock frequency: 0,128000 MHz
Memory model : Tiny
External RAM size : 0
Data Stack size : 16
*****************************************************/
#include <tiny13>
#include <delay>
unsigned char second, impuls;
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=0x83;
if(second==35)
{
second = 0;
impuls = 1;
}
else second++;
}
void main(void)
{
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
PORTB=0x00;
DDRB=0x18;
TCCR0A=0x00;
TCCR0B=0x05;
TCNT0=0x83;
OCR0A=0x00;
OCR0B=0x00;
GIMSK=0x00;
MCUCR=0x00;
TIMSK0=0x02;
ACSR=0x80;
ADCSRB=0x00;
#asm("sei")
while (1)
{
if(impuls)
{
PORTB.4 = 1;
delay_ms(200);
PORTB.4 = 0;
impuls = 0;
}
};
}
то проблем нет. Я вижу каждые 36 секунд импульс. А вот в железе ,вижу каждые 31 секунду импульс. Вот код:
/*****************************************************
Chip type : ATtiny13
AVR Core Clock frequency: 0,128000 MHz
Memory model : Tiny
External RAM size : 0
Data Stack size : 16
*****************************************************/
#include <tiny13>
#include <delay>
unsigned char second, impuls;
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
TCNT0=0x83;
if(second==35)
{
second = 0;
impuls = 1;
}
else second++;
}
void main(void)
{
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
PORTB=0x00;
DDRB=0x18;
TCCR0A=0x00;
TCCR0B=0x05;
TCNT0=0x83;
OCR0A=0x00;
OCR0B=0x00;
GIMSK=0x00;
MCUCR=0x00;
TIMSK0=0x02;
ACSR=0x80;
ADCSRB=0x00;
#asm("sei")
while (1)
{
if(impuls)
{
PORTB.4 = 1;
delay_ms(200);
PORTB.4 = 0;
impuls = 0;
}
};
}
