Punto 2 del TP1: AMI

Dependencies:   mbed

Committer:
Joacolopez22
Date:
Thu May 31 18:37:27 2018 +0000
Revision:
1:4ca7086e337b
Parent:
0:559e1fcef2f4
Punto 2 del TP1: AMI;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Joacolopez22 0:559e1fcef2f4 1 #include "mbed.h"
Joacolopez22 0:559e1fcef2f4 2
Joacolopez22 1:4ca7086e337b 3 // PINOUT //
Joacolopez22 0:559e1fcef2f4 4 AnalogOut salida(PTE30);
Joacolopez22 0:559e1fcef2f4 5 DigitalOut IN (PTC0);
Joacolopez22 0:559e1fcef2f4 6 Ticker temporizador;
Joacolopez22 0:559e1fcef2f4 7
Joacolopez22 1:4ca7086e337b 8 // ENUMS //
Joacolopez22 0:559e1fcef2f4 9 enum {PRE_UNO_POSITIVO, UNO_POSITIVO, PRE_UNO_NEGATIVO, UNO_NEGATIVO};
Joacolopez22 0:559e1fcef2f4 10
Joacolopez22 1:4ca7086e337b 11 // PROTOCOLOS DE FUNCIÓN //
Joacolopez22 1:4ca7086e337b 12 void AMI_Cod(int a);
Joacolopez22 0:559e1fcef2f4 13 void timer (void);
Joacolopez22 0:559e1fcef2f4 14
Joacolopez22 1:4ca7086e337b 15 // VARIABLES //
Joacolopez22 0:559e1fcef2f4 16 int entrada[16]= {0,1,0,1,1,0,1,0,1,1,1,0,1,0,0,1};
Joacolopez22 1:4ca7086e337b 17 int AMI_estado = PRE_UNO_POSITIVO;
Joacolopez22 0:559e1fcef2f4 18 int n=0;
Joacolopez22 0:559e1fcef2f4 19 int timeout = 0;
Joacolopez22 0:559e1fcef2f4 20
Joacolopez22 1:4ca7086e337b 21 // MAIN //
Joacolopez22 0:559e1fcef2f4 22 int main()
Joacolopez22 0:559e1fcef2f4 23 {
Joacolopez22 0:559e1fcef2f4 24 temporizador.attach(&timer,0.001);
Joacolopez22 0:559e1fcef2f4 25 salida = 0.5;
Joacolopez22 0:559e1fcef2f4 26
Joacolopez22 0:559e1fcef2f4 27 while(1) {
Joacolopez22 1:4ca7086e337b 28 AMI_Cod(entrada[n]);
Joacolopez22 0:559e1fcef2f4 29 }
Joacolopez22 0:559e1fcef2f4 30 }
Joacolopez22 0:559e1fcef2f4 31
Joacolopez22 1:4ca7086e337b 32 // FUNCIONES //
Joacolopez22 1:4ca7086e337b 33 void AMI_Cod(int a)
Joacolopez22 0:559e1fcef2f4 34 {
Joacolopez22 1:4ca7086e337b 35 if (n == 17) {
Joacolopez22 0:559e1fcef2f4 36 salida = 0.5;
Joacolopez22 0:559e1fcef2f4 37 return;
Joacolopez22 0:559e1fcef2f4 38 }
Joacolopez22 0:559e1fcef2f4 39 if(timeout > 0) {
Joacolopez22 0:559e1fcef2f4 40 return;
Joacolopez22 0:559e1fcef2f4 41 }
Joacolopez22 0:559e1fcef2f4 42 IN = entrada[n];
Joacolopez22 0:559e1fcef2f4 43
Joacolopez22 1:4ca7086e337b 44 switch(AMI_estado) {
Joacolopez22 0:559e1fcef2f4 45 default:
Joacolopez22 0:559e1fcef2f4 46 case PRE_UNO_POSITIVO:
Joacolopez22 0:559e1fcef2f4 47 salida = 0.5;
Joacolopez22 0:559e1fcef2f4 48 if(a == 1) {
Joacolopez22 1:4ca7086e337b 49 AMI_estado = UNO_POSITIVO;
Joacolopez22 0:559e1fcef2f4 50 }
Joacolopez22 0:559e1fcef2f4 51 break;
Joacolopez22 0:559e1fcef2f4 52 case UNO_POSITIVO:
Joacolopez22 0:559e1fcef2f4 53 salida = 1;
Joacolopez22 0:559e1fcef2f4 54 if (a == 1) {
Joacolopez22 1:4ca7086e337b 55 AMI_estado = UNO_NEGATIVO;
Joacolopez22 0:559e1fcef2f4 56 }
Joacolopez22 0:559e1fcef2f4 57 if (a == 0) {
Joacolopez22 1:4ca7086e337b 58 AMI_estado = PRE_UNO_NEGATIVO;
Joacolopez22 0:559e1fcef2f4 59 }
Joacolopez22 0:559e1fcef2f4 60 break;
Joacolopez22 0:559e1fcef2f4 61 case UNO_NEGATIVO:
Joacolopez22 0:559e1fcef2f4 62 salida = 0;
Joacolopez22 0:559e1fcef2f4 63 if (a == 1) {
Joacolopez22 1:4ca7086e337b 64 AMI_estado = UNO_POSITIVO;
Joacolopez22 0:559e1fcef2f4 65 }
Joacolopez22 0:559e1fcef2f4 66 if (a == 0) {
Joacolopez22 1:4ca7086e337b 67 AMI_estado = PRE_UNO_POSITIVO;
Joacolopez22 0:559e1fcef2f4 68 }
Joacolopez22 0:559e1fcef2f4 69 break;
Joacolopez22 0:559e1fcef2f4 70 case PRE_UNO_NEGATIVO:
Joacolopez22 0:559e1fcef2f4 71 salida = 0.5;
Joacolopez22 0:559e1fcef2f4 72 if (a == 1) {
Joacolopez22 1:4ca7086e337b 73 AMI_estado = UNO_NEGATIVO;
Joacolopez22 0:559e1fcef2f4 74 }
Joacolopez22 0:559e1fcef2f4 75 break;
Joacolopez22 0:559e1fcef2f4 76 }
Joacolopez22 0:559e1fcef2f4 77 timeout = 100;
Joacolopez22 0:559e1fcef2f4 78 n++;
Joacolopez22 0:559e1fcef2f4 79 }
Joacolopez22 0:559e1fcef2f4 80
Joacolopez22 0:559e1fcef2f4 81 void timer (void)
Joacolopez22 0:559e1fcef2f4 82 {
Joacolopez22 0:559e1fcef2f4 83 if (timeout >0)
Joacolopez22 0:559e1fcef2f4 84 timeout--;
Joacolopez22 0:559e1fcef2f4 85 }
Joacolopez22 0:559e1fcef2f4 86