LinkedIn YouTube Facebook
Szukaj

Wstecz
Artykuły

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

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

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

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

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

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

SZYMON PANECKI urodził się 17 lutego 1985 roku w Milanówku. Tytuł inżyniera Elektroniki i Telekomunikacji, a następnie magistra inżyniera na Wydziale Elektroniki Politechniki Wrocławskiej uzyskał kolejno w roku 2008 i 2010. Ponadto tytuł inżyniera Informatyki na Wydziale Elektroniki Politechniki Wrocławskiej uzyskał w roku 2011. Szymon Panecki jest doświadczonym elektronikiem-konstruktorem, który w trakcie swojej zawodowej kariery koncentruje się na definiowaniu i projektowaniu (zarówno w warstwie sprzętowej jak i programowej) systemów wbudowanych opartych na mikrokontrolerach z rdzeniem ARM od różnych producentów, w tym przede wszystkim Infineon Technologies (rodzina XMC1000 i XMC4000), STMicroelectronics (STM32 i STR7), Freescale Semiconductor (Kinetis L) oraz Silicon Labs (EFM32 i Precision32). Obszarem jego szczególnego zainteresowania są systemy wykorzystujące czujniki środowiskowe (wilgotności, ciśnienia, temperatury) oraz przemysłowe i motoryzacyjne interfejsy komunikacyjne, głównie CAN. Szymon Panecki od wielu lat współpracuje z czasopismem "Elektronika Praktyczna" oraz portalem Mikrokontroler.pl, na łamach których publikuje liczne artykuły dotyczące swoich projektów, jak również nowości produktowych firm z branży półprzewodnikowej.