Camilo Ramirez
/
ENTREGA FINAL SISTEMAS EMBEBIDOS
SE AGREGÓ EL MOVIMIENTO EN LA MATRIZ DE TRIQUI SE AGREGO INTERRUPCION EN EL PROGRAMA
main.cpp@1:6fe876825b57, 2018-05-31 (annotated)
- 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?
User | Revision | Line number | New 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 |