Punto 2 del TP1: AMI

Dependencies:   mbed

Committer:
Joacolopez22
Date:
Thu May 31 14:10:20 2018 +0000
Revision:
0:559e1fcef2f4
Child:
1:4ca7086e337b
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 0:559e1fcef2f4 3 AnalogOut salida(PTE30);
Joacolopez22 0:559e1fcef2f4 4 DigitalOut IN (PTC0);
Joacolopez22 0:559e1fcef2f4 5 Ticker temporizador;
Joacolopez22 0:559e1fcef2f4 6
Joacolopez22 0:559e1fcef2f4 7 enum {PRE_UNO_POSITIVO, UNO_POSITIVO, PRE_UNO_NEGATIVO, UNO_NEGATIVO};
Joacolopez22 0:559e1fcef2f4 8
Joacolopez22 0:559e1fcef2f4 9 void maq_AMI(int a);
Joacolopez22 0:559e1fcef2f4 10 void timer (void);
Joacolopez22 0:559e1fcef2f4 11
Joacolopez22 0:559e1fcef2f4 12 int entrada[16]= {0,1,0,1,1,0,1,0,1,1,1,0,1,0,0,1};
Joacolopez22 0:559e1fcef2f4 13 int estado = PRE_UNO_POSITIVO;
Joacolopez22 0:559e1fcef2f4 14 int n=0;
Joacolopez22 0:559e1fcef2f4 15 int timeout = 0;
Joacolopez22 0:559e1fcef2f4 16
Joacolopez22 0:559e1fcef2f4 17 int main()
Joacolopez22 0:559e1fcef2f4 18 {
Joacolopez22 0:559e1fcef2f4 19 temporizador.attach(&timer,0.001);
Joacolopez22 0:559e1fcef2f4 20 salida = 0.5;
Joacolopez22 0:559e1fcef2f4 21
Joacolopez22 0:559e1fcef2f4 22 while(1) {
Joacolopez22 0:559e1fcef2f4 23 maq_AMI(entrada[n]);
Joacolopez22 0:559e1fcef2f4 24 }
Joacolopez22 0:559e1fcef2f4 25 }
Joacolopez22 0:559e1fcef2f4 26
Joacolopez22 0:559e1fcef2f4 27 void maq_AMI(int a)
Joacolopez22 0:559e1fcef2f4 28 {
Joacolopez22 0:559e1fcef2f4 29 if (n == 18) {
Joacolopez22 0:559e1fcef2f4 30 salida = 0.5;
Joacolopez22 0:559e1fcef2f4 31 return;
Joacolopez22 0:559e1fcef2f4 32 }
Joacolopez22 0:559e1fcef2f4 33 if(timeout > 0) {
Joacolopez22 0:559e1fcef2f4 34 return;
Joacolopez22 0:559e1fcef2f4 35 }
Joacolopez22 0:559e1fcef2f4 36 IN = entrada[n];
Joacolopez22 0:559e1fcef2f4 37
Joacolopez22 0:559e1fcef2f4 38 switch(estado) {
Joacolopez22 0:559e1fcef2f4 39 default:
Joacolopez22 0:559e1fcef2f4 40 case PRE_UNO_POSITIVO:
Joacolopez22 0:559e1fcef2f4 41 salida = 0.5;
Joacolopez22 0:559e1fcef2f4 42 if(a == 1) {
Joacolopez22 0:559e1fcef2f4 43 estado = UNO_POSITIVO;
Joacolopez22 0:559e1fcef2f4 44 }
Joacolopez22 0:559e1fcef2f4 45 break;
Joacolopez22 0:559e1fcef2f4 46 case UNO_POSITIVO:
Joacolopez22 0:559e1fcef2f4 47 salida = 1;
Joacolopez22 0:559e1fcef2f4 48 if (a == 1) {
Joacolopez22 0:559e1fcef2f4 49 estado = UNO_NEGATIVO;
Joacolopez22 0:559e1fcef2f4 50 }
Joacolopez22 0:559e1fcef2f4 51 if (a == 0) {
Joacolopez22 0:559e1fcef2f4 52 estado = PRE_UNO_NEGATIVO;
Joacolopez22 0:559e1fcef2f4 53 }
Joacolopez22 0:559e1fcef2f4 54 break;
Joacolopez22 0:559e1fcef2f4 55 case UNO_NEGATIVO:
Joacolopez22 0:559e1fcef2f4 56 salida = 0;
Joacolopez22 0:559e1fcef2f4 57 if (a == 1) {
Joacolopez22 0:559e1fcef2f4 58 estado = UNO_POSITIVO;
Joacolopez22 0:559e1fcef2f4 59 }
Joacolopez22 0:559e1fcef2f4 60 if (a == 0) {
Joacolopez22 0:559e1fcef2f4 61 estado = PRE_UNO_POSITIVO;
Joacolopez22 0:559e1fcef2f4 62 }
Joacolopez22 0:559e1fcef2f4 63 break;
Joacolopez22 0:559e1fcef2f4 64 case PRE_UNO_NEGATIVO:
Joacolopez22 0:559e1fcef2f4 65 salida = 0.5;
Joacolopez22 0:559e1fcef2f4 66 if (a == 1) {
Joacolopez22 0:559e1fcef2f4 67 estado = UNO_NEGATIVO;
Joacolopez22 0:559e1fcef2f4 68 }
Joacolopez22 0:559e1fcef2f4 69 break;
Joacolopez22 0:559e1fcef2f4 70 }
Joacolopez22 0:559e1fcef2f4 71 timeout = 100;
Joacolopez22 0:559e1fcef2f4 72 n++;
Joacolopez22 0:559e1fcef2f4 73 }
Joacolopez22 0:559e1fcef2f4 74
Joacolopez22 0:559e1fcef2f4 75 void timer (void)
Joacolopez22 0:559e1fcef2f4 76 {
Joacolopez22 0:559e1fcef2f4 77 if (timeout >0)
Joacolopez22 0:559e1fcef2f4 78 timeout--;
Joacolopez22 0:559e1fcef2f4 79 }
Joacolopez22 0:559e1fcef2f4 80