Witam
mam taki oto problem
uzywam w programie dwoch tiemrow 8 bitowych, timer0 i timer2,
wszytko bylo by ok gdyby nie fakt ze po zalaczeniu timera2, czesc prgramu obslugiwana przez timer0 przestaje sie wykonywac, (program nie wchodzi do oblugi przerwania zwiazanym z tiemrem0).
i teraz pytanie jak pozbyc sie tego problemu?
pozdrawiam
mam taki oto problem
uzywam w programie dwoch tiemrow 8 bitowych, timer0 i timer2,
wszytko bylo by ok gdyby nie fakt ze po zalaczeniu timera2, czesc prgramu obslugiwana przez timer0 przestaje sie wykonywac, (program nie wchodzi do oblugi przerwania zwiazanym z tiemrem0).
i teraz pytanie jak pozbyc sie tego problemu?
SIGNAL (SIG_OVERFLOW0)
{
odliczanie++;
TCNT0=157;
if(odliczanie==5) //200=5s 10s dla 400 przy 1MHz
{
PORTB^=0x01; //gora
_delay_loop_2(6250); //25ms
PORTB^=0x01; //DOL
_delay_loop_2(6250); //25ms
PORTD^=0x80; //gora
_delay_loop_2(6250); //25ms
PORTD^=0x80; //dol
odliczanie=0;
}
}
SIGNAL (SIG_OVERFLOW2)
{
odliczanie1++;
TCNT2=157;
if(odliczanie1==3) //10s dla 400 przy 1MHz
{
TIMSK&=~(1<<TOIE2); //ZEZWOLANIE NA PRZERWANIE OD T2
odliczanie1=0;
PORTC|=0X10;
}
}
int main (void)
{
//======== Obsluga timera0 ======//
TIMSK=1<<TOIE0; //ZEZWOLANIE NA PRZERWANIE OD T0
TCCR0=4; //presklaer dla licznika 255
TCNT0=157; // odliczane 25ms
//======== Obsluga timera2 ======//
// TIMSK=1<<TOIE2; //ZEZWOLANIE NA PRZERWANIE OD T0
TCCR2=6; //presklaer dla licznika 255
TCNT2=157; // odliczane 25ms
sei();
while(1)
{
AD(); //obsluga ADC
if(ADC>630)
{
PORTC=0X00; //wlacza,wylacza diode
TIMSK=1<<TOIE2; //ZEZWOLANIE NA PRZERWANIE OD T0
}
}
}
pozdrawiam