Autor Tema: Dicusión sobre RTOS  (Leído 26655 veces)

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

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Dicusión sobre RTOS
« Respuesta #15 en: 17 de Junio de 2009, 13:15:08 »
¿Ese delay_us dentro de un RTOS no es un poco raro?. Desde la más profunda ignorancia, quizás si pones dos tareas, una que encienda el led y otra que lo apague...
Del ejemplo donde provino la duda no tiene delays, son solo instrucciones y ocurre el mismo problema.  :? Es que esto me desoriento! He visto ejemplos de RTOS en la ejecución de un control PID por ejemplo, donde la frecuencia de muestreo es critica, y no puede ser que varíe tanto! Para mi soy yo que estoy fallando en algo, sigo leyendo a ver que encuentro.
No contesto mensajes privados, las consultas en el foro

Desconectado cerebro

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 735
Re: Dicusión sobre RTOS
« Respuesta #16 en: 17 de Junio de 2009, 13:30:25 »
tenés razón suky no se cumplen los tiempos, en mi caso es peor porque trabajaba con funciones de tiempo mayores y se adelanta unos 50 ms. Hasta ahora no me había dado cuenta y estuve buscando alguna explicación y no encontré nada...
Pero me puse el poncho detectivesco y descubrí que el rate se cumple pero lo que hace el RTOS es llamar a la función  en  rate-minor_cycle por ejemplo

Código: [Seleccionar]
#task(rate=400ms,max=50ms)con un minor_cycle=50ms la función la llama en 350ms y con un minor_cycle=100 la función la llama a los 300ms  :shock: para los 400ms siempre se completan.
Esto lo probe cargando el .cof y simulando paso a paso.

Ahora supuestamente en tu caso el retraso es de  0.3 [ms] yo esperaría que fuese de 1 [ms], pero le cambie el clock al micro(procesor clock frecuency) a 40 Mhz (un bolazoooo) y se cumplió la regla  :x. No se que decirte, si lo que dije fue pura coincidencia o si el rtos del ccs trabaja así o el proteus nos está jugando una pasada. La cuestión es que estoy más perdido que "un piojo en la oreja" con este RTOS, encima tengo más preguntas sobre el ejercicio 3 y 4  :z)...
Creo que somos malos estudiantes  :) (espero que el profe reiniertl no nos regañe) será mas saludable una vez terminado todos los ejercicios pasarse a algún otro RTOS.  :5]

Saludos!



LAS MALVINAS SON ARGENTINAS!

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Dicusión sobre RTOS
« Respuesta #17 en: 17 de Junio de 2009, 14:21:19 »
tenés razón suky no se cumplen los tiempos, en mi caso es peor porque trabajaba con funciones de tiempo mayores y se adelanta unos 50 ms. Hasta ahora no me había dado cuenta y estuve buscando alguna explicación y no encontré nada...
Pero me puse el poncho detectivesco y descubrí que el rate se cumple pero lo que hace el RTOS es llamar a la función  en  rate-minor_cycle por ejemplo

Código: [Seleccionar]
#task(rate=400ms,max=50ms)con un minor_cycle=50ms la función la llama en 350ms y con un minor_cycle=100 la función la llama a los 300ms  :shock: para los 400ms siempre se completan.
Esto lo probe cargando el .cof y simulando paso a paso.

Ahora supuestamente en tu caso el retraso es de  0.3 [ms] yo esperaría que fuese de 1 [ms], pero le cambie el clock al micro(procesor clock frecuency) a 40 Mhz (un bolazoooo) y se cumplió la regla  :x. No se que decirte, si lo que dije fue pura coincidencia o si el rtos del ccs trabaja así o el proteus nos está jugando una pasada. La cuestión es que estoy más perdido que "un piojo en la oreja" con este RTOS, encima tengo más preguntas sobre el ejercicio 3 y 4  :z)...
Creo que somos malos estudiantes  :) (espero que el profe reiniertl no nos regañe) será mas saludable una vez terminado todos los ejercicios pasarse a algún otro RTOS.  :5]

Saludos!
Yo estaba en la misma tratando de encontrar alguna regla o como diablos establece los tiempos, modificaba minor_cycle, rate y el max, pero no le había encontrado explicación! También pensé que era el proteus que me estaba jugando una mala pasada, pero fijando un tiempo exacto en la tarea me di cuenta que eso no era! Al final parece que es problema de CCS! Voy a practicar algunas cositas mas y me cambio a otro RTOS  :5]
No contesto mensajes privados, las consultas en el foro

Desconectado reiniertl

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1187
Re: Dicusión sobre RTOS
« Respuesta #18 en: 17 de Junio de 2009, 19:35:40 »
A ver si me eplico un poco con utede, poque eto que me enseñan me deja como indio que no etiende.

Yo nunca he tenido ese tipo de problemas, la razón no la se, quizá nunca me he preocupado demasiado de eso, cuando necesito temporizacoines precisas, combino el RTOS con TIMER, típicamente el TIMER1 + CCP y pongo en la ISR las cosas que no pueden depender de que al RTOS le de la gana de planificarme una tarea demasiado jodedora con los tiempos.

Pero si yo fuese ustedes ponía un minor_cycle 10 veces menor que el rate de la tarea más rápida, así me evito el jodido problema del aliasing, pero esta vez aplicado a la ejecución de las tareas.

Cambiarse de RTOS es buena idea, el FreeRTOS tiene soporte para PICs, pero es un poco más jodido de trabajar que el de CCS y se necesita del compilador de Microchip para programar con él.

Saludos
Reinier

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Dicusión sobre RTOS
« Respuesta #19 en: 17 de Junio de 2009, 20:01:58 »
A ver si me eplico un poco con utede, poque eto que me enseñan me deja como indio que no etiende.
:shock:
Yo nunca he tenido ese tipo de problemas, la razón no la se, quizá nunca me he preocupado demasiado de eso, cuando necesito temporizacoines precisas, combino el RTOS con TIMER, típicamente el TIMER1 + CCP y pongo en la ISR las cosas que no pueden depender de que al RTOS le de la gana de planificarme una tarea demasiado jodedora con los tiempos.

Creo yo que nos vendría muy bien un ejemplo, si no es mucho pedir  :mrgreen:

Pero si yo fuese ustedes ponía un minor_cycle 10 veces menor que el rate de la tarea más rápida, así me evito el jodido problema del aliasing, pero esta vez aplicado a la ejecución de las tareas.

Ahora yo he realizado tareas que se tienen que ejecutar cada 1 segundo, con un minor_cycle de 1ms y se ejecutan cada 800ms, porque es tanta la diferencia? Me arruina todo lo que tenia pensado hacer :5]

Cambiarse de RTOS es buena idea, el FreeRTOS tiene soporte para PICs, pero es un poco más jodido de trabajar que el de CCS y se necesita del compilador de Microchip para programar con él.
El lenguaje no seria problema, yo manejo C18 y además pasar de un C al otro no es tan complicado. Pero donde podremos conseguir material tal como has hecho tu con el de CCS. A mi me fue muy útil para entender este tema.

Modificado: Esto seguramente esta posteado en algún lado en el foro  :mrgreen: Curso de RTOS con FreeRTOS

Muchas gracias por tu tiempo reiniertl  :-/
« Última modificación: 17 de Junio de 2009, 21:36:01 por Suky »
No contesto mensajes privados, las consultas en el foro

Desconectado cerebro

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 735
Re: Dicusión sobre RTOS
« Respuesta #20 en: 17 de Junio de 2009, 20:09:12 »
 :( todavía no llegue al capitulo de las interrupciones pero ya conozco el problema me va a ser más fácil la solución, por el momento seguimos con el RTOS de CCS. FreeRTOS es prometedor pero lo que dice en la pagina me bajonea....
Citar
Please note that the segmented memory on the PIC18 makes it a less than ideal candidate for use with an RTOS.
Vamo' a tener que romper la alcancía y comprar algo de la gama alta  :mrgreen:.
 
Tomo nota de bajar el minor_cycle y en la próxima te paso todas las preguntontas que tengo por ahí.
Saludos y gracias por todo!!
LAS MALVINAS SON ARGENTINAS!

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Dicusión sobre RTOS
« Respuesta #21 en: 18 de Junio de 2009, 00:20:50 »
Ta lindon el tema!!! :mrgreen: :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Dicusión sobre RTOS
« Respuesta #22 en: 20 de Junio de 2009, 18:06:19 »
Hola compañeros! Yo también estoy entusiasmado en aprender RTOS, comencé con el de CCS. Pero tengo una duda existencial  :mrgreen: Yo declaro una tarea que se tiene que ejecutar cada 2ms por ejemplo:
Código: C
  1. #task(rate=2ms,max=1ms)
  2. void Tarea1(void);
Es la única tarea, la cual solo enciende un led y lo apaga durante 300us. Ahora como es la única yo pensé que se tenia que ejecutar exactamente cada 2ms, pero simulándolo en proteus veo que el pulso de 300us es exacto y la tarea se ejecuta cada 1.7ms  :?
Adjunto el código completo para ver si estoy declarando algo mal.

Esta duda surgió al realizar un cartel de leds como primer ejercicio (maté 2 pájaros de un tiro, también es mi primer cartel). Logre sincronizar de manera correcta las tareas para realizar el refresco y también para provocar cambios en el mensaje sin que ocurran distorsiones, pero después se me dio por controlar lo tiempos de ejecución y ahí fue que me encontré con este problema  :?

Muchas gracias!

Realice esta misma pregunta en el foro de CCS, en donde me dieron un link donde tenían los mismos problemas: RTOS tasks execution rates

Resulta ser un bug del compilador:  :z)
  • Para 4MHz y 8MHz funciona correctamente
  • Para 15MHz el compilador calcula el rate de las tareas para 20MHz
  • Para 20MHz funciona bien
  • Para 32MHz el compilador calcula el rate de las tareas para 40MHz
  • Para 40MHz funciona bien
  • Para 48MHz el compilador calcula el rate de las tareas para 40MHz

 :5]
No contesto mensajes privados, las consultas en el foro

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Dicusión sobre RTOS
« Respuesta #23 en: 20 de Junio de 2009, 19:02:34 »
Estupenda información, Suky. Ahora al menos sabemos cuál es la razón del problema.

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Dicusión sobre RTOS
« Respuesta #24 en: 20 de Junio de 2009, 19:34:00 »
Y q esperan para solucionarlo??? Ya conociendo el problema, con sentarse una semanita a codear se arregla!
Q tipos jaja.

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

Desconectado reiniertl

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1187
Re: Dicusión sobre RTOS
« Respuesta #25 en: 22 de Junio de 2009, 08:38:56 »
Nada parece que el RTOS no se ha constituido un producto fuerte de CCS, tendré que dar un curso on-line con tipo aula virtual para ver si se crea espectativa al respecto. A mi me gusta ese RTOS por lo simple que es, claro que lo considero un producto poco profesional, pero para entrarle al mundo del RTOS nada mejor qu eeso.

Saludos
Reinier

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: Dicusión sobre RTOS
« Respuesta #26 en: 22 de Junio de 2009, 12:26:27 »
Reiniertl, q RTOS preferis vos? Yo he sentido muy buenos comentarios de freeRTOS, pero cuando me dispuse a aprender, me parecio muy complicado :?
Ademas q es para c18 cierto? yo solo uso CCS... creo q es hora de migrar jeje
saludos!

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

Desconectado reiniertl

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1187
Re: Dicusión sobre RTOS
« Respuesta #27 en: 22 de Junio de 2009, 12:47:36 »
Desgraciadamente me cambié para profesor de la universidad y ahora lo menos que tengo es tiempo para estudiar o diseñar, situación que cambiaré para fines de año. Mucho trabajo incluso del tonto.

Así que me he quedado varado en eso de los RTOS, pero freeRTOS es un tipo fuerte, claro que primero tienes que familiarizarte con el C de Microchip y luego meterle el coco al FreeRTOS que tiene sus cosillas, pero después de ver 4 ó 5 veces los mismos ejemplos y el mismo código ya se le va perdiendo el miedo.

Ahora, hay otras cosas, como el uCLinux, que tengo entendido tiene puertos para los PIC24 y PIC32

Saludos
Reinier

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Dicusión sobre RTOS
« Respuesta #28 en: 22 de Junio de 2009, 12:50:20 »
Reiniertl, q RTOS preferis vos? Yo he sentido muy buenos comentarios de freeRTOS, pero cuando me dispuse a aprender, me parecio muy complicado :?
Ademas q es para c18 cierto? yo solo uso CCS... creo q es hora de migrar jeje
saludos!
Es para C de Microchip, y es conveniente usar el PIC de alta gamma, con un 18F es limitado por lo que he leído.
No contesto mensajes privados, las consultas en el foro

Desconectado reiniertl

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1187
Re: Dicusión sobre RTOS
« Respuesta #29 en: 22 de Junio de 2009, 13:30:46 »
Bueno los ejemplos que me he descargado de la página, que lo único que hacen es encender y apagar unos LED y creo que enviar una cadena por puerto serie son con un PIC18, si no me equivoco el PIC18F844 o algo así.

Claro que todo dependerá de la aplicación que uno quiera ponerle al PIC con el RTOS, pero seguro estoy que un equivalente a una aplicación desarrollada con un sistema operativo, será mucho más simple y eficiente que una hecha por medios tradicionales. Por cierto hablo de aplicaciones complejas, no de encender y apagar un LED.


Saludos
Reinier