Witam.
Stworzyłem układ który ma za zadanie zmianę stanu portu w zależności od pozycji serwa. Jako mikroprocesora użyłem Attiny13, który ma jeden 8-bitowy timer, którego też użyłem do odczytu pozycji serwa na podstawie sygnału który nim steruje. Mam jednak problem z fragmentem programu odpowiedzialnego za odczyt. Oto on:
a tak ustawiłem timer i przerwania
Pod INT0 mam podłączony sygnał sterujący serwem, a przycisk(wspomniany w komentarzach) ma pull-up'a i jest zwierany do masy.
No i problem jest taki, że program nie działa, gdy nie mam podłączonego serwa i naciskam przycisk to sygnalizuje zmianę "srw" pomimo, że przerwania nie ma, natomiast gdy podepnę sygnał to naciskanie przycisku nie zmienia "srw". Gdzie leży problem? Ja niestety nie wiem, proszę o pomoc.
Stworzyłem układ który ma za zadanie zmianę stanu portu w zależności od pozycji serwa. Jako mikroprocesora użyłem Attiny13, który ma jeden 8-bitowy timer, którego też użyłem do odczytu pozycji serwa na podstawie sygnału który nim steruje. Mam jednak problem z fragmentem programu odpowiedzialnego za odczyt. Oto on:
ISR(INT0_vect) //sygnał od serwa
{
if(MCUCR & 0x03) //zbocze narastające
{
MCUCR &= 0xfe;
TCNT0 = 0;
}
if(MCUCR & 0x02) // zbocze opadajace
{
MCUCR |= (1<<ISC00);
if(!(PINB & 0x04)) //przycisk wcisniety
{
srw = TCNT0; //zapisanie pozycji serwa jeśli przycisk wciśniety
zmn = 1; //sygnalizacja zmiany wartosci srw
TCNT0 = 0;
}
else //przycisk nie wcisniety
crp = TCNT0; //obecna pozycja serwa
TCNT0 = 0;
}
}a tak ustawiłem timer i przerwania
MCUCR |= (1<<ISC00) | (1<<ISC01);
GIMSK |= (1<<INT0);
TCCR0B |= (1<<CS01) | (1<<CS00);Pod INT0 mam podłączony sygnał sterujący serwem, a przycisk(wspomniany w komentarzach) ma pull-up'a i jest zwierany do masy.
No i problem jest taki, że program nie działa, gdy nie mam podłączonego serwa i naciskam przycisk to sygnalizuje zmianę "srw" pomimo, że przerwania nie ma, natomiast gdy podepnę sygnał to naciskanie przycisku nie zmienia "srw". Gdzie leży problem? Ja niestety nie wiem, proszę o pomoc.