Dzisiaj opiszę Wam obsługę przerwań przez mikro kontroler Attiny2313.
Nasz mikro kontroler posiada dwa przerwania oznaczone jako INT0 i INT1, które zostały oznaczone w czerwonej ramce na poniższym zdjęciu.
Jak widać niektóre nóżki mają podwójne a nawet potrójne zastosowania. My będziemy dzisiaj korzystać z przerwania INT0 na porcie PD2.
Co to są przerwania?
Przerwania można opisać jako zadanie które trafia do naszego procesora i zostaje wykonane prawie natychmiast. Czyli jeżeli mamy w programie w nieskończonej pętli jakiś skrypt który zapala i gasi diody LED w określonej kolejności , to możemy dopisać przerwanie które gasi wszystkie diody LED na kilka sekund. Inaczej mówiąc kontroler zapisze sobie aktualne miejsce i zatrzyma program , a tym samym rozpocznie uruchamianie funkcji przerwania, które zrealizuje określone zadania. Jest to bardzo przydatna rzecz w naszych programach.Kod programu w C.
#include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> char liczby[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; // liczby od 0 do 9 zapisane szesnastkowo int i=0; SIGNAL (SIG_INTERRUPT0) // funckaj obsługi przerwania { PORTB = 0xb6; // wyświetla pewien znak _delay_ms(150); // czeka ok 2 sekund } int main( void ) { DDRB=0xff; // ustawia porty B jak wyjścia DDRD &= ~(1<<PORTD2); // 2 pin D jako wejśćie to jest nasz przycisk PORTD |= (1<<PORTD2); // podciąga do niego napięcie MCUCR |= (1<<ISC00); // ustawienie przerwania przy zmianie stanu GIMSK |= (1<<INT0); // włączenie przerwania INT0 sei(); // uruchomienie systemu przerwań while(1) { for(i=0;i<=9;i++) { // pętla która wyświetla nam cyfry od 0 do 9 PORTB = liczby[i]; // wysyła do wyświetlacza odpowiednie piny (liczbę) _delay_ms(60); // czekanie } } return 0; }
Schemat układu.
Korzystamy dalej z naszego wyświetlacza 7 segmentowego, który będzie odliczał od 0 do 9 a po wciśnięciu przycisku (micro-switch), na 2 sekundy pojawi się pewnie symbol na wyświetlaczu , po czym nastąpi dalsze odliczanie na wyświetlaczu.Do każdego pinu portu B naszego Attiny2313 podpinamy wyświetlacz jak w poprzednich artykułach. Do portu PD2 podpinamy przycisk. Do 10 portu podpinamy masę (GND), a do 20 podpinamy napięcie (VCC) ok. 3-5V. Najlepiej całość zmontować na pajączku lub płytce stykowej.
Brak komentarzy:
Prześlij komentarz