LinkedIn YouTube Facebook
Szukaj

Wstecz
Artykuły

Mikrokontrolery Infineon XMC4500 w praktyce, część 6. Obsługa zegara czasu rzeczywistego (RTC)

Komponent RTC001 został dodany do projektu oraz skonfigurowany, dlatego kolejnym krokiem jest uruchomienie generatora kodu, który wytworzy i doda do projektu pliki z kodem źródłowym sterującym zegarem czasu rzeczywistego.

Następnie można przejść do edycji kodu pliku main.c. Bazując na pliku main.c z projektu programistycznego aplikacji sterującej wyświetlaczem LCD, należy dokonać następujących zmian:

Usunąć:

  • Deklarację tablicy zawierającej dane pliku graficznego,
  • Wywołania funkcji wyświetlających przykładowy tekst, figurę oraz obrazek z tablicy.

Dopisać:

  • Deklarację struktury danych przechowującej odczytaną wartość czasu i daty,
  • Deklarację dwóch tablic, które przechowywać będą wartość czasu i daty w postaci pojedynczych cyfr przyporządkowanych do komórek tablic,
  • Wywołania funkcji wyświetlającej tekst w celu wyświetlenia słów ‘Time’ i ‘Date’,
  • Definicję funkcji obsługującej przerwanie. Ciało tej funkcji tworzą: wywołanie funkcji odczytującej do zadeklarowanej wcześniej struktury danych wartość daty i czasu, przypisanie cyfr odczytanych wartości daty i czasu do komórek zadeklarowanych wcześniej tablic, wywołanie funkcji wyświetlającej tekst w celu wyświetlenia daty i czasu na wyświetlaczu.

Po dokonaniu wymienionych zmian 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: 30-12-2012
 *      Author: admin
 */

#include           // Declarations from DAvE3 Code Generation (includes SFR declaration)
#include "LCD/lcd.h"

RTC001_TimeHandle CurrentTime;
uint8_t date[11] = {0,0,'.',0,0,'.',0,0,0,0,0};
uint8_t time[9] = {0,0,':',0,0,':',0,0,0};

int main(void)
{
//  status_t status;       // Declaration of return variable for DAvE3 APIs (toggle comment if required)

  DAvE_Init();             // Initialization of DAvE Apps
  LCDInit();
  LCDFill(WHITE);
  LCDPutStr("Time", 18, 20, 1, BLACK, WHITE);
  LCDPutStr("Date", 58, 20, 1, BLACK, WHITE);

  while(1)
  {

  }
  return 0;
}

void RTC_seconds_interrupt(uint32_t CbArg)
{
  RTC001_Clock_GetTime(&CurrentTime);

  time[0] = (CurrentTime.Hours)/10+48;
  time[1] = (CurrentTime.Hours)%10+48;
  time[3] = (CurrentTime.Min)/10+48;
  time[4] = (CurrentTime.Min)%10+48;
  time[6] = (CurrentTime.Sec)/10+48;
  time[7] = (CurrentTime.Sec)%10+48;

  date[0] = (CurrentTime.Days)/10+48;
  date[1] = (CurrentTime.Days)%10+48;
  date[3] = (CurrentTime.Month)/10+48;
  date[4] = (CurrentTime.Month)%10+48;
  date[6] = (CurrentTime.Year)/1000+48;
  date[7] = ((CurrentTime.Year)%1000)/100+48;
  date[8] = ((CurrentTime.Year)%100)/10+48;
  date[9] = (CurrentTime.Year%10)+48;
  LCDPutStr(&time, 38, 20, 1, BLACK, WHITE);
  LCDPutStr(&date, 78, 20, 1, BLACK, WHITE);
}

 

Fot. 7. Uruchomiony program aktualizuje co sekundę wartość czasu i daty na wyświetlaczu

Fot. 7. Uruchomiony program aktualizuje co sekundę wartość czasu i daty na wyświetlaczu

Program jest gotowy. Można go teraz skompilować, wgrać do pamięci mikrokontrolera i uruchomić lub debugować. Uzyskany na wyświetlaczu efekt działania programu przedstawiono na fotografii 7.

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.