programa de torreta

Dependencies:   mbed

Committer:
Antulius
Date:
Fri Sep 20 20:46:16 2019 +0000
Revision:
0:583269628e14
programa de torrete

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Antulius 0:583269628e14 1 /* #############################################################################
Antulius 0:583269628e14 2 ** Archivo : main.c
Antulius 0:583269628e14 3 ** Proyecto : STM32-F103C8_Torreta
Antulius 0:583269628e14 4 ** Procesador : STM32F103C8T6
Antulius 0:583269628e14 5 ** Plataforma : Blue Pill
Antulius 0:583269628e14 6 ** Herramienta : Mbed Compiler
Antulius 0:583269628e14 7 ** Version : Driver 01.01
Antulius 0:583269628e14 8 ** Compilador : GNU C Compiler
Antulius 0:583269628e14 9 ** Fecha/Hora : 14-07-2015, 11:48, # CodeGen: 0
Antulius 0:583269628e14 10 ** Descripción :
Antulius 0:583269628e14 11 ** Este proyecto hace...
Antulius 0:583269628e14 12 ** This module contains user's application code.
Antulius 0:583269628e14 13 ** Componentes : GPIO, Timer, etc .
Antulius 0:583269628e14 14 ** Configuraciones : Includes, Stacks y Drivers externos
Antulius 0:583269628e14 15 ** Autores :
Antulius 0:583269628e14 16 ** ATEAM Development Group:
Antulius 0:583269628e14 17 ** - Antulio Morgado Valle
Antulius 0:583269628e14 18 **
Antulius 0:583269628e14 19 ** Versión : Beta
Antulius 0:583269628e14 20 ** Revisión : A
Antulius 0:583269628e14 21 ** Release : 0
Antulius 0:583269628e14 22 ** Bugs & Fixes :
Antulius 0:583269628e14 23 ** Date : 20/10/2019
Antulius 0:583269628e14 24 ** Added support for Led_RGB
Antulius 0:583269628e14 25 ** 22/09/2018
Antulius 0:583269628e14 26 ** Added LCD Menu, Beta version (with bugs)
Antulius 0:583269628e14 27 **
Antulius 0:583269628e14 28 ** ###########################################################################*/
Antulius 0:583269628e14 29 /*
Antulius 0:583269628e14 30 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Antulius 0:583269628e14 31 : Includes
Antulius 0:583269628e14 32 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Antulius 0:583269628e14 33 */
Antulius 0:583269628e14 34 #include "stm32f103c8t6.h"
Antulius 0:583269628e14 35 #include "mbed.h"
Antulius 0:583269628e14 36 /*
Antulius 0:583269628e14 37 :...............................................................................
Antulius 0:583269628e14 38 : Definiciones
Antulius 0:583269628e14 39 :...............................................................................
Antulius 0:583269628e14 40 */
Antulius 0:583269628e14 41 #define Ticker_Rate 1000 // Periodo de interrupción (us)
Antulius 0:583269628e14 42 /*
Antulius 0:583269628e14 43 +-------------------------------------------------------------------------------
Antulius 0:583269628e14 44 | Configuración de Puertos
Antulius 0:583269628e14 45 +-------------------------------------------------------------------------------
Antulius 0:583269628e14 46 */
Antulius 0:583269628e14 47 Ticker Barrido; // Interrupción del Timer
Antulius 0:583269628e14 48 //BusOut Torreta(D0,D1,D2,D3,D4,D5,D6,D7); // Utilizando las definiciones Arduino
Antulius 0:583269628e14 49 BusOut Torreta(PB_4,PB_3,PA_15,PA_12,PA_11,PA_10,PA_9,PA_8); //
Antulius 0:583269628e14 50 DigitalOut Led_Monitor (LED1); // Led monitor de la Tarjeta STM32F103C8
Antulius 0:583269628e14 51 //PwmOut Buzzer(PB_1); // PB1_TIM3_CH4N
Antulius 0:583269628e14 52 /*
Antulius 0:583269628e14 53 +-------------------------------------------------------------------------------
Antulius 0:583269628e14 54 | Variables Globales de Usuario
Antulius 0:583269628e14 55 +-------------------------------------------------------------------------------
Antulius 0:583269628e14 56 */
Antulius 0:583269628e14 57 uint8_t Secuencias[]={
Antulius 0:583269628e14 58 0x03, 0x03, 0xC0, 0xC0, 0x03, 0x03, 0xC0, 0xC0, // 8
Antulius 0:583269628e14 59 0x03, 0x03, 0xC0, 0xC0, 0x03, 0x03, 0xC0, 0xC0, // 16
Antulius 0:583269628e14 60 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, // 24
Antulius 0:583269628e14 61 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, // 32
Antulius 0:583269628e14 62 0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, 0xC0, 0xC0, // 40
Antulius 0:583269628e14 63 0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, 0xC0, 0x00, // 48
Antulius 0:583269628e14 64 0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, 0xC0, 0x00, // 56
Antulius 0:583269628e14 65 0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, 0xC0, 0x00, // 64
Antulius 0:583269628e14 66 0x07, 0x08, 0x13, 0x20, 0xC0, 0x20, 0xC8, 0x04, // 72
Antulius 0:583269628e14 67 0x07, 0x08, 0x13, 0x20, 0xC0, 0x20, 0xC8, 0x04, // 80
Antulius 0:583269628e14 68 0x07, 0x0B, 0xD0, 0xE0, 0x07, 0x0B, 0xD0, 0xE0, // 88
Antulius 0:583269628e14 69 0x07, 0x0B, 0xD0, 0xE0, 0x07, 0x0B, 0xD0, 0xE0, // 96
Antulius 0:583269628e14 70 0x23, 0x13, 0xC8, 0xC4, 0x23, 0x13, 0xC8, 0xC4, // 104
Antulius 0:583269628e14 71 0x23, 0x13, 0xC8, 0xC4, 0x23, 0x13, 0xC8, 0xC4, // 112
Antulius 0:583269628e14 72 0x23, 0x10, 0xC8, 0x04, 0x23, 0x10, 0xC8, 0x04, // 120
Antulius 0:583269628e14 73 0x23, 0x10, 0xC8, 0x04, 0x23, 0x10, 0xC8, 0x04, // 128
Antulius 0:583269628e14 74 0x07, 0x43, 0xD0, 0xC4, 0x07, 0x43, 0xD0, 0xC4, // 136
Antulius 0:583269628e14 75 0x07, 0x43, 0xD0, 0xC4, 0x07, 0x43, 0xD0, 0xC4, // 144
Antulius 0:583269628e14 76
Antulius 0:583269628e14 77 0x03, 0x04, 0x08, 0x10, 0x20, 0xC0, 0x20, 0x10, // 152
Antulius 0:583269628e14 78 0x08, 0x04, 0x03, 0x04, 0x08, 0x10, 0x20, 0xC0, // 160
Antulius 0:583269628e14 79 0x20, 0x10, 0x08, 0x04, 0x03, 0x04, 0x08, 0x10, // 168
Antulius 0:583269628e14 80 0x20, 0xC0, 0x20, 0x10, 0x08, 0x04, 0x03, 0x04, // 176
Antulius 0:583269628e14 81 0x08, 0x10, 0x20, 0xC0, 0x20, 0x10, 0x08, 0x04, // 184
Antulius 0:583269628e14 82
Antulius 0:583269628e14 83 0x03, 0x18, 0xC0, 0x3C, 0x03, 0x24, 0xC0, 0x3C, // 192
Antulius 0:583269628e14 84
Antulius 0:583269628e14 85 0x04, 0x08, 0x10, 0x20, 0x04, 0x08, 0x10, 0x20, // 200
Antulius 0:583269628e14 86 0x04, 0x08, 0x10, 0x20, 0x04, 0x08, 0x10, 0x20, // 208
Antulius 0:583269628e14 87 0x20, 0x10, 0x08, 0x04, 0x20, 0x10, 0x08, 0x04, // 216
Antulius 0:583269628e14 88 0x20, 0x10, 0x08, 0x04, 0x20, 0x10, 0x08, 0x04, // 224
Antulius 0:583269628e14 89 0x03, 0x04, 0x03, 0x08, 0x03, 0x10, 0x03, 0x20, // 232
Antulius 0:583269628e14 90 0x03, 0x04, 0x03, 0x08, 0x03, 0x10, 0x03, 0x20, // 240
Antulius 0:583269628e14 91 0xC0, 0x20, 0xC0, 0x10, 0xC0, 0x08, 0xC0, 0x04, // 248
Antulius 0:583269628e14 92 0xC0, 0x20, 0xC0, 0x10, 0xC0, 0x08, 0xC0, 0x04, // 256
Antulius 0:583269628e14 93 0x04, 0x08, 0x10, 0x20, 0x20, 0x10, 0x08, 0x04, // 264
Antulius 0:583269628e14 94 0x04, 0x08, 0x10, 0x20, 0x20, 0x10, 0x08, 0x04, // 272
Antulius 0:583269628e14 95 0x88, 0x44, 0x11, 0x22, 0x88, 0x44, 0x22, 0x11, // 280
Antulius 0:583269628e14 96 0x88, 0x44, 0x11, 0x22, 0x88, 0x44, 0x22, 0x11, // 288
Antulius 0:583269628e14 97 0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88, // 296
Antulius 0:583269628e14 98 0x11, 0x22, 0x44, 0x88, 0x11, 0x22, 0x44, 0x88, // 304
Antulius 0:583269628e14 99 0x18, 0x24, 0x18, 0x24, 0x18, 0x24, 0x18, 0x24, // 312
Antulius 0:583269628e14 100 0x18, 0x24, 0x18, 0x24, 0x18, 0x24, 0x18, 0x24, // 320
Antulius 0:583269628e14 101 0x18, 0x81, 0x3C, 0xC3, 0x24, 0x42, 0x0F, 0xF0, // 328
Antulius 0:583269628e14 102 0x18, 0x81, 0x3C, 0xC3, 0x24, 0x42, 0x0F, 0xF0, // 336
Antulius 0:583269628e14 103 0x18, 0xC3, 0x24, 0xC3, 0x18, 0xC3, 0x24, 0xC3, // 344
Antulius 0:583269628e14 104 0x18, 0xC3, 0x24, 0xC3, 0x18, 0xC3, 0x24, 0xC3, // 352
Antulius 0:583269628e14 105 0x20, 0x30, 0x10, 0x18, 0x08, 0x0C, 0x04, 0x03, // 360
Antulius 0:583269628e14 106 0x04, 0x0C, 0x08, 0x18, 0x10, 0x30, 0x20, 0xC0, // 368
Antulius 0:583269628e14 107 0x20, 0x30, 0x10, 0x18, 0x08, 0x0C, 0x04, 0x03, // 376
Antulius 0:583269628e14 108 0x04, 0x0C, 0x08, 0x18, 0x10, 0x30, 0x20, 0xC0, // 384
Antulius 0:583269628e14 109 0x81, 0x81, 0x7E, 0x7E, 0x81, 0x81, 0x7E, 0x7E, // 392
Antulius 0:583269628e14 110 0x81, 0x7E, 0x81, 0x7E, 0x81, 0x7E, 0x7E, 0x81, // 400
Antulius 0:583269628e14 111 0x81, 0x00, 0x81, 0x00, 0x7E, 0x00, 0x7E, 0x00, // 408
Antulius 0:583269628e14 112 0x81, 0x00, 0x81, 0x00, 0x7E, 0x00, 0x7E, 0x00, // 416
Antulius 0:583269628e14 113 0x80, 0x00, 0x01, 0x00, 0x7E, 0x00, 0x7E, 0x00, // 424
Antulius 0:583269628e14 114 0x80, 0x00, 0x01, 0x00, 0x7E, 0x00, 0x7E, 0x00, // 432
Antulius 0:583269628e14 115
Antulius 0:583269628e14 116 0x33, 0xCC, 0x33, 0xCC, 0x33, 0xCC, 0x33, 0xCC, // 440
Antulius 0:583269628e14 117 0x03, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0xC0, 0x3C, // 448
Antulius 0:583269628e14 118 0x03, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0xC0, 0x3C, // 456
Antulius 0:583269628e14 119 0x3C, 0x00, 0xC3, 0x00, 0x3C, 0x00, 0xC3, 0x00, // 464
Antulius 0:583269628e14 120 0x3C, 0x00, 0xC3, 0x00, 0x3C, 0x00, 0xC3, 0x00, // 472
Antulius 0:583269628e14 121 0x3C, 0x3C, 0x00, 0x00, 0x3C, 0x3C, 0x00, 0x00, // 480
Antulius 0:583269628e14 122 0x3C, 0x3C, 0x00, 0x00, 0x3C, 0x3C, 0x00, 0x00, // 488
Antulius 0:583269628e14 123 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, // 496
Antulius 0:583269628e14 124 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, 0x00, // 504
Antulius 0:583269628e14 125 0xC3, 0x3C, 0xC3, 0x3C, 0xC3, 0x3C, 0xC3, 0x3C, // 512
Antulius 0:583269628e14 126 0xC3, 0x3C, 0xC3, 0x3C, 0xC3, 0x3C, 0xC3, 0x3C, // 520
Antulius 0:583269628e14 127 0xC0, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0x03, 0x3C, // 528
Antulius 0:583269628e14 128 0xC0, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0x03, 0x3C, // 536
Antulius 0:583269628e14 129 0xC0, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0x03, 0x3C, // 544
Antulius 0:583269628e14 130 0xC0, 0x3C, 0x03, 0x3C, 0xC0, 0x3C, 0x03, 0x3C, // 552
Antulius 0:583269628e14 131 0x00, 0x28, 0x00, 0x14, 0x00, 0x28, 0x00, 0x14, // 560
Antulius 0:583269628e14 132 0x00, 0x28, 0x00, 0x14, 0x00, 0x28, 0x00, 0x14, // 568
Antulius 0:583269628e14 133 0xC0, 0xF0, 0x30, 0x0C, 0x0F, 0xC0, 0xF0, 0x30, // 576
Antulius 0:583269628e14 134 0x0C, 0x0F, 0xC0, 0xF0, 0x30, 0x0C, 0x0F, 0x03, // 584
Antulius 0:583269628e14 135 0x03, 0x0F, 0x0C, 0x30, 0xF0, 0xC0, 0x0F, 0x0C, // 592
Antulius 0:583269628e14 136 0x30, 0xF0, 0xC0, 0x0F, 0x0C, 0x30, 0xF0, 0xC0, // 600
Antulius 0:583269628e14 137 0x00, 0xC0, 0xF0, 0x30, 0x3C, 0x0C, 0x0F, 0x03, // 608
Antulius 0:583269628e14 138 0x00, 0xC0, 0xF0, 0x30, 0x3C, 0x0C, 0x0F, 0x03, // 616
Antulius 0:583269628e14 139 0x00, 0x03, 0x0F, 0x0C, 0x3C, 0x30, 0xF0, 0xC0, // 624
Antulius 0:583269628e14 140 0x00, 0x03, 0x0F, 0x0C, 0x3C, 0x30, 0xF0, 0xC0, // 632
Antulius 0:583269628e14 141 0x00, 0xC0, 0xF0, 0x30, 0x3C, 0x0C, 0x0F, 0x03, // 640
Antulius 0:583269628e14 142 0x00, 0xC0, 0xF0, 0x30, 0x3C, 0x0C, 0x0F, 0x03, // 648
Antulius 0:583269628e14 143 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xF0, // 656
Antulius 0:583269628e14 144 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xF0, // 674
Antulius 0:583269628e14 145 0x00, 0xF0, 0x00, 0x0F, 0x00, 0xF0, 0x00, 0x0F, // 682
Antulius 0:583269628e14 146 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFF };
Antulius 0:583269628e14 147
Antulius 0:583269628e14 148 uint16_t No_Secuencias=689; // Número de secuencias a desplegar
Antulius 0:583269628e14 149 uint16_t i=0; // Indice para las secuencias
Antulius 0:583269628e14 150 uint16_t delay=250; // Tiempo de retardo entre secuencias (en ms)
Antulius 0:583269628e14 151 uint16_t contador=0; // Contador de mili segundos
Antulius 0:583269628e14 152
Antulius 0:583269628e14 153 /* END Global Variables */
Antulius 0:583269628e14 154 /*
Antulius 0:583269628e14 155 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Antulius 0:583269628e14 156 | Definición de Funciones Prototipo y Rutinas de los Vectores de Interrupción
Antulius 0:583269628e14 157 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Antulius 0:583269628e14 158 */
Antulius 0:583269628e14 159 void Barrido_OnInterrupt(void);
Antulius 0:583269628e14 160
Antulius 0:583269628e14 161 /*
Antulius 0:583269628e14 162 #===============================================================================
Antulius 0:583269628e14 163 |
Antulius 0:583269628e14 164 | P R O G R A M A P R I N C I P A L
Antulius 0:583269628e14 165 |
Antulius 0:583269628e14 166 #===============================================================================
Antulius 0:583269628e14 167 */
Antulius 0:583269628e14 168 int main()
Antulius 0:583269628e14 169 { // Inicialización de variables locales, puertos e interrupciones van aquí !!!
Antulius 0:583269628e14 170 confSysClock(); // Inicialización del Sistema,
Antulius 0:583269628e14 171 Barrido.attach_us(&Barrido_OnInterrupt, Ticker_Rate); // Periodo de la Interrupción por Timer = 1ms (Tcker_Rate=1000)
Antulius 0:583269628e14 172
Antulius 0:583269628e14 173 while (true) // El Lazo del Programa principal está aquí !!!
Antulius 0:583269628e14 174 {
Antulius 0:583269628e14 175 //El Programa principal no hace nada !!!
Antulius 0:583269628e14 176 }
Antulius 0:583269628e14 177 }
Antulius 0:583269628e14 178 /* END main */
Antulius 0:583269628e14 179
Antulius 0:583269628e14 180 /*
Antulius 0:583269628e14 181 ................................................................................
Antulius 0:583269628e14 182 : Rutinas de los Vectores de Interrupción
Antulius 0:583269628e14 183 ................................................................................
Antulius 0:583269628e14 184 */
Antulius 0:583269628e14 185 void Barrido_OnInterrupt()
Antulius 0:583269628e14 186 {
Antulius 0:583269628e14 187 /* Rutina de Atención a la Interrupción */
Antulius 0:583269628e14 188 /* Write your code here ... */
Antulius 0:583269628e14 189
Antulius 0:583269628e14 190 contador++; // Incremeta el contador de mili segundos
Antulius 0:583269628e14 191 if (contador == delay) // Contador es igual al retardo programado?
Antulius 0:583269628e14 192 {
Antulius 0:583269628e14 193 Torreta=Secuencias[i]; // Escribe la secuencia
Antulius 0:583269628e14 194 i++; // Incrementa el índice
Antulius 0:583269628e14 195 if (i >= No_Secuencias) i=0; // Es la última secuencia?
Antulius 0:583269628e14 196 contador =0; // Reinicia contador de retardo
Antulius 0:583269628e14 197 Led_Monitor = !Led_Monitor; // Parpadeo del Led Monitor
Antulius 0:583269628e14 198 }
Antulius 0:583269628e14 199 }
Antulius 0:583269628e14 200 /* END Events */
Antulius 0:583269628e14 201
Antulius 0:583269628e14 202
Antulius 0:583269628e14 203 /*
Antulius 0:583269628e14 204 ________________________________________________________________________________
Antulius 0:583269628e14 205 |
Antulius 0:583269628e14 206 | Funciones Prototipo
Antulius 0:583269628e14 207 |_______________________________________________________________________________
Antulius 0:583269628e14 208 */
Antulius 0:583269628e14 209 // Las Funciones Prototipo van aquí !
Antulius 0:583269628e14 210 //void confSysClock(void); // Configure system clock (72MHz HSE clock, 48MHz USB clock)
Antulius 0:583269628e14 211
Antulius 0:583269628e14 212 /* END functions */
Antulius 0:583269628e14 213
Antulius 0:583269628e14 214 /* END program */
Antulius 0:583269628e14 215
Antulius 0:583269628e14 216 /*+-----------------------------------------------------------------------------
Antulius 0:583269628e14 217 *+ La documentación va aquí!:
Antulius 0:583269628e14 218 +--------------------------------------------------------------------------------
Antulius 0:583269628e14 219 | EJERCICIO
Antulius 0:583269628e14 220 |
Antulius 0:583269628e14 221 | 1.- Modificar este programa para:
Antulius 0:583269628e14 222 | a) Agregar más secuencias (mínimo 32).
Antulius 0:583269628e14 223 | b) Realizar el barrido del arreglo de atrás hacia adelante y repetir
Antulius 0:583269628e14 224 | 2.- Modificar el programa para incluir secuencias de sonidos utiliando el
Antulius 0:583269628e14 225 | módulo PWM (Sirena).
Antulius 0:583269628e14 226 |
Antulius 0:583269628e14 227 +--------------------------------------------------------------------------------
Antulius 0:583269628e14 228 |
Antulius 0:583269628e14 229 | EXAMEN
Antulius 0:583269628e14 230 |
Antulius 0:583269628e14 231 | 1.- Modificar el programa para que despliegue un rango de secuencias
Antulius 0:583269628e14 232 | determinado.
Antulius 0:583269628e14 233 | 2.- Modificar el programa para incluir un menú de selección de secuencias.
Antulius 0:583269628e14 234 | a) Para la Torreta
Antulius 0:583269628e14 235 | b) Para la Sirena
Antulius 0:583269628e14 236 | c) Combinados
Antulius 0:583269628e14 237 | 3.- Volver a realizar éste programa utilizando tambien con apuntadores.
Antulius 0:583269628e14 238 |
Antulius 0:583269628e14 239 | Mucha Suerte!
Antulius 0:583269628e14 240 |
Antulius 0:583269628e14 241 *+----------------------------------------------------------------------------*
Antulius 0:583269628e14 242 *+
Antulius 0:583269628e14 243 *+ Powered by
Antulius 0:583269628e14 244 *+
Antulius 0:583269628e14 245 *+ T H E A N T U L I U ' S T E A M R&D Unltd
Antulius 0:583269628e14 246 *+
Antulius 0:583269628e14 247 *+ Research, Development, Systems, Equipment, Support & Spare Parts.
Antulius 0:583269628e14 248 *+ (C) Copyright 1989-2019, All Rights Reserved
Antulius 0:583269628e14 249 *+
Antulius 0:583269628e14 250 *+ Welcome to The Beaners Proyect Community!
Antulius 0:583269628e14 251 *+----------------------------------------------------------------------------*/
Antulius 0:583269628e14 252
Antulius 0:583269628e14 253 /* END Mbed */