Witam.
Otóż mam taki problem z przerwaniem od przepełnienia. Mianowicie w tym przerwaniu wykonywana jest tylko druga instrukcja "if". Do portów mam podłączone diody, dioda od portu portd_5 tylko nie zauważalnie miga co 5sek., przy porcie port_6 świeci-czyli ten "if" działa dobrze. Jeżeli "if-y" zamienię miejscami to i tak wykonywany zostanie drugi "if". Oczywiście jeżeli w przerwaniu jest jeden "if" obojętnie który, to działa poprawnie. Co należy zrobić aby działały obydwa "if-y" ?? W if-ach wstawiłem (1) żeby były prościej, ale docelowo są tam (a<b).
Z góry dziękuję za sugestie.
Problem jest taki sam gdy:
Dlaczego wykonywana jest instrukcja tylko na PORTD=(1<<6); a PORTD=(1<<5); tylko mignie ??? Po zamianie miejscami jest odwrotnie.
Otóż mam taki problem z przerwaniem od przepełnienia. Mianowicie w tym przerwaniu wykonywana jest tylko druga instrukcja "if". Do portów mam podłączone diody, dioda od portu portd_5 tylko nie zauważalnie miga co 5sek., przy porcie port_6 świeci-czyli ten "if" działa dobrze. Jeżeli "if-y" zamienię miejscami to i tak wykonywany zostanie drugi "if". Oczywiście jeżeli w przerwaniu jest jeden "if" obojętnie który, to działa poprawnie. Co należy zrobić aby działały obydwa "if-y" ?? W if-ach wstawiłem (1) żeby były prościej, ale docelowo są tam (a<b).
Z góry dziękuję za sugestie.
TCCR1B |= ((1<<CS12)|(0<<CS11)|(1<<CS10)); //timer1 z preskalerem 1024
TCNT1 = 60653; //wartosc poczatkowa do przepelnienia uplynie ~5sek
TIMSK |= (1<<TOIE1);
ISR(TIMER1_OVF_vect)
{
if(1)
{
PORTD=(1<<5);
}
else
{
PORTD=(0<<5);
}
if(1)
{
PORTD=(1<<6);
}
else
{
PORTD=(0<<6);
}
TCNT1 = 60653;
}
Problem jest taki sam gdy:
ISR(TIMER1_OVF_vect)
{
if(1) //pompka trzeba ustawic delte histereze
{
PORTD=(1<<5); //nie włącza diody
PORTD=(1<<6); //włącza diodę
}
else
{
}
TCNT1 = 60653;
}
Dlaczego wykonywana jest instrukcja tylko na PORTD=(1<<6); a PORTD=(1<<5); tylko mignie ??? Po zamianie miejscami jest odwrotnie.