Witam serdecznie,
Walczę z przerwaniami już jakiś czas i niestety bezskutecznie, dlatego zwracam się o pomoc. Pod PIND2 (odpowiedzialny za przerwania) podpinam przycisk podciągnięty do plusa. Pod Portem B mam LEDY. Chce aby przyciśniecie przycisku gasiło dany LED a puszczenie przycisku go z powrotem zapalało. Przerwania wykrywam na zmianę stanu logicznego. Chce to zrobić na przerwaniu pochodzącym z jednego pinu. Da się to zrobić?
Poniżej kod.
Walczę z przerwaniami już jakiś czas i niestety bezskutecznie, dlatego zwracam się o pomoc. Pod PIND2 (odpowiedzialny za przerwania) podpinam przycisk podciągnięty do plusa. Pod Portem B mam LEDY. Chce aby przyciśniecie przycisku gasiło dany LED a puszczenie przycisku go z powrotem zapalało. Przerwania wykrywam na zmianę stanu logicznego. Chce to zrobić na przerwaniu pochodzącym z jednego pinu. Da się to zrobić?
Poniżej kod.
ISR(INT0_vect)
{
PORTB |= (PIND2 << 0);
}
int main()
{
// ustawienie parametrow dla przerwania
MCUCR |= (1 << ISC00) | (0 << ISC01); // czy na INT0 jest zmiana stanu
GIMSK |= (1 << INT0);
DDRB = 0xFF; // wyjscie dla B (ledy)
PORTB = 0x00;
DDRD = 0x00; // wejscie dla przyciskow, normalnie stan niski
PORTD = 0xFF;
SREG = 0x80; // wlaczenie globalnego przerwania
while(1)
{
asm("nop");
}
}