TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

IMPLEMENTANDO SOFTWARE PARA A PLATAFORMA FREEDOM COM PROCESSOR EXPERT E KINETIS

Por:   •  16/9/2018  •  Trabalho acadêmico  •  3.278 Palavras (14 Páginas)  •  178 Visualizações

Página 1 de 14

AULA PRÁTICA No 2

IMPLEMENTANDO SOFTWARE PARA A PLATAFORMA FREEDOM COM PROCESSOR EXPERT E KINETIS

FILIPE FERREIRA BOTELHO

JOÃO LUCAS MUNIZ OLIVEIRA

LUIS ANTÔNIO BRANDÃO

Engenharia de Computação

9o. Período.

        

MONTES CLAROS, 14 DE MAIO DE 2018

  1. Sumário

1 - INTRODUÇÃO        3

1.1 – SISTEMAS EMBARCADOS        3

1.2 – PLACA FRDM-KL46Z        3

2 - DESENVOLVIMENTO        4

3 - CONCLUSÃO        8

4 - BIBLIOGRAFIA        9

5 – ANEXO I        10


  1. 1 - INTRODUÇÃO

        Uma tendência que se observa é que a cada vez mais inteligência adicionada aos equipamentos do dia-a-dia. Isto se resume a forma de embarcar inteligência em equipamentos como sendo tendência futura aos dispositivos.

  1. 1.1 – SISTEMAS EMBARCADOS

        Colocar capacidade dentro de um circuito integrado, equipamento ou sistema sucinta a ideia de sistemas embarcados, onde é um sistema completo e independente, mas preparado para realizar apenas uma determinada tarefa.

        O usuário final não terá acesso ao programa que foi embutido no dispositivo, mas poderá interagir com o equipamento através de interfaces como teclados, displays, etc. desde que o sistema tenha sido projetado para tanto.

        Com principais características de um sistema embarcado tem-se a sua capacidade computacional e a sua dependência de operação. Outros aspectos relevantes são referentes aos tipos de sistemas, modos de funcionamento e itens desejados em aplicações embarcadas.

        Alguns tipos de aplicações de sistemas embarcados podem ser encontrados como propósito geral onde são aplicações mais parecidas com os computadores de mesa, mas em embalagens embarcadas como conversores de TV, caixas de banco. Em sistemas de controle com realimentação em tempo real, mais robustas e múltiplos sensores, como motores de automóveis, controle de voo, usinas nucleares. Em processamentos de sinais onde envolve um grande número de informação a ser processada em curto espaço de tempo. Como áudio, filtros, moldens, radares. E em comunicações de redes com chaveamento e distribuição de informações como telefonia, telecomunicações e internet.

        Os modos de funcionamento dos sistemas embarcados são determinantes para saber como programar o dispositivo e como será seu funcionamento e comportamento na aplicação, podendo ser reativo e controle em tempo real.

  1. 1.2 – PLACA FRDM-KL46Z

As placas Freedom boards são excelentes plataformas para o estudo e aplicações utilizando os micros controladores ARM Cortex-M da NXP. Possuem pinout Arduino, que facilita o acesso aos pinos do microcontrolador e o uso de shields presentes no mercado. Plataforma de baio custo e baixo consumo para desenvolvimento e prototipação rápida com a linha de microcontroladores Kinets.

A placa FRDM-KL46Z é uma plataforma de baixo custo para avaliação dos microcontroladores da série Kinetis L - KL4x, que são microcontroladores ARM Cortex-M0+. O microcontrolador presente nesta placa é o MKL46Z256VLL4, que possui 256 KB de memória flash, 32 KB de memória SRAM, USB OTG (FS), controlador para display LCD de segmentos, e pode operar a até 48 MHz. É repleta de sensores, interfaces de comunicação e outros periféricos. A placa possui um sensor de luz ambiente, um acelerômetro e um magnetômetro. Para interfacear com o usuário, possui 2 leds, dois botões, um touch deslizante capacitivo e um pequeno display de 4 dígitos. Possui ainda uma interface USB device de uso geral e uma outra interface USB para comunicação serial e depuração através do padrão OpenSDA da Freescale. Esta mesma interface USB de depuração é usada para alimentar a placa.

Abaixo pode-se observar na imagem o modelo da placa FRDM-KL46Z.

[pic 3]

Figura 1: Placa FRDM-KL46Z

Para os microcontroladores da linha Kinetis, a Freescale provê gratuitamente e sem limitações o ambiente de desenvolvimento integrado Kinetis Design Studio (KDS).

         Esta prática tem como finalidade implementar software para plataforma Freedom com processor expert e kinetis, a fim de aprender a utilizar nesta plataforma da Freescale utilizando estas ferramentas.

  1. 2 - DESENVOLVIMENTO

        A prática foi feita utilizando os seguintes materiais:

        - 1 PC da bancada com softwares KDS (Kinets Design Studio) e KSDK ( Kinetis Software Development Kit);

        - Placa FRDM-KL4Z.

        Os procedimentos a serem seguidos foram divididos em três etapas onde na primeira seguindo os itens a serem feitos foi configurar a placa para que ligasse ou desligasse o led ao ser pressionado o botão. Desta forma foram configurados as entradas e saídas dos componentes e utilizando a programação dada conforme os passos no Anexo I. Na segunda etapa, continuando os passos do Anexo I foi feita a configuração da placa para que fosse exibido a contagem no display LCD, setando cada pino e seguindo a programação para o componente a ser executado funcione corretamente.

        Na terceira etapa, foi pedido para que se criasse um projeto de um relógio digital que exiba as horas e minutos no display LCD, e controlando por dois botões, um para habilitar o relógio e outro para zerar a contagem. Sendo assim, utilizando o código base das duas etapas anteriores, a configuração da pinagem e dos componentes foi projetado um relógio digital. O código desenvolvido é mostrado logo abaixo juntamente com as principais funções comentadas para melhor entendimento.

/* ###################################################################

**     Filename    : main.c

**     Project     : prati2_2

**     Processor   : MKL46Z256VLL4

**     Version     : Driver 01.01

**     Compiler    : GNU C Compiler

**     Date/Time   : 2018-02-26, 19:31, # CodeGen: 0

**     Abstract    :

**         Main module.

**         This module contains user's application code.

**     Settings    :

**     Contents    :

**         No public methods

**

** ###################################################################*/

/*!

** @file main.c

** @version 01.01

** @brief

**         Main module.

**         This module contains user's application code.

*/        

/*!

**  @addtogroup main_module main module documentation

**  @{

*/        

/* MODULE main */

/* Incluindo módulos/bibliotecas necessárias para compilar o procedimento */

#include "Cpu.h"

#include "Events.h"

#include "clockMan1.h"

#include "pin_init.h"

#include "osa1.h"

#include "display1.h"

#include "gpio1.h"

#if CPU_INIT_CONFIG

  #include "Init_Config.h"

#endif

/* User includes (#include below this line is not maintained by Processor Expert) */

/*lint -save  -e970 Disable MISRA rule (6.3) checking. */

int main(void)

{

  PE_low_level_init();

DEFININDO VARIÁVEIS

  int i = 0; -- contagem dos segundos

  int c = 0; -- contagem dos minutos

  int minuni = 0; -- unidade minutos

  int mindez = 0; -- dezena minutos

  int horauni = 0; -- unidade hora

  int horadez = 0; -- dezena hora

  int estado = 0; -- estado dos botões

  PE_low_level_init();

  //Inicia e configura o LCD no PE

  SLCD_DRV_Init(display1_IDX, &display1_InitConfig0);

  SLCD_DRV_SetAllPinsConfig(display1_IDX, &display1_PinsCfg);

  // Configuração do Backplane conectado to com0-com3

  SLCD_DRV_SetBackPlanePhase(display1_IDX, 40, kSLCDPhaseA);

  SLCD_DRV_SetBackPlanePhase(display1_IDX, 52, kSLCDPhaseB);

  SLCD_DRV_SetBackPlanePhase(display1_IDX, 19, kSLCDPhaseC);

  SLCD_DRV_SetBackPlanePhase(display1_IDX, 18, kSLCDPhaseD);

  // starting the slcd function

  SLCD_DRV_Start(display1_IDX);

  for(;;){

//Se pressionado o botão 1 inicia a contagem do relógio

          if ((GPIO_DRV_ReadPinInput(BUTTON_SW1) == 0)){

                  estado = !estado;

          }

//Se pressionado o botão 2 para a contagem e mostra o relógio no estado atual

          if  (GPIO_DRV_ReadPinInput(BUTTON_SW2) == 0){

                            minuni = 0;

                            mindez = 0;

                            horauni = 0;

                            horadez = 0;

                          SLCD_DispNum(3,minuni);

                          SLCD_DispNum(2,mindez);

                          SLCD_DispDot(3,1);

                          SLCD_DispNum(1,horauni);

                          SLCD_DispNum(0,horadez);

                          estado = 0;

                    }

//se botão 1 pressionado inicia a contagem mostrando 00:00

//lógica do relógio, se i = 59, incrementa c, se c > 59 incrementa unidade de minuto e zera c, quando unidade minuto for > 9 incrementa dezena minuto e zera unidade minuto, quando minuto dezena for maior que 5 incrementa unidade hora, quando unidade hora for maior que 9 incrementa hora dezena e zera unidade hora. Se hora dezena maior ou igual a 2 e unidade hora for maior ou igual a 4, unidade e dezena hora recebem 00.//

          if (estado == 1) {

                  SLCD_DispNum(3,minuni);

                  SLCD_DispNum(2,mindez);

                  SLCD_DispDot(3,1);

                  SLCD_DispNum(1,horauni);

                  SLCD_DispNum(0,horadez);

                  i++;

                  if (i == 500){

                          i = 0;

                          c++;

                          if (c > 59){

                                  c = 0;

                                  minuni++;

                                  if(minuni > 9){

                                          minuni = 0;

                                          mindez++;

                                          if(mindez > 5){

                                                  mindez = 0;

                                                  horauni++;

                                                  if(horauni > 9){

                                                           horauni = 0;

                                                         horadez++;

                                                                 }

                                                            }

                                                    }

                                            }

                                    }

                          if((horadez >= 2)  && (horauni >= 4)){

                                           horadez = 0;

                                           horauni = 0;                                                                                     }

          }

          else {

                  SLCD_DispNum(3,minuni);

                  SLCD_DispNum(2,mindez);

                  SLCD_DispDot(3,1);

                  SLCD_DispNum(1,horauni);

                  SLCD_DispNum(0,horadez);

          }

  }

...

Baixar como (para membros premium)  txt (12.1 Kb)   pdf (622.3 Kb)   docx (1.6 Mb)  
Continuar por mais 13 páginas »
Disponível apenas no TrabalhosGratuitos.com