Autor Tema: Mi Proyecto Para Mi Acuario  (Leído 12663 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Mi Proyecto Para Mi Acuario
« Respuesta #15 en: 15 de Septiembre de 2009, 18:06:38 »
Y no se podria usar alguna interrupcion de timer?? Por ej, ponemos a dormir una tarea hasta q el timer interrumpa, y mientras tanto se ejecutan las demas.
Saludos!!
No se como se podría aplicar eso  :? Porque lo que hace rtos_yield es cederle el control a otra tarea y espera hasta el próximo ciclo

Por ejemplo, supongamos q una tarea necesita esperar 50ms. Entonces se va a dormir, y una interrupcion de timer la despierta luego de transcurrido ese tiempo. Entonces la tarea no tiene q despertar a cada rato a ver si se cumplio. El tiempo seria bastante preciso.
saludos!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Mi Proyecto Para Mi Acuario
« Respuesta #16 en: 15 de Septiembre de 2009, 18:10:57 »
En palabras se entiende, pero no veo como hacerlo con las funciones del RTOS de CCS.  ;-)
No contesto mensajes privados, las consultas en el foro

Desconectado manuel_j555

  • PIC10
  • *
  • Mensajes: 15
Re: Mi Proyecto Para Mi Acuario
« Respuesta #17 en: 16 de Septiembre de 2009, 00:00:40 »
Ahora si, sustituidos todos los delay por rtos_yield y solucionado el problema del modulo de cambiar la clave.

Bueno menos el delay del main y el delay de la funcion que lee la tecla presionada, los deje asi para no complicarme  :D.

Es interesante ver como trabaja el motor de la aliemntacion mientras realizamos alguna configuracion, todo gracias a las ventajas de los RTOS...

Luego Publico un proyecto que hice en el que dos pics se mandan mensajes entre si.
« Última modificación: 16 de Septiembre de 2009, 00:05:51 por manuel_j555 »

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Mi Proyecto Para Mi Acuario
« Respuesta #18 en: 16 de Septiembre de 2009, 00:54:38 »
En palabras se entiende, pero no veo como hacerlo con las funciones del RTOS de CCS.  ;-)

Perdon, pense q no se habia entendido mi idea jeje. Bueno, en rtos estan las funciones rtos_enable() y rtos_disable() para activar y desactivar tareas. No se si una tarea se puede desactivar a si misma, supongo q si. Entonces en la interrupcion de timer, la volvemos a activar.

Tambien hay una funcion interesante q es rtos_await(), q deja a la tarea dormida hasta q se cumpla una condicion. Entonces en el timer (o en alguna otra tarea), podemos ir incrementando una variable y q cuando llegue a tal valor, la otra tarea se activa.
Por ej, podemos setear el timer para q interrumpa cada 1ms e incremente count. entonces hacemos un rtos_await(count==50); y ahi tenemos nuestros 50ms de demora.

La verdad q no se si esto es lo mas eficaz... la verdad q yield ya presenta una solucion mucho mejor q usar delays. Pero se me ocurren estas cosas, habria q probar.

saludos!!!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado manuel_j555

  • PIC10
  • *
  • Mensajes: 15
Re: Mi Proyecto Para Mi Acuario
« Respuesta #19 en: 16 de Septiembre de 2009, 01:06:18 »
Bueno la opcion que propone el amigo gera tambien fue una de las posibilidades en las que pense, pero no la implemente porque a la hora de que varias tareas esten "durmiendo" o en espera, supongo que cada una deberia tener un contador independiente, ya que puede que una tarea necesite un tiempo de espera distinto del de otra.

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Mi Proyecto Para Mi Acuario
« Respuesta #20 en: 16 de Septiembre de 2009, 01:50:36 »
Una cosa es "dormir" una tarea y otra cosa es deshabilitarla  ;-) Por ejemplo en el caso que se le plantea a manuel, la tarea escribe en lcd, espera 2.5 seg y luego ejecuta otras instrucciones. Si usamos enable/disable, al escribir en el lcd, habilitaríamos el timers y deshabilitariamos la tarea. Y al ocurrir la interrupción por el timer de espera de los 2.5 seg volveríamos a habilitar la tarea, pero esta se ejecuta desde el principio y no donde pretendemos.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Mi Proyecto Para Mi Acuario
« Respuesta #21 en: 16 de Septiembre de 2009, 13:29:31 »
Bueno la opcion que propone el amigo gera tambien fue una de las posibilidades en las que pense, pero no la implemente porque a la hora de que varias tareas esten "durmiendo" o en espera, supongo que cada una deberia tener un contador independiente, ya que puede que una tarea necesite un tiempo de espera distinto del de otra.

Lo q podes hacer es q cuando el timer interrumpa se incremente una variable, y segun el valor de esta, rehabilitas la tarea q corresponda. Ahi podes obtener retardos diferentes.

Suky, veo la diferencia. Pero por costumbre siempre digo "dormir" porq asi lo estudie en sistemas operativos jeje. La proxima voy a tener cuidado con los terminos q uso. Gracias por la aclaracion :wink:

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado manuel_j555

  • PIC10
  • *
  • Mensajes: 15
Re: Mi Proyecto Para Mi Acuario
« Respuesta #22 en: 16 de Septiembre de 2009, 14:11:12 »
La verdad que este programa de este proyecto tiene los 1000 y un errores, aqui esta una version sin ningun semaforo ya que ni son necesarios ni me ayudan mucho en el programa...

Desconectado Ave_Rapina

  • PIC10
  • *
  • Mensajes: 10
Re: Mi Proyecto Para Mi Acuario
« Respuesta #23 en: 29 de Septiembre de 2009, 23:06:35 »
Hola,

El codigo nao es igual en el source e en hex.

El codigo quando lo compilo me da um comportmiento diferente en mostrar la hora e el temp

Cumps
« Última modificación: 29 de Septiembre de 2009, 23:10:27 por Ave_Rapina »

Desconectado Ave_Rapina

  • PIC10
  • *
  • Mensajes: 10
Re: Mi Proyecto Para Mi Acuario
« Respuesta #24 en: 29 de Septiembre de 2009, 23:18:30 »
Prontos.

Resolvido

Gracias por tu Projecto.


Desconectado Ave_Rapina

  • PIC10
  • *
  • Mensajes: 10
Re: Mi Proyecto Para Mi Acuario
« Respuesta #25 en: 29 de Septiembre de 2009, 23:29:55 »
Hola manuel_j555

Te dou una sugestion, todas la comunicaciones e alteraciones de las variables devem ser protegidas, evitando as comutaciones.
Los semaforos no bloquean las comutaciones, solo permiten que protejas tus variables, No lo se sy ccs rtos petmite que uses mutex de forma a bvoquear tu escalonador. Pero hay mirado rapido sobre el codigo e tienes el rtos yeld que te permite parar el escalonador.

Para imprimir en lcd deverias usar una fila de mensagem i una tarefa para te imprimir los dados enviados que produzes en otras tarefas.

you por norma uso micros de ARM e uso siempre el freertos que es posix standard

Regards


Desconectado legm

  • PIC10
  • *
  • Mensajes: 1
Re: Mi Proyecto Para Mi Acuario
« Respuesta #26 en: 13 de Septiembre de 2011, 14:29:51 »
quien sabe la clave ??????.................

Desconectado markitosb

  • PIC10
  • *
  • Mensajes: 6
Re: Mi Proyecto Para Mi Acuario
« Respuesta #27 en: 02 de Febrero de 2012, 10:27:56 »
ok  esta buenisimo  tu proyecto  mas  que  todo  lo que  interesa  es darle una idea  alos principiantes como  yo  :lol:  algunas personas   nomas  ayudadan poniendo  sus proyectos  realisados  a si como ud  grasias     auna  cosita me puedes proporsionar   la contraseña del proyecto porque probe con  todos  y nada grasias

Desconectado vicbush

  • PIC10
  • *
  • Mensajes: 1
Re: Mi Proyecto Para Mi Acuario
« Respuesta #28 en: 31 de Marzo de 2012, 16:52:37 »
hola quiero compliarlo y me da el siguiente error podrias ayudarme??


>>> Warning 216 "proyecto acuario RTOS.c" Line 884(0,1): Interrupts disabled during call to prevent re-entrancy:  (@delay_ms1)
      Memory usage:   ROM=34%      RAM=8% - 22%
      0 Errors,  1 Warnings.

Arazo, Vic
« Última modificación: 31 de Marzo de 2012, 16:59:29 por vicbush »


 

anything