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