SE AGREGÓ EL MOVIMIENTO EN LA MATRIZ DE TRIQUI SE AGREGO INTERRUPCION EN EL PROGRAMA

Dependencies:   mbed

Committer:
Camilokingxd
Date:
Thu May 31 20:50:18 2018 +0000
Revision:
1:6fe876825b57
Parent:
0:1b7dd931c028
ULTIMO PROGRAMA

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Camilokingxd 0:1b7dd931c028 1 #include "mbed.h"
Camilokingxd 0:1b7dd931c028 2 #include "def.h"
Camilokingxd 0:1b7dd931c028 3 #include "Step_Motor.h"
Camilokingxd 1:6fe876825b57 4 DigitalOut output1(LED1); // digital output
Camilokingxd 1:6fe876825b57 5
Camilokingxd 1:6fe876825b57 6
Camilokingxd 1:6fe876825b57 7
Camilokingxd 1:6fe876825b57 8
Camilokingxd 1:6fe876825b57 9 stepmotor motorST(D6,D7,D8,D9,D10,D11,D12,D13);
Camilokingxd 0:1b7dd931c028 10
Camilokingxd 0:1b7dd931c028 11
Camilokingxd 0:1b7dd931c028 12 DigitalOut myled(LED1); //Led
Camilokingxd 0:1b7dd931c028 13
Camilokingxd 0:1b7dd931c028 14 Serial pc(USBTX,USBRX); //Comunicacion Serial
Camilokingxd 0:1b7dd931c028 15
Camilokingxd 0:1b7dd931c028 16 PwmOut mypwmX(PB_3); //Servo eje x
Camilokingxd 0:1b7dd931c028 17 PwmOut mypwmY(PB_5); //Servo eje y
Camilokingxd 0:1b7dd931c028 18 PwmOut mypwmZ(PB_4); //Servo eje z
Camilokingxd 0:1b7dd931c028 19
Camilokingxd 0:1b7dd931c028 20 uint32_t mem_head = 0; // SI SUBE LA CABEZA ES PORQUE ESTA GUADANDO
Camilokingxd 0:1b7dd931c028 21 uint32_t mem_tail = 0; // SI SUBE LA COLA ES PORQUE SE EMPIEZAN A LEER LAS MEMORIAS
Camilokingxd 0:1b7dd931c028 22 uint32_t full=0;
Camilokingxd 0:1b7dd931c028 23
Camilokingxd 0:1b7dd931c028 24 MEM_TYPE buffer[MEM_SIZE]; // EL ARREGLO VA A TENER EL TAMAÑO DE MEMSIZE ----> BUFFER ES L ARREGLO
Camilokingxd 0:1b7dd931c028 25
Camilokingxd 0:1b7dd931c028 26 void mem_free() // LIBRERIA MEMORIA
Camilokingxd 0:1b7dd931c028 27 {
Camilokingxd 0:1b7dd931c028 28 mem_head=0;
Camilokingxd 0:1b7dd931c028 29 full=0;
Camilokingxd 0:1b7dd931c028 30 mem_tail=0;
Camilokingxd 0:1b7dd931c028 31 }
Camilokingxd 0:1b7dd931c028 32
Camilokingxd 0:1b7dd931c028 33 uint32_t mem_put(MEM_TYPE data) //
Camilokingxd 0:1b7dd931c028 34 {
Camilokingxd 0:1b7dd931c028 35 if(full) // SI LA MEMORIA ESTA LLENA
Camilokingxd 0:1b7dd931c028 36 {
Camilokingxd 0:1b7dd931c028 37 return 1; //
Camilokingxd 0:1b7dd931c028 38 }
Camilokingxd 0:1b7dd931c028 39 buffer [mem_head]=data; // GUARDAR EL DATO EN LA POSICION MEM_HEAD DEL ARREGLO BUFFER
Camilokingxd 0:1b7dd931c028 40 mem_head+=1; // SE SUMA UNA POSICION A LA CABEZERA
Camilokingxd 0:1b7dd931c028 41 if(mem_head==MEM_SIZE)
Camilokingxd 0:1b7dd931c028 42 {
Camilokingxd 0:1b7dd931c028 43 full=1;
Camilokingxd 0:1b7dd931c028 44 }
Camilokingxd 0:1b7dd931c028 45 return 0; // TODO EN ORDEN
Camilokingxd 0:1b7dd931c028 46 }
Camilokingxd 0:1b7dd931c028 47
Camilokingxd 0:1b7dd931c028 48 uint32_t mem_get(MEM_TYPE* data) // EL * LE INDICA QUE ES UN APUNTADOR
Camilokingxd 0:1b7dd931c028 49 {
Camilokingxd 0:1b7dd931c028 50 if(mem_head == 0) // NO HAY DATOS
Camilokingxd 0:1b7dd931c028 51 return 1;
Camilokingxd 0:1b7dd931c028 52 if (mem_head == mem_tail) // YA SE TERMINO LA LECTURA DE DATOS
Camilokingxd 0:1b7dd931c028 53 return 1;
Camilokingxd 0:1b7dd931c028 54
Camilokingxd 0:1b7dd931c028 55 *data=buffer[mem_tail]; // SE LE CARGA A DATA LO QUE ESTA EN BUFFER EN LA POSICION MEM_TAIL
Camilokingxd 0:1b7dd931c028 56 mem_tail +=1; // SE INCREMENTA EL APUNTADOR MEM_TAIL
Camilokingxd 0:1b7dd931c028 57
Camilokingxd 0:1b7dd931c028 58 return 0;
Camilokingxd 0:1b7dd931c028 59 }
Camilokingxd 0:1b7dd931c028 60
Camilokingxd 0:1b7dd931c028 61 void Vertex2D(uint8_t,uint8_t);
Camilokingxd 0:1b7dd931c028 62 void SetZ(uint8_t);
Camilokingxd 0:1b7dd931c028 63 uint8_t x,y,z;
Camilokingxd 0:1b7dd931c028 64 int xant=0,yant=0,xnew=0,ynew=0,xmov=0,ymov=0; // POSICIONES DEL PICOLO EN LA MATRIZ
Camilokingxd 0:1b7dd931c028 65 int mm2pulse(float vmm); //FUNCION MILIMETROS A PULSOS
Camilokingxd 0:1b7dd931c028 66 void ejecutar();
Camilokingxd 0:1b7dd931c028 67 int guardar();
Camilokingxd 1:6fe876825b57 68 void P_Pause();
Camilokingxd 0:1b7dd931c028 69
Camilokingxd 0:1b7dd931c028 70 int main()
Camilokingxd 0:1b7dd931c028 71 {
Camilokingxd 0:1b7dd931c028 72 mypwmX.period_ms(20);
Camilokingxd 0:1b7dd931c028 73 mypwmY.period_ms(20);
Camilokingxd 0:1b7dd931c028 74 mypwmZ.period_ms(20);
Camilokingxd 0:1b7dd931c028 75 uint8_t letra,subletra;
Camilokingxd 1:6fe876825b57 76
Camilokingxd 0:1b7dd931c028 77 Vertex2D(0,0);
Camilokingxd 0:1b7dd931c028 78 SetZ(NODRAW);
Camilokingxd 0:1b7dd931c028 79 myled = 1;
Camilokingxd 0:1b7dd931c028 80 wait(2);
Camilokingxd 1:6fe876825b57 81 pc.baud(9600);
Camilokingxd 1:6fe876825b57 82 pc.format(8,SerialBase::None,1);
Camilokingxd 0:1b7dd931c028 83 while(1)
Camilokingxd 0:1b7dd931c028 84 {
Camilokingxd 0:1b7dd931c028 85 pc.printf("ingrese comando \n");
Camilokingxd 1:6fe876825b57 86 letra=pc.getc(); //PRIMER COMANDO FF O FE
Camilokingxd 1:6fe876825b57 87 if(letra==CM_EJECUTAR)
Camilokingxd 0:1b7dd931c028 88 {
Camilokingxd 0:1b7dd931c028 89 if(mem_head!=mem_tail) // SI ES DIFERENTE ES PORQUE HAY DATOS EN LA MEMORIA
Camilokingxd 0:1b7dd931c028 90 {
Camilokingxd 1:6fe876825b57 91 pc.attach(&P_Pause,Serial::RxIrq);
Camilokingxd 0:1b7dd931c028 92 ejecutar();
Camilokingxd 1:6fe876825b57 93 pc.attach(0,Serial::RxIrq);
Camilokingxd 0:1b7dd931c028 94 }
Camilokingxd 0:1b7dd931c028 95 else{
Camilokingxd 0:1b7dd931c028 96 pc.printf("La memoria se encuentra vacia \n");
Camilokingxd 0:1b7dd931c028 97 }
Camilokingxd 1:6fe876825b57 98 }
Camilokingxd 1:6fe876825b57 99 else if(letra==CM_GUARDAR){
Camilokingxd 0:1b7dd931c028 100 if(guardar()==0) // LA FUNCION GUARDAR RETORNO UN 0, TODO SE ESTA GUARDANDO CORRECTAMENTE
Camilokingxd 0:1b7dd931c028 101 {
Camilokingxd 0:1b7dd931c028 102 pc.printf("el programa se guardo correctamente \n");
Camilokingxd 0:1b7dd931c028 103 }
Camilokingxd 0:1b7dd931c028 104 else
Camilokingxd 0:1b7dd931c028 105 {
Camilokingxd 0:1b7dd931c028 106 pc.printf("el programa no se pudo guardar... vuelva a intentar \n");
Camilokingxd 0:1b7dd931c028 107 }
Camilokingxd 1:6fe876825b57 108 }
Camilokingxd 1:6fe876825b57 109 else{ pc.printf("error de comando \n");}
Camilokingxd 1:6fe876825b57 110
Camilokingxd 0:1b7dd931c028 111 }
Camilokingxd 1:6fe876825b57 112
Camilokingxd 0:1b7dd931c028 113 }
Camilokingxd 0:1b7dd931c028 114 int mm2pulse(float vmm)
Camilokingxd 0:1b7dd931c028 115 {
Camilokingxd 0:1b7dd931c028 116 if (vmm < MAXPOS) // SI NO SOBREPASA LOS 50 mm
Camilokingxd 0:1b7dd931c028 117 return int (vmm*(MAXPULSE-MINPULSE)/(MAXPOS)) +MINPULSE; // SE REALIZA ESTA OPERACION DE CONVVERCION
Camilokingxd 0:1b7dd931c028 118 return MAXPULSE; // SINO, RETORNA MAXPULSE
Camilokingxd 0:1b7dd931c028 119 }
Camilokingxd 0:1b7dd931c028 120 void SetZ(uint8_t _z)
Camilokingxd 0:1b7dd931c028 121 {
Camilokingxd 0:1b7dd931c028 122 z=_z;
Camilokingxd 0:1b7dd931c028 123 int PULSEZ=mm2pulse(z); // SE HACE PASO DE MILIMETROS A PULSO Y SE GUARDA EN Z
Camilokingxd 0:1b7dd931c028 124 mypwmZ.pulsewidth_us(PULSEZ);
Camilokingxd 0:1b7dd931c028 125 }
Camilokingxd 0:1b7dd931c028 126 void Vertex2D(uint8_t _x,uint8_t _y)
Camilokingxd 0:1b7dd931c028 127 {
Camilokingxd 0:1b7dd931c028 128 x=_x;
Camilokingxd 0:1b7dd931c028 129 y=_y;
Camilokingxd 0:1b7dd931c028 130 int PULSEX=mm2pulse(x);
Camilokingxd 1:6fe876825b57 131 int PULSEY=mm2pulse(50-y);
Camilokingxd 0:1b7dd931c028 132 mypwmX.pulsewidth_us(PULSEX);
Camilokingxd 0:1b7dd931c028 133 mypwmY.pulsewidth_us(PULSEY);
Camilokingxd 0:1b7dd931c028 134 }
Camilokingxd 0:1b7dd931c028 135 void ejecutar()
Camilokingxd 1:6fe876825b57 136 {
Camilokingxd 0:1b7dd931c028 137 pc.printf("el programa se esta ejecutando \n");
Camilokingxd 0:1b7dd931c028 138 uint8_t a=0,b=0,c=0,d=0; // SE CREAN 4 VARIABLES DE 8 BITS
Camilokingxd 0:1b7dd931c028 139 uint32_t l,l1,l2,l3; // SE CREAN 4 VARIABLES DE 32 BITS
Camilokingxd 0:1b7dd931c028 140 MEM_TYPE val; //
Camilokingxd 0:1b7dd931c028 141 mem_get(&val); // LLAMA A LA MEMORIA Y LO CARGA A VAL
Camilokingxd 0:1b7dd931c028 142 l1=(val&0xff00)>>8; // OBTIENE EL TERCER DATO
Camilokingxd 0:1b7dd931c028 143 l2=(val&0xff0000)>>16; // OBTIENE EL SEGUNDO VALOR QUE INGRESAMOS
Camilokingxd 0:1b7dd931c028 144 l3=(val&0xff000000)>>24; // OBTIENE EL PRIMER DATO QUE INGRESAMOS
Camilokingxd 0:1b7dd931c028 145 l=val&0xff; // OBTIENE EL ULTIMO DATO QUE INGRESAMOS
Camilokingxd 0:1b7dd931c028 146 int noy;
Camilokingxd 0:1b7dd931c028 147 while(c!=CM_END) // SI EL TERCER VALOR ES FA
Camilokingxd 0:1b7dd931c028 148 {
Camilokingxd 0:1b7dd931c028 149 a=l3;
Camilokingxd 0:1b7dd931c028 150 pc.putc(a);
Camilokingxd 0:1b7dd931c028 151 b=l2;
Camilokingxd 0:1b7dd931c028 152 pc.putc(b);
Camilokingxd 0:1b7dd931c028 153 c=l1;
Camilokingxd 0:1b7dd931c028 154 pc.putc(c);
Camilokingxd 0:1b7dd931c028 155 d=l;
Camilokingxd 0:1b7dd931c028 156 pc.putc(d);
Camilokingxd 0:1b7dd931c028 157 if(a==CM_SERVO)
Camilokingxd 0:1b7dd931c028 158 {
Camilokingxd 0:1b7dd931c028 159 Vertex2D(b,c);
Camilokingxd 0:1b7dd931c028 160 }
Camilokingxd 0:1b7dd931c028 161 else if(a==CM_MOTORSTEP)
Camilokingxd 0:1b7dd931c028 162 {
Camilokingxd 0:1b7dd931c028 163 xnew=b;
Camilokingxd 0:1b7dd931c028 164 ynew=c;
Camilokingxd 0:1b7dd931c028 165 xmov=xnew-xant;
Camilokingxd 0:1b7dd931c028 166 ymov=ynew-yant;
Camilokingxd 0:1b7dd931c028 167 xant=xnew;
Camilokingxd 0:1b7dd931c028 168 yant=ynew;
Camilokingxd 0:1b7dd931c028 169 if(xmov==0)
Camilokingxd 0:1b7dd931c028 170 {
Camilokingxd 0:1b7dd931c028 171 if(ymov>0) //los valores de 1024 es estandar .step(#pasos,sentido) donde el sentido 0 es girar izquierda, 1 s girar derecha, 2 es avanzar y 3 es retroceder
Camilokingxd 0:1b7dd931c028 172 {
Camilokingxd 0:1b7dd931c028 173 noy=STAN*abs(ymov);
Camilokingxd 0:1b7dd931c028 174 motorST.step(noy,FORWARD); //se mueve para adelante
Camilokingxd 0:1b7dd931c028 175 }
Camilokingxd 0:1b7dd931c028 176 else if(ymov<0)
Camilokingxd 0:1b7dd931c028 177 {
Camilokingxd 0:1b7dd931c028 178 noy=STAN*abs(ymov);
Camilokingxd 0:1b7dd931c028 179 motorST.step(noy,BEHIND); //se mueve para atras
Camilokingxd 0:1b7dd931c028 180 }
Camilokingxd 0:1b7dd931c028 181 }
Camilokingxd 0:1b7dd931c028 182 else if(xmov>0)
Camilokingxd 0:1b7dd931c028 183 {
Camilokingxd 0:1b7dd931c028 184 motorST.step(STAN,RIGHT);
Camilokingxd 0:1b7dd931c028 185 noy=STAN*abs(xmov);
Camilokingxd 0:1b7dd931c028 186 motorST.step(noy,FORWARD);
Camilokingxd 0:1b7dd931c028 187 motorST.step(STAN,LEFT); //gira a la derecha y se mueve los cuadrantes y vuelve a girar a la misma posicion
Camilokingxd 0:1b7dd931c028 188 }
Camilokingxd 0:1b7dd931c028 189 else if(xmov<0)
Camilokingxd 0:1b7dd931c028 190 {
Camilokingxd 0:1b7dd931c028 191 motorST.step(STAN,LEFT);
Camilokingxd 0:1b7dd931c028 192 noy=STAN*abs(xmov);
Camilokingxd 0:1b7dd931c028 193 motorST.step(noy,FORWARD);
Camilokingxd 0:1b7dd931c028 194 motorST.step(STAN,RIGHT); //gira a la izquierda y se mueve los cuadrantes y vuelve a girar a la misma posicion
Camilokingxd 0:1b7dd931c028 195 }
Camilokingxd 0:1b7dd931c028 196 if(ymov==0){} //ya esta en esa posicion
Camilokingxd 1:6fe876825b57 197 else if(xmov>0)
Camilokingxd 0:1b7dd931c028 198 {
Camilokingxd 0:1b7dd931c028 199 noy=STAN*abs(ymov);
Camilokingxd 0:1b7dd931c028 200 motorST.step(noy,FORWARD); //se mueve a esa posicion avanzando
Camilokingxd 0:1b7dd931c028 201 }
Camilokingxd 1:6fe876825b57 202 else if(xmov<0)
Camilokingxd 0:1b7dd931c028 203 {
Camilokingxd 0:1b7dd931c028 204 noy=STAN*abs(ymov);
Camilokingxd 0:1b7dd931c028 205 motorST.step(noy,BEHIND); //se mueve a esa posicion retrocediendo
Camilokingxd 0:1b7dd931c028 206 }
Camilokingxd 0:1b7dd931c028 207 }
Camilokingxd 0:1b7dd931c028 208 else if(c==CM_SDRAW)
Camilokingxd 0:1b7dd931c028 209 {
Camilokingxd 0:1b7dd931c028 210 SetZ(DRAW);
Camilokingxd 0:1b7dd931c028 211 }
Camilokingxd 0:1b7dd931c028 212 else if(c==CM_SN0DRAW)
Camilokingxd 0:1b7dd931c028 213 {
Camilokingxd 0:1b7dd931c028 214 SetZ(NODRAW);
Camilokingxd 0:1b7dd931c028 215 }
Camilokingxd 0:1b7dd931c028 216 mem_get(&val); // LO QUE HAY EN LA MEMORIA SE GUERDE EN VAL
Camilokingxd 0:1b7dd931c028 217 l1=(val&0xff00)>>8; // LLAMA A LA MEMORIA Y SE VUELVE A HACER LA SEPARACION
Camilokingxd 0:1b7dd931c028 218 l2=(val&0xff0000)>>16;
Camilokingxd 0:1b7dd931c028 219 l3=(val&0xff000000)>>24;
Camilokingxd 0:1b7dd931c028 220 l=val&0xff;
Camilokingxd 0:1b7dd931c028 221 wait(1);
Camilokingxd 0:1b7dd931c028 222 }
Camilokingxd 0:1b7dd931c028 223 pc.printf("el programa se termino de ejecutar \n");
Camilokingxd 0:1b7dd931c028 224 mem_tail=0; // DEVUELVE LA COLA POR SI SE QUIERE VOLVER A REPRODUCIR
Camilokingxd 0:1b7dd931c028 225 }
Camilokingxd 0:1b7dd931c028 226 int guardar()
Camilokingxd 0:1b7dd931c028 227 {
Camilokingxd 0:1b7dd931c028 228 mem_free();// LIBERA MEMORIA
Camilokingxd 0:1b7dd931c028 229 uint32_t l=0;// LIBERA MEMORIA
Camilokingxd 0:1b7dd931c028 230 uint8_t sl; // LA QUE VA SER RECIBIDA POR LA COMUNICACION SERIAL
Camilokingxd 0:1b7dd931c028 231 pc.printf("ingrese sus comandos y coordenadas \n");
Camilokingxd 0:1b7dd931c028 232 sl=pc.getc(); // VA A COGER LO DEL PUERTO SERIAL Y
Camilokingxd 0:1b7dd931c028 233 pc.putc(sl);
Camilokingxd 0:1b7dd931c028 234 while(sl!=CM_END) // SI ES DIFERENTE A FA
Camilokingxd 0:1b7dd931c028 235 {
Camilokingxd 0:1b7dd931c028 236 switch(sl)
Camilokingxd 0:1b7dd931c028 237 {
Camilokingxd 0:1b7dd931c028 238 case CM_SERVO:
Camilokingxd 0:1b7dd931c028 239 l=l+sl<<8; // SE LE ASIGNA LA VARIABLE DE 8 BITS Y SE CORRE LA POSICION 8 BITS
Camilokingxd 0:1b7dd931c028 240 sl=pc.getc(); // SE GUARDA EN SL EL NUEVO COMANDO
Camilokingxd 0:1b7dd931c028 241 l=l+sl;
Camilokingxd 0:1b7dd931c028 242 pc.putc(l);
Camilokingxd 0:1b7dd931c028 243 l=l<<8;
Camilokingxd 0:1b7dd931c028 244 sl=pc.getc();
Camilokingxd 0:1b7dd931c028 245 l=l+sl;
Camilokingxd 0:1b7dd931c028 246 pc.putc(l);
Camilokingxd 0:1b7dd931c028 247 l=l<<8;
Camilokingxd 0:1b7dd931c028 248 sl=pc.getc();
Camilokingxd 0:1b7dd931c028 249 if(sl!=CM_STOP) // SI A LO QUE LLEO FUE A F0
Camilokingxd 0:1b7dd931c028 250 {
Camilokingxd 0:1b7dd931c028 251 pc.printf("comando End no definido \n");
Camilokingxd 0:1b7dd931c028 252 return 1;
Camilokingxd 0:1b7dd931c028 253 }
Camilokingxd 0:1b7dd931c028 254 l=l+sl;
Camilokingxd 0:1b7dd931c028 255 pc.putc(l);
Camilokingxd 0:1b7dd931c028 256 mem_put(l); // SE GUARDA L , QUE YA ES UN VALOR DE 32 BITS
Camilokingxd 0:1b7dd931c028 257 break;
Camilokingxd 0:1b7dd931c028 258 case CM_SDRAW:
Camilokingxd 0:1b7dd931c028 259 l=l+sl<<8;
Camilokingxd 0:1b7dd931c028 260 sl=pc.getc();
Camilokingxd 0:1b7dd931c028 261 if(sl!=CM_STOP)
Camilokingxd 0:1b7dd931c028 262 {
Camilokingxd 0:1b7dd931c028 263 pc.printf("comando End no definido \n");
Camilokingxd 0:1b7dd931c028 264 return 1;
Camilokingxd 0:1b7dd931c028 265 }
Camilokingxd 0:1b7dd931c028 266 l=l+sl;
Camilokingxd 0:1b7dd931c028 267 mem_put(l);
Camilokingxd 0:1b7dd931c028 268 break;
Camilokingxd 0:1b7dd931c028 269 case CM_SN0DRAW:
Camilokingxd 0:1b7dd931c028 270 l=l+sl<<8;
Camilokingxd 0:1b7dd931c028 271 sl=pc.getc();
Camilokingxd 0:1b7dd931c028 272 if(sl!=CM_STOP)
Camilokingxd 0:1b7dd931c028 273 {
Camilokingxd 0:1b7dd931c028 274 pc.printf("comando End no definido \n");
Camilokingxd 0:1b7dd931c028 275 return 1;
Camilokingxd 0:1b7dd931c028 276 }
Camilokingxd 0:1b7dd931c028 277 l=l+sl;
Camilokingxd 0:1b7dd931c028 278 mem_put(l);
Camilokingxd 0:1b7dd931c028 279 break;
Camilokingxd 0:1b7dd931c028 280 case CM_MOTORSTEP:
Camilokingxd 0:1b7dd931c028 281 l=l+sl<<8; // SE LE ASIGNA LA VARIABLE DE 8 BITS Y SE CORRE LA POSICION 8 BITS
Camilokingxd 0:1b7dd931c028 282 sl=pc.getc(); // SE GUARDA EN SL EL NUEVO COMANDO
Camilokingxd 0:1b7dd931c028 283 l=l+sl;
Camilokingxd 0:1b7dd931c028 284 pc.putc(l);
Camilokingxd 0:1b7dd931c028 285 l=l<<8;
Camilokingxd 0:1b7dd931c028 286 sl=pc.getc();
Camilokingxd 0:1b7dd931c028 287 l=l+sl;
Camilokingxd 0:1b7dd931c028 288 pc.putc(l);
Camilokingxd 0:1b7dd931c028 289 l=l<<8;
Camilokingxd 0:1b7dd931c028 290 sl=pc.getc();
Camilokingxd 0:1b7dd931c028 291 if(sl!=CM_STOP) // SI A LO QUE LLEO FUE A F0
Camilokingxd 0:1b7dd931c028 292 {
Camilokingxd 0:1b7dd931c028 293 pc.printf("comando End no definido \n");
Camilokingxd 0:1b7dd931c028 294 return 1;
Camilokingxd 0:1b7dd931c028 295 }
Camilokingxd 0:1b7dd931c028 296 l=l+sl;
Camilokingxd 0:1b7dd931c028 297 pc.putc(l);
Camilokingxd 0:1b7dd931c028 298 mem_put(l);
Camilokingxd 0:1b7dd931c028 299 break;
Camilokingxd 0:1b7dd931c028 300 }
Camilokingxd 0:1b7dd931c028 301 l=0;
Camilokingxd 0:1b7dd931c028 302 sl=pc.getc();
Camilokingxd 0:1b7dd931c028 303 }
Camilokingxd 0:1b7dd931c028 304 sl=pc.getc();
Camilokingxd 0:1b7dd931c028 305 pc.printf("el programa termino de guardar \n");
Camilokingxd 0:1b7dd931c028 306 mem_put(0xfaf0);
Camilokingxd 0:1b7dd931c028 307 return 0;
Camilokingxd 0:1b7dd931c028 308 }
Camilokingxd 0:1b7dd931c028 309
Camilokingxd 1:6fe876825b57 310 void P_Pause()
Camilokingxd 1:6fe876825b57 311 {
Camilokingxd 1:6fe876825b57 312 int g=pc.getc();
Camilokingxd 1:6fe876825b57 313 if(g==PAUSE)
Camilokingxd 1:6fe876825b57 314 {
Camilokingxd 1:6fe876825b57 315 pc.attach(0,Serial::RxIrq);
Camilokingxd 1:6fe876825b57 316 pc.printf("interrupcion \n");
Camilokingxd 1:6fe876825b57 317 while(pc.getc()!=PLAY){}
Camilokingxd 1:6fe876825b57 318 pc.attach(&P_Pause,Serial::RxIrq);
Camilokingxd 1:6fe876825b57 319 }
Camilokingxd 1:6fe876825b57 320 return;
Camilokingxd 1:6fe876825b57 321 }
Camilokingxd 0:1b7dd931c028 322
Camilokingxd 0:1b7dd931c028 323
Camilokingxd 0:1b7dd931c028 324
Camilokingxd 0:1b7dd931c028 325
Camilokingxd 0:1b7dd931c028 326