Autor Tema: OSA un RTOS para pequeños y medianos  (Leído 9244 veces)

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

Desconectado AcoranTf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1040
Re: OSA un RTOS para pequeños y medianos
« Respuesta #15 en: 14 de Abril de 2012, 20:04:40 »
El proyecto de Jgpeiro06 es impresionante, pero aun estoy a años luz de poder hacer algo similar. Mis conocimientos de programacion, como he dicho otras veces, estan en pañales.

Saludos.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: OSA un RTOS para pequeños y medianos
« Respuesta #16 en: 14 de Abril de 2012, 20:07:53 »
Si tu PLC no necesita mucha velocidad supongo que con rtos no tendras problemas, pero si piensas en hacer un PLC optimizado y rapido lo tendras que hacer sin rtos. Piensa que rtos aparte de consumir memoria tambien consume muchos ciclos y la latencia sera mas alta que desarollar el programa tu mismo.

He leido algunas opiniones cuando hablan la diferencia entra usar rtos y no usarlo, muchas de ellas no son correctas.

Cuando dicen que un pic esta el 50% del tiempo sin hacer nada se equivocan, un pic siempre esta ejecutando instrucciones, sean las que sean, aunque tu pienses que un delay() hace que el pic se detenga durante X tiempo eso no es asi, lo unico que hace es repetir durante X tiempo un bucle.

Ahora, como hacer un programa que siempre este haciendo cosas utiles?? Evitando usar delay. Para controles de tiempo siempre se pueden usar los timers, por ejemplo, queremos ejecutar funcion1 cada 10ms, y funcion2 cada 20ms seria:

char tmr=0, fFuncion1=0, fFuncion2=0;

timer() {
fFuncion1=1;
if(tmr==1) fFuncion2=1;
tmr++;
if(tmr>1) tmr=0;
}

main() {
//configuramos timer para que se desborde cada 10ms
....
while(1) {
if(fFuncion1){
 Funcion1(); //ejecutamos la funcion1 si el flag esta activado
 fFuncion1=0; //reseteamos el flag
}
if(fFuncion2) {
Funcion2(); //ejecutamos funcion2,
fFuncion2=0;
}
Funciones_de_utilidad();
Calculos();
....
}
}

Como ves ahi se utiliza un timer el cual controla 2 variables, una de ellas se pone cada 10ms y la otra cada 20ms. A su vez en el main se ejecuta un bucle, si algun flag estuviese en 1 entonces se ejecutaria esa funcion, sin embargo si ningun flag estuviese seteado se ejecutarian las Funciones_de_utilidad(), Calculos().... Todo esto seria asi, funciones cada X tiempo y a su vez se ejecutan funciones las cuales por ejemplo puede ser el calculo constante de un ADC, o una lectura constante de los puertos....

Como ya dije en otra ocasion el rtos no ejecuta 2 funciones a la vez, unicamente va alternando entre ellas segun el tiempo, prioridad... Pero todo esto lo hace en monotarea.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4919
Re: OSA un RTOS para pequeños y medianos
« Respuesta #17 en: 14 de Abril de 2012, 20:51:41 »
Si quieres muchos timers se puede hacer:

Código: [Seleccionar]
/* esta función se llama por interrupciones 10 veces por segundo */
timers() {
   int i;
   for(i=0; i<20; i++) {
      if (timer[i]>0) timer[i]--;
   }
}


main() {
   while(1) {
      if (pulsador)   timer[1] = 20;   // timer 1 temporiza 2 segudos

      if (timer[1] == 0)  output1 = 1;
   }
}

Después de pulsar el pulsador se temporiza dos segundos y la salida output se activa.
Tienes 20 temporizadores a tu disposición.

De todas formas los Rtos facilitan mucho estas cosas. En cuanto el programa se vuelve un poco grande, mejor irse a un rtos.

La ventaja de programarlo "a mano" sin rtos es la velocidad. Puedes conseguir tiempos de latencia bajísimos al precio de muchas horas dedicadas a programar y depurar. Y necesitas tener las ideas muy claras para no comenter errores.



Saludos.
« Última modificación: 14 de Abril de 2012, 20:57:58 por Picuino »

Desconectado AcoranTf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1040
Re: OSA un RTOS para pequeños y medianos
« Respuesta #18 en: 15 de Abril de 2012, 18:15:20 »
Muchas gracias de nuevo por vuestros comentarios, que tendre en cuenta cuando decida ponerme con el PLC, de momento tengo un par de proyectos por realizar antes. Mientras tanto aprovechare para estudiar algo mas sobre los rtos.

Saludos.

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4919
Re: OSA un RTOS para pequeños y medianos
« Respuesta #19 en: 15 de Abril de 2012, 19:02:35 »
Yo estudié hace unos meses el manual del rtos Salvo. Está muy bien explicado y es muy genérico (explica el rtos Salvo y además teoría general sobre los rtos)
El unico problema es que está en inglés.

http://www.pumpkininc.com/content/doc/manual/SalvoUserManual.pdf

Saludos.

Desconectado KALLITOS

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1253
Re: OSA un RTOS para pequeños y medianos
« Respuesta #20 en: 16 de Abril de 2012, 11:37:33 »
Ahora, como hacer un programa que siempre este haciendo cosas utiles?? Evitando usar delay. Para controles de tiempo siempre se pueden usar los timers

La ventaja de programarlo "a mano" sin rtos es la velocidad. Puedes conseguir tiempos de latencia bajísimos al precio de muchas horas dedicadas a programar y depurar. Y necesitas tener las ideas muy claras para no comenter errores.

Muy cierto, para mi el uso correcto del hardware y flags, son muy eficientes, en comparación de las funciones preprogramadas.

saludos.
« Última modificación: 16 de Abril de 2012, 11:42:05 por KALLITOS »
A un microcontrolador hay que sacarle hasta el ultimo byte....(YO)

Cómo puede ser que un pic24EP512 me quede corto de memoria, señores de MICROCHIP saquen pics con más memoria flash

Más de 45 mil lineas de codigo y aun no termino el equipo, asu mare!!

S34ML08G1TFI200 no necesito mas memoria externa.

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1339
Re: OSA un RTOS para pequeños y medianos
« Respuesta #21 en: 27 de Marzo de 2013, 21:57:09 »
Ya estoy probando el OSA RTOS (v110306) con el ejemplo que trae. Estoy con el CCS v.4.134 y un PIC18F258 a 20Mhz
 
Adjunto proyecto con simulaicon en proteus 7.10 (No he puesto los LED pues es lo mismo ver los pines del propio PIC)

Eso si, hay que especificar la direcion de la carpeta osa en Project/Project Options -> Include Files.

Esta bueno!
« Última modificación: 27 de Marzo de 2013, 22:05:25 por jeremylf »

Desconectado suigeneris_abril24

  • PIC10
  • *
  • Mensajes: 3
Re: OSA un RTOS para pequeños y medianos
« Respuesta #22 en: 16 de Junio de 2014, 16:21:39 »
Hola quisiera saber cuantas tareas puede soportar el freertos en un pic18f4526, estoy haciendo un proyecto y debo implementar 16 secuencias paralelas, gracias.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: OSA un RTOS para pequeños y medianos
« Respuesta #23 en: 16 de Junio de 2014, 16:39:31 »
depende de la velocidad que requieran

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1339
Re: OSA un RTOS para pequeños y medianos
« Respuesta #24 en: 17 de Junio de 2014, 15:20:07 »
Hola quisiera saber cuantas tareas puede soportar el freertos en un pic18f4526, estoy haciendo un proyecto y debo implementar 16 secuencias paralelas, gracias.
Este tema es para el RTOS OSA exclusivamente por favor.


 

anything