Mikrokontrolery Infineon XMC4500 w praktyce, część 4. Obsługa GPIO
Opis aplikacji
W przykładowej aplikacji wykorzystane zostaną dwa wyprowadzenia mikrokontrolera: P1.1 oraz P1.14. Na płytce XMC4500 Relax Kit do wyprowadzenia P1.1 podłączony jest obwód z diodą LED, natomiast do wyprowadzenia P1.14 podłączony jest obwód z przyciskiem (rysunek 2) [3].
Rys. 2. Schemat elektryczny komponentów wykorzystanych w aplikacji
Aplikacja działać ma według następującego scenariusza. Mikrokontroler odczytywać będzie stan wyprowadzenia P1.14 sprawdzając czy przycisk został wciśnięty. Jeśli tak, mikrokontroler zasygnalizuje to zmieniając na przeciwny stan wyprowadzenia P1.1, co spowoduje włączenie lub wyłączenie diody LED. Proces odczytu stanu wyprowadzenia P1.14 i zmiana stanu wyprowadzenia P1.1 ma się powtarzać w sposób cykliczny. Schemat blokowy programu przedstawiono na rysunku 3.
Rys. 3. Algorytm działania przykładowej aplikacji
Realizacja aplikacji
Pierwszym etapem realizacji aplikacji jest stworzenie nowego projektu typu DAvE CE Project.
Opis tworzenia projektu w pakiecie DAvE 3 znaleźć można w artykule „Mikrokontrolery Infineon XMC4500 w praktyce, część 3”. |
Następnie do projektu dodać należy dwa komponenty DAvE Apps IO003. Przyjmą one nazwy IO003/0 oraz IO003/1. Opcjonalnie można nadać im etykiety (przykładowo komponentowi IO003/0 etykietę PRZYCISK i komponentowi IO003/1 etykietę DIODA_LED ) (rysunek 4).
Rys. 4. Dodane do projektu dwa komponenty IO003 z nadanymi etykietami
Gdy komponenty są już dodane do projektu, należy każdemu z nich przyporządkować wyprowadzenie mikrokontrolera, odpowiednio komponentowi IO003/0 wyprowadzenie P1.14 i komponentowi IO003/1 wyprowadzenie P1.1 (rysunek 5).
Rys. 5. Przypisane komponentom IO003 wyprowadzenia mikrokontrolera
Domyślnym trybem pracy komponentów IO003 jest odczytywanie stanów logicznych z wyprowadzeń mikrokontrolera. Komponent IO003/1 ma zgodnie z założeniami aplikacji wystawiać na wyprowadzeniu mikrokontrolera stany logiczne, dlatego jego tryb pracy musi zostać zmieniony. W tym celu należy otworzyć okno ustawień tego komponentu i w panelu Output Driver Enabled zaznaczyć opcję Output Enable (rysunek 6).
Rys. 6. Ustawienie trybu pracy portu
Wymagane przez aplikację komponenty DAvE Apps zostały dodane do projektu oraz konfiguracja komponentów została zakończona, dlatego kolejnym krokiem jest uruchomienie generatora kodu, który na bazie wykonanych czynności wytworzy pliki z kodem źródłowym i doda je do projektu.
Opis powyższych czynności (dodawanie do projektu komponentów DAvE Apps, przyporządkowanie komponentom wyprowadzeń mikrokontrolera, ustawienie parametrów pracy komponentów, uruchomienie generatora kodu) można znaleźć w artykule „Mikrokontrolery Infineon XMC4500 w praktyce, część 2”. |
W tym momencie można przejść do edycji kodu pliku main.c . Dopisać do niego należy:
- deklarację zmiennej, do której zapisywany będzie stan portu,
- deklarację i definicję funkcji opóźniającej, która pozwoli na zaobserwowanie zmian stanu portu,
- wywołanie funkcji odczytującej stan portu i przypisanie zwracanej przez nią wartości do deklarowanej zmiennej,
- instrukcję warunkową if sprawdzającą wartość zmiennej,
- ciało instrukcji warunkowej, a więc wywołania: funkcji zmieniającej stan portu oraz funkcji opóźniającej.
Po wymienionych zmianach zawartość pliku main.c powinna prezentować się tak jak na listingu 1.
List. 1. Kod źródłowy przykładowej aplikacji
/* * Main.c * Created on: 07-12-2012 * Author: admin */ #include//Declarations from DAvE3 Code Generation (includes SFR declaration) bool Value = 0; int main(void) { // status_t status; // Declaration of return variable for DAvE3 APIs (toggle comment if required) DAvE_Init(); // Initialization of DAvE Apps while(1) { Value = IO003_ReadPort(IO003_Handle0); if(Value == 0) { IO003_TogglePort(IO003_Handle1,1); delay(10000000); } } return 0; } void delay (unsigned int count) { while (count != 0) { count--; } }
Program jest gotowy. Można go teraz skompilować, wgrać do pamięci mikrokontrolera i uruchomić lub debugować.
Literatura
[1] www.infineon.com XMC4500 Reference Manual
[2] System pomocy DAvE 3
[3] www.infineon.com Evaluation Board for XMC4000 Family, XMC4500 Relax Kit