20.04.2013 Views

Descarga este documento en formato PDF - Ucontrol

Descarga este documento en formato PDF - Ucontrol

Descarga este documento en formato PDF - Ucontrol

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!