Descarga este documento en formato PDF - Ucontrol
Descarga este documento en formato PDF - Ucontrol
Descarga este documento en formato PDF - Ucontrol
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
20 de 22<br />
void R_Despachador()<br />
{<br />
//Note como hacemos la sincronizacion fuera de la seccion critica, mas adelante veremos<br />
//que esto no siempre es posible hacerlo o que las cosas se complican un poco mas<br />
//de lo que hemos visto hasta ahora.<br />
rtos_await(iCantidad= 100)<br />
output_bit( PIN_B3, 0); //Le decimos al robot despachador que no ponga mas botellas<br />
rtos_msg_s<strong>en</strong>d(Supervisor, iCantidad); //Enviamos un m<strong>en</strong>saje con la cant de botellas<br />
rtos_signal(semaphore); //Liberamos el semáforo y aquí se acaba la sec crítica<br />
rtos_yield(); // A dormir por otros 50ms para evitar poner dos veces la misma botella<br />
}<br />
void R_Ll<strong>en</strong>ador1()<br />
{<br />
//El robot debe esperar a que la cinta t<strong>en</strong>ga sufici<strong>en</strong>tes botellas para sacar antes<br />
//de com<strong>en</strong>zar a trabajar.<br />
rtos_await(iCantidad>24); //Esperemos a que se ll<strong>en</strong>e un poco la cinta<br />
output_bit( PIN_B4, 1); //A partir de aqui, si no se podia antes, sacar botellas<br />
rtos_wait(semaphore);<br />
if(input(PIN_B1)==1)<br />
iCantidad -= 12;<br />
if(iCantidad 24); //Esperemos a que se ll<strong>en</strong>e un poco la cinta<br />
output_bit( PIN_B5, 1); //A partir de aqui, si no se podia antes, sacar botellas<br />
rtos_wait(semaphore);<br />
if(input(PIN_B2)==1)<br />
iCantidad -= 12;<br />
if(iCantidad 0); //Esperamos a que haya algun m<strong>en</strong>saje <strong>en</strong> la cola<br />
iBotellas = rtos_msg_read(); //Leemos el m<strong>en</strong>saje