• Grupa PINO
  • Prv.pl
  • Patrz.pl
  • Jpg.pl
  • Blogi.pl
  • Slajdzik.pl
  • Tujest.pl
  • Moblo.pl
  • Jak.pl
  • Logowanie
  • Rejestracja

Programowanie mikrokontrolerów AVR

Materiał kierowany będzie głównie do studentów lub hobbystów programowania mikrokontrolerów, z naciskiem na praktyczną wiedzę opartą na własnych doświadczeniach.

Kategorie postów

  • elektronika (3)

Strony

  • Strona główna
  • Księga gości

Przerwania zewnętrzne AVR cz3

W języku C wyglądałoby to :

GICR |= (1 << INT0);

Co w tym wypadku jak i poprzednim oznacza operator '<<' ? Jest to tzw przesunięcie bitowe, które za parametr obiera liczbę o ile mamy przeunąć daną "1". Jeśli o 0, to de facto oznacza to sumę logiczną rejestru GICR z 1. Jeśli o 1 to sumę logiczną z 2, o 2 to z 4 itd. Jest to niejawne, ale należy o tym pamiętać jeśli chcemy być świadomymi kontruktorami. 

Aby móc korztać z przerwań na miktrokontrolerze AVR należy dołączyć bibliotekę:

#include <avr/interrupt.h>

oraz załączyć obsługę przerwań funkcją sei:  (ang. Set Interrupts – ustaw przerwania)

sei();   

 

Po ustawieniu niezbędnych rejestrów należy jeszcze wskazać co miktrokontroler ma wykonać w ramach przerwania. Do tego służy funkcja ISR (ang. Interrupt Service Routine). Jako argument przyjmują wskazany wektor przerwań. 

Dla przerwania pochodzącego z pinu INT0, wywołanie funkcji wyglądać będzie następująco:

ISR(INT0_vect) {

      //obsługa przerwania

}

 

Zbierajć wszystko w całość program poglądowy mógłby wyglądać następująco:

#include <avr/io.h>

#inculde <avr/interrupt.h>

 

ISR (INT0_vect) {

         PORTB ^= 1;

         _delay_ms(30);

}

 

int main() {

            GICR |= (1<<INT0);

            DDRB = 1;       //ustawiamy pin jako output

            sei();

            while(1) {

 

            }

}

Podsumowanie:

 

Zastosowanie przerwań z początku wydawć się może utrudnianiem życia, dla początkujących, jednak z czasem gdy projekt nie będzie miał za zadanie tylko zaświecić diody LED, ale i wiele innych czynności w tym samym momencie okaże się, że nie będzie innego wyboru. Stosowanie przerwań także pozwala na programistyczne uporanie się z tzw. drganiami styków, czyli efektowi gdy przycisk wcinął się dwkuktotnie, choć użytkownik zrobił to tylko raz. 

 

Proszę o komentarze, pomysły na kolejne wpisy lub pytania, chętnie podzielę się zdobytą ciężko wiedzą jak i umiejętnościami nabytymi we własnym zakresie.

 

Autor: Dawid Sudowski 

02 maja 2021   Dodaj komentarz
elektronika   external   interrupts   AVR  
Do tej pory nie pojawił się jeszcze żaden komentarz. Ale Ty możesz to zmienić ;)

Dodaj komentarz

Elektroniczne_hobby | Blogi