Witam serdecznie!
Od niedawna uczę się programowania uC w C i postawiłem sobie za zadanie obsłużenie przerwania INT0. Obsługa ma polegać na zapaleniu diody po naciśnięciu guzika podłączonego do INT0 i jej zgaszeniu po puszczeniu guzika.
Poczytałem trochę forum i znalazłem posta którym się inspirowałem. Jako, że program w poście pisany był na Attiny to poryłem trochę w nocie katalogowej mojego uC i okazało się że rejestr z posta:
muszę zmienić na:
Po zmianie rejestrów program coś robi, ale nie to co bym chciał, bo zamiast zapalić diodę gdy kliknę guzik to po prostu ją zapala (bez mojej ingerencji) i gasi z ogromną częstotliwością. Gdy kliknę guzik to zatrzymuje mruganie diody do momentu puszczenia guzika.
Poniżej umieszczam kod programu, proszę o wytknięcie błędów
Z góry dziękuje za pomoc!!!
Od niedawna uczę się programowania uC w C i postawiłem sobie za zadanie obsłużenie przerwania INT0. Obsługa ma polegać na zapaleniu diody po naciśnięciu guzika podłączonego do INT0 i jej zgaszeniu po puszczeniu guzika.
Poczytałem trochę forum i znalazłem posta którym się inspirowałem. Jako, że program w poście pisany był na Attiny to poryłem trochę w nocie katalogowej mojego uC i okazało się że rejestr z posta:
GIMSK |= 1<<INT0; // INT0muszę zmienić na:
GICR |= _BV(INT0) Po zmianie rejestrów program coś robi, ale nie to co bym chciał, bo zamiast zapalić diodę gdy kliknę guzik to po prostu ją zapala (bez mojej ingerencji) i gasi z ogromną częstotliwością. Gdy kliknę guzik to zatrzymuje mruganie diody do momentu puszczenia guzika.
Poniżej umieszczam kod programu, proszę o wytknięcie błędów
#include <avr/io.h>
#include <avr/delay.h>
#include <avr/interrupt.h>
void main()
{
DDRD &= ~_BV(INT0); // ustawienie wejścia dla buttona na INT0
PORTD |= _BV(INT0); // podciągnięcie wejścia do jedynki
DDRB |= _BV(0); // ustawienie portu B jako wyjście
PORTB &= ~_BV(0); //
MCUCR |= _BV(ISC01); // przerwania na zbocze opadające
GICR |= _BV(INT0); // włącza przerwanie na INT0
sei();
while(1)
{
}
}
ISR(INT0_vect)
{
PORTB ^= _BV(0);
}Z góry dziękuje za pomoc!!!