SUM - instrukcja lab2 - INT - Zakład Urządzeń Mechatronicznych

Transkrypt

SUM - instrukcja lab2 - INT - Zakład Urządzeń Mechatronicznych
Politechnika Poznańska
Wydział Budowy Maszyn i Zarządzania
Sterowniki Urządzeń Mechatronicznych – laboratorium
Ćw. 2: Przerwania Zewnętrzne INT
1) Cel ćwiczenia
Celem ćwiczenia jest zapoznanie się studenta z moŜliwościami sterowania symultanicznego realizowanego
za pomocą obsługi przerwań zewnętrznych typu INT
2) Zakres niezbędnych wiadomości
- rodzaje przerwań zewnętrznych typu INT ze względu na zbocza i poziom sygnału
- jak zachowa się rdzeń mikrokontrolera po wyzwoleniu przerwania zewnętrznego typu INT
- zastosowanie przerwań zewnętrznych typu INT
- priorytety przerwań zewnętrznych (co się stanie, gdy w trakcie obsługi przerwania zgłoszone zostanie inne
przerwanie)
- jak napisać w środowisku AVRStudio, język GCC, funkcję obsługującą przerwanie zewnętrzne typu INT
- podstawy zasady działania mostka typu H
- działanie funkcji sei( ) oraz funkcji cli( ) w język GCC dla mikrokontrolerów z rodziny AVR
3) Opis ćwiczenia
W trakcie ćwiczenia zrealizowane zostanie pulsowanie sygnału sterującego buzzerem z częstotliwością
raz na 2 sekundy i wypełnieniem 25% i jednoczesne sterowanie silnikiem za pomocą symulowanego
mostka typu H oraz 3 przycisków lewo, prawo, stop.
Na potrzeby ćwiczenia sygnały sterujące mostkiem H: S1…S4, będą symulowane przez 4 diody LED
D1…D4, znajdujące się na pokładzie płytki PCB zestawu lab.
Wciśnięcie przycisku ma zmienić stan sygnałów sterujących mostkiem H (lewo, prawo, stop) jednocześnie
niezakłócony pulsować ma sygnał buzzera. Klasyczna realizacja tego problemu linijka po linijce spowoduje
opóźnienie w sterowaniu mostkiem, co widoczne będzie w efekcie działania programu z zadania 4a).
Następnie, w 4b) naleŜy zrealizować to samo zadanie za pomocą przerwań zewnętrznych INT i porównać
efekt końcowy z 4a).
Do realizacji pulsowania bez uŜycia Timera mikrokontrolera naleŜy posłuŜyć się funkcją _delay_ms(x), która
poznana została na poprzednim ćwiczeniu.
Politechnika Poznańska
Wydział Budowy Maszyn i Zarządzania
Sterowniki Urządzeń Mechatronicznych – laboratorium
Ćw. 2: Przerwania Zewnętrzne INT
4) Przebieg ćwiczenia
4a) zrealizować pulsowanie buzzera z częstotliwością 0.25Hz i wypełnieniem 25% oraz obsługę
mostka H za pomocą 3 przycisków
W ramach zadania naleŜy podłączyć zestaw ewaluacyjny tak, aby mieć moŜliwość obsługi buzzera za
pomocą odpowiedniego portu GPIO. Następnie naleŜy napisać program, który spowoduje, iŜ buzzer będzie
pulsował z f=0.25Hz i wypełnieniem 25%.
W tym celu naleŜy:
- napisać szkielet programu
#include <avr/io.h>
#include <util/delay.h>
void main(void)
{
//konfiguracja kierunków portu DDR dla buzera, przycisków i dla diod LED (patrz. schemat zestawu lab)
DDR… = …
DDR… = …
while(1)
//pętla główna
{
PORT…|=(1<<…);
for(…) _delay_ms(…);
PORT…&=~(1<<…);
for(…) _delay_ms(…);
//włącz buzzer
//odczekaj 25% z 4 sekund, czyli 1 sek.
//wyłącz buzzer
//odczekaj 75% z 4 sekund, czyli 3 sek.
if(bit_is_clear(PIN…,…))
PORT…=…
//sprawdź czy wciśnięty jest
//jeŜeli tak to ustaw
//sprawdź czy wciśnięty jest
//jeŜeli tak to ustaw
//sprawdź czy wciśnięty jest
//jeŜeli tak to ustaw
}
}
sprawdzić efekt działania programu i zapisać wnioski
przycisk LEWO
odpowiendni stan na mostku H
przycisk PRAWO
odpowiendni stan na mostku H
przycisk STOP
odpowiendni stan na mostku H
Politechnika Poznańska
Wydział Budowy Maszyn i Zarządzania
Sterowniki Urządzeń Mechatronicznych – laboratorium
Ćw. 2: Przerwania Zewnętrzne INT
4b) zrealizować pulsowanie buzzera z częstotliwością 0.5Hz i wypełnieniem 25% oraz obsługę
mostka H za pomocą 3 przycisków realizowanych na przerwaniach zewnętrznych typu INT
W celu konfiguracji przerwań naleŜy sprawdzić na schemacie zestawu, które przyciski są podłączone do
jakich sygnałów INT oraz zapoznać się w nocie katalogowej od mikrokontrolera AtMega128 z rejestrami
konfiguracyjnymi przerwań INT.
Słowa kluczowe:
EICRA, EICRB, EIMSK, ISCnn, INT0 … INT7, sei( ), cli( )
NaleŜy takŜe sprawdzić w nocie katalogowej, pod którymi sygnałami dostępne są przerwania INT i jeŜeli
zajdzie taka potrzeba, za pomocą przewodów, przepiąć przycisk na inną nóŜkę mikrokontrolera.
#include <avr/io.h>
#include <avr/delay.h>
#include <avr/interrupt.h>
//!!! Biblioteka dla przerwań
SIGNAL(SIG_INTERRUPTxx)
// obsługa przerwania INTxx
{
{
//sprawdź czy wciśnięty jest przycisk LEWO
//jeŜeli tak to ustaw odpowiendni stan na mostku H
}
SIGNAL(SIG_INTERRUPTyy)
// obsługa przerwania INTyy
{
//sprawdź czy wciśnięty jest przycisk PRAWO
//jeŜeli tak to ustaw odpowiendni stan na mostku H
}
SIGNAL(SIG_INTERRUPTzz)
// obsługa przerwania INTzz
{
//sprawdź czy wciśnięty jest przycisk STOP
//jeŜeli tak to ustaw odpowiendni stan na mostku H
}
void main(void)
{
//konfiguracja kierunków portu DDR dla buzera, przycisków i dla diod LED (patrz. schemat zestawu lab)
DDR… = …
DDR… = …
//ustawić bity CSn0 i CSn1 w rejestrze EICRA lub EICRB (w zeleŜności od numeru przerwania INT), gdzie n to numer
przerwania. Bity te pozwalają wybrać typ zbocza lub poziom aktywujący przerwanie
//np. Aby ustawić zbocze … dla INT2: EICRA|=(1<<CS20); EICRA|=(1<<CS21);
//następnie naleŜy ustawić bit INTn w rejestrze EIMSK
//np. Aby włączyć INT0: EMISK|=(1<<INT0);
sei(); //globalne zezwolenie na przerwania
while(1)
//pętla główna
{
//włącz buzzer
//odczekaj 25% z 4 sekund, czyli 1 sek.
//wyłącz buzzer
//odczekaj 75% z 4 sekund, czyli 3 sek.
}
}
Politechnika Poznańska
Wydział Budowy Maszyn i Zarządzania
Sterowniki Urządzeń Mechatronicznych – laboratorium
Ćw. 2: Przerwania Zewnętrzne INT
5) Sprawozdanie
Sprawozdanie powinno zawierać:
- schematy hardware do kaŜdego wykonanego zadania w ramach ćwiczeń
- pod kaŜdym schematem powinien się znajdować opis i ewentualne wnioski
- program, jaki grupa napisała na zajęciach
- za kaŜdą linijką programu, jeŜeli będzie taka potrzeba, naleŜy umieścić bieŜący komentarz na temat danej
linijki kodu
- pod kaŜdym programem naleŜy umieścić własny opis działania programu i wnioski
- porównanie efektu pracy programów z ćwiczenia 4a) i 4b)
- ogólne wnioski i spostrzeŜenia na temat wykonanego ćwiczenia i zdobytej wiedzy