[an error occurred while processing this directive]
|
это происходит из-за случайного начального условия, т.е. не известно куда пойдет первое изменение выхода(в 1 или 0)
текст для 128меги:
void Start_timers_90 (void)
{ // òàéìåð 2 ÷åðåç 90 ãðàäóñîâ îò òàéìåðà 0
_CLI();
TCCR0 = 0x98; // òàéìåð 0 ñòîï
if(tst(PINB,OC_0))
{
TCNT0 = 0;
set(TIFR,OCF0);
TCCR0 = 0xA8 + 0x01; // òàéìåð 0 ñòàðò (ïðåääåëèòåëü 1)
while(tst(PINB,OC_0));
TCCR0 = 0; // òàéìåð 0 ñòîï
}
TCCR0 = 0; // òàéìåð 0 ñòîï
TCNT0 = 0;
set(TIFR,OCF0);
TCCR2 = 0x98; // òàéìåð 2 ñòîï
if(tst(PINB,OC_2))
{
TCNT2 = 0;
set(TIFR,OCF2);
TCCR2 = 0xA8 + 0x01; // òàéìåð 2 ñòàðò (ïðåääåëèòåëü 1)
while(tst(PINB,OC_2));
TCCR2 = 0; // òàéìåð 2 ñòîï
}
TCCR2 = 0; // òàéìåð 2 ñòîï
TCNT2 = 0;
set(TIFR,OCF2);
TCCR0 = 0x98 + 0x01; // òàéìåð 0 ñòàðò (ïðåääåëèòåëü 1)
_NOP();
_NOP();
TCCR2 = 0x98 + 0x01; // òàéìåð 2 ñòàðò (ïðåääåëèòåëü 1)
_SEI();
}
void Start_timers_0 (void)
{ // òàéìåð 2 ÷åðåç 0 ãðàäóñîâ îò òàéìåðà 0
_CLI();
TCCR0 = 0x98; // òàéìåð 0 ñòîï
if(tst(PINB,OC_0))
{
TCNT0 = 0;
set(TIFR,OCF0);
TCCR0 = 0xA8 + 0x01; // òàéìåð 0 ñòàðò (ïðåääåëèòåëü 1)
while(tst(PINB,OC_0));
TCCR0 = 0; // òàéìåð 0 ñòîï
}
TCCR0 = 0; // òàéìåð 0 ñòîï
TCNT0 = 0;
set(TIFR,OCF0);
TCCR2 = 0x98; // òàéìåð 2 ñòîï
if(tst(PINB,OC_2))
{
TCNT2 = 0;
set(TIFR,OCF2);
TCCR2 = 0xA8 + 0x01; // òàéìåð 2 ñòàðò (ïðåääåëèòåëü 1)
while(tst(PINB,OC_2));
TCCR2 = 0; // òàéìåð 2 ñòîï
}
TCCR2 = 0; // òàéìåð 2 ñòîï
TCNT2 = 0;
set(TIFR,OCF2);
TCCR0 = 0x98 + 0x01; // òàéìåð 0 ñòàðò (ïðåääåëèòåëü 1)
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
_NOP();
TCCR2 = 0x98 + 0x01; // òàéìåð 2 ñòàðò (ïðåääåëèòåëü 1)
_SEI();
}
E-mail: info@telesys.ru