FRDM-KL46Z_Torreta Es un ejemplo del uso de arreglos para simular la secuencias de una torreta de patrulla

Dependencies:   mbed

main.cpp

Committer:
Antulius
Date:
2019-06-26
Revision:
0:d0bd42a86870

File content as of revision 0:d0bd42a86870:

/* ###########################################################################
**    Archivo        : main.c
**    Proyecto       : FRDM-KL46z_Torreta
**    Procesador     : MKL46Z256VLL4
**    Herramienta    : Mbed
**    Version        : Driver 01.01
**    Compilador     : GNU C Compiler
**    Fecha/Hora     : 14-07-2015, 11:48, # CodeGen: 0
**    Descripción    :
**         Este proyecto hace...
**         This module contains user's application code.
**   Componentes     : GPIO, Timer, etc .
**   Configuraciones : Includes, Stacks y Drivers externos
**   Autores         :
**         ATEAM Development Group
**          - Antulio Morgado Valle
**
**   Versión        : Beta
**   Revisión       : A
**   Release        : 0
**   Bugs & Fixes   :
**   Date           : 20/10/2019
**                    Added support for Led_RGB
**                    22/09/2018 
**                    Added LCD Menu, Beta version (with bugs)
**
** ###########################################################################*/
/*
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:  Includes
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
*/

#include "mbed.h"
/*
:...............................................................................
:  Definiciones
:...............................................................................
*/
#define Ticker_Rate     1000            // Periodo de interrupción (us)
/*
+-------------------------------------------------------------------------------
|   Configuración de Puertos 
+-------------------------------------------------------------------------------
*/
Ticker Barrido;                             // Interrupción del Timer
BusOut Torreta(PTE16, PTE17, PTE18, PTE19, PTE20, PTE21, PTE22, PTE23);

/*
+-------------------------------------------------------------------------------
|   Variables Globales de Usuario 
+-------------------------------------------------------------------------------
*/
uint8_t Secuencias[]={
        0x03, 0x03, 0xC0, 0xC0, 0x03, 0x03, 0xC0, 0xC0,
        0x03, 0x03, 0xC0, 0xC0, 0x03, 0x03, 0xC0, 0xC0, 
        0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0,
        0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0,
        0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, 0xC0, 0x00,
        0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, 0xC0, 0x00,
        0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, 0xC0, 0x00,
        0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, 0xC0, 0x00,
        0x18, 0x24, 0x18, 0x24, 0x18, 0x24, 0x18, 0x24,
        0x18, 0x24, 0x18, 0x24, 0x18, 0x24, 0x18, 0x24,
        0x04, 0x08, 0x10, 0x20, 0x04, 0x08, 0x10, 0x20,
        0x04, 0x08, 0x10, 0x20, 0x04, 0x08, 0x10, 0x20,
        0x20, 0x10, 0x08, 0x04, 0x20, 0x10, 0x08, 0x04,
        0x20, 0x10, 0x08, 0x04, 0x20, 0x10, 0x08, 0x04,
        0x04, 0x08, 0x10, 0x20, 0x20, 0x10, 0x08, 0x04,
        0x04, 0x08, 0x10, 0x20, 0x20, 0x10, 0x08, 0x04,
        0x88, 0x44, 0x11, 0x22, 0x88, 0x44, 0x22, 0x11,
        0x88, 0x44, 0x11, 0x22, 0x88, 0x44, 0x22, 0x11,
        0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88,
        0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88,
        0x3C, 0x00, 0xC3, 0x00, 0x3C, 0x00, 0xC3, 0x00,
        0x3C, 0x00, 0xC3, 0x00, 0x3C, 0x00, 0xC3, 0x00,
        0x3C, 0x3C, 0x00, 0x00, 0x3C, 0x3C, 0x00, 0x00,
        0x3C, 0x3C, 0x00, 0x00, 0x3C, 0x3C, 0x00, 0x00,
        0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00,
        0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00,
        0xC3, 0x3C, 0xC3, 0x3C, 0xC3, 0x3C, 0xC3, 0x3C,
        0xC3, 0x3C, 0xC3, 0x3C, 0xC3, 0x3C, 0xC3, 0x3C,
        0xC0, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0x03, 0x3C,
        0xC0, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0x03, 0x3C,
        0xF0, 0x30, 0x0C, 0x0F, 0x0C, 0x30, 0xF0, 0xC0,
        0xF0, 0x30, 0x0C, 0x0F, 0x0C, 0x30, 0xF0, 0xC0,
        0x00, 0xC0, 0xF0, 0x30, 0x3C, 0x0C, 0x0F, 0x03,
        0x00, 0xC0, 0xF0, 0x30, 0x3C, 0x0C, 0x0F, 0x03,
        0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xF0,
        0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xF0,
        0x00, 0xF0, 0x00, 0x0F, 0x00, 0xF0, 0x00, 0x0F,
        0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF };

uint16_t No_Secuencias=304;     // Número de secuencias a desplegar
uint16_t i=0;                   // Indice para las secuencias
uint16_t delay=250;             // Tiempo de retardo entre secuencias (en ms)
uint16_t contador=0;            // Contador de mili segundos

/*
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|   Definición de Vectores de Interrupción
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
*/
void Barrido_OnInterrupt(void)
{
    /* Rutina de Atención a la Interrupción */
    /* Write your code here ... */
    
    contador++;                     // Incremeta el contador de mili segundos
    if (contador == delay)          // Contador es igual al retardo programado?
    {
    Torreta=Secuencias[i];          // Escribe la secuencia
    i++;                            // Incrementa el índice
    if (i >= No_Secuencias) i=0;    // Es la última secuencia?
    contador =0;                    // Reinicia contador de retardo
    }
}
/* END Events */

/*
________________________________________________________________________________
+
+   Funciones Prototipo
+_______________________________________________________________________________
*/

/*
#===============================================================================
|
|               P R O G R A M A     P R I N C I P A L
|
#=============================================================================== 
*/
int main()
{
  Barrido.attach_us(&Barrido_OnInterrupt,Ticker_Rate);   // Periodo de interrupción de 1 ms (Ticker_Rate=1000)
    while (true) 
    {
                                //El Programa principal no hace nada !!!
    }
}