Autor Tema: Presentación y duda con Rtos  (Leído 3289 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado DidiDodo

  • PIC10
  • *
  • Mensajes: 4
Presentación y duda con Rtos
« en: 30 de Abril de 2007, 07:56:27 »
Primero me presento, mi nombre es David y soy de España. Aunque llevo leyendo varios meses el foro (por cierto, es de lo mejor) me he decidido a escribir porque ando atascado, con un proyecto en base a microcontroladores PIC.

Mis dudas son quizás básicas para muchos pero ahí van:
 -El acceso a una posicción de memoria, ¿se consideraría un recurso compartido?
 -La lectura/escritura de un puerto de I/O ¿se consideraría tambien un recuerso compartido?

Mi opinión es que NO pero implementando las tareas en el compilador y después simulandolas en el Proteus me da problemas, no sé por qué pero se me resetea el microcontrolador...

El caso es que probando las tareas por separado y todas están OK.Si voy probandolas juntas llega un momento que se resetea. No parece que rija ningún criterio aparente porque por ejemplo, el sistema funciona bien y le añado la tarea "segundero" que es simplemente una funcion que, cada segundo, incrementa un contador. Entonces ya el sistema se resetea!!... En fin, no sé si es problema mío o del simulador.

Agradecería cualquier idea.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Presentación y duda con Rtos
« Respuesta #1 en: 30 de Abril de 2007, 08:28:26 »
Mis dudas son quizás básicas para muchos pero ahí van:
 -El acceso a una posicción de memoria, ¿se consideraría un recurso compartido?
 -La lectura/escritura de un puerto de I/O ¿se consideraría tambien un recuerso compartido?

Mmm, no me queda claro a que te quieres referir con "recurso compartido". Puedes aclarar más a qué te refieres?
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Presentación y duda con Rtos
« Respuesta #2 en: 30 de Abril de 2007, 08:53:18 »
No tengo ni idea de RTOS, pero por lo que he leído en el magnífico hilo de Reinier (Sistemas operativos en PIC) la lectura de una posición de memoria no debería considerarse como un recurso en exclusiva, aunque quizás sí su escritura.

Igual con el puerto de I/O; no deberías tener problemas para leerlo, pero quizás sí deberías reservártelo para escribir.

Maunix, en ese link se habla de los recursos compartidos...

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Presentación y duda con Rtos
« Respuesta #3 en: 30 de Abril de 2007, 09:10:19 »
Maunix, en ese link se habla de los recursos compartidos...

Gracias, manolo. 

Quería darle la oportunidad a que DidiDodo aclare un poco mejor.  En las Pcs, el recurso compartido es algo que tiene sentido en cierto contexto, tal vez el esté hablando de otro tipo de cosa cuando diga "recurso compartido".  Muchas veces se nombra una cosa por otra.

En las pcs, los puertos tampoco son "compartidos".  Una aplicación toma el puerto serie, y hasta que dicha aplicación no lo libera, otra no lo puede usar.  Lo mismo sucede con el puerto de impresora, un puerto USB en específico, etc.


- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado DidiDodo

  • PIC10
  • *
  • Mensajes: 4
Re: Presentación y duda con Rtos
« Respuesta #4 en: 30 de Abril de 2007, 11:28:39 »
Vale, os comento un poco más la idea del proceso.

La idea del proyecto es un control climático de un invernadero en base a PIC. Las placas encargadas de la actuación recogen las consignas, de un sistema de control (aún tengo que idearlo), mediante una red RS-485 bajo protocolo Modbus. Las rutinas de manejo del puerto serie funcionan bien. Acontinuación os pego las definiciones de las tareas para que les echeis un vistazo:

#use RTOS (timer=0,minor_cycle=1ms)  //Utilizo un 16f977 a 4Mhz

#task (rate=1s)
void nebulizacion(void); //Activa una electrovalvula cada cierto tiempo

#task (rate=100ms)
void seguridades(void); //Se encarga de desactivar los motores cuando llegan a unos finales de carrera o se excede el tiempo

#task (rate=200ms)
void malla(void);  //Controla el motor de la malla de sombreo

#task (rate=300ms)
void auto_calibracion(void); //Cuenta pulsos de los encoders

#task (rate=1s)
void segundero(void); //Simplemente cuenta segundos

#task (rate=100ms)
void comunicaciones(void); //Se encarga de la atención de las comunicaciones

#task (rate=5ms)
void encoders(void);  //Testea el puerto_e (entradas de encoders) para ver cuando se produce un pulso

#task (rate=200ms)
void calefaccion(void); //Abre o cierra la valvula motorizada para la entrada de agua caliente

#task (rate=200ms)
void ventilacion(void); //Similar a "calefaccion" pero para la apertura y cierre de las ventanas del invernadero

#task (rate=1ms,queue=1)
void gestor_salidas(void);
 //Se encarga de gestionar la escritura del puerto_b, en función de los mensaje recibidos de los otras funciones

Esto es a grandes rasgos en lo que respetecta a actuación. Si no veo salida tendré que morir al palo e introducir un autómata aunque no me guste la idea :(

Desconectado microman

  • PIC10
  • *
  • Mensajes: 17
Re: Presentación y duda con Rtos
« Respuesta #5 en: 30 de Abril de 2007, 12:14:12 »
Tu dices q las tareas t funcionan bien por separado... Sólo q al juntarlas t da problemas... Has visto cual de las tareas t ocaciona problemas... Tomalos en grupos pequeños y vas añadiendo las tareas hasta  que se te presente la falla.  Talvez debas aumentar la cola en tu tarea de gestor de salidas y aumentar su rate...

Saludos

Desconectado DidiDodo

  • PIC10
  • *
  • Mensajes: 4
Re: Presentación y duda con Rtos
« Respuesta #6 en: 30 de Abril de 2007, 17:13:28 »
Ni idea microman... Al final la solución era más sencilla de lo que parecía.

He adaptado las funciones y simplificandolas (no sé... estaba emperrao en complicarme la vida) lo he solucionado.  :mrgreen:

De todas formas, sigo sin saber por qué me pasaba eso. ?????

En fin... muchas gracias a todos y prometo volver a escribir (fijo que me surgen más problemas jejeje)

Desconectado reiniertl

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1187
Re: Presentación y duda con Rtos
« Respuesta #7 en: 01 de Mayo de 2007, 20:28:20 »
Por lo que he visto en las definiciones de tareas que has hecho. he notado dos cosas interesantes:

La primera es la cantidad de tareas que has definido, esto puede ser un problema porque mientras más tareas tengas, más memoria de datos y programas consumes, memoria de datos (RAM) para guardar el estado y registros de las tareas y memoria de programas poruqe cada tarea es una función especial que es llamada por el dispatcher del RTOS. Pero en principio no importa cuantas tareas tengas, si tienes suficiente memoria, todo debe marchar Ok, aunque no dudo que hayan algunos bugs en el RTOS, y CCS en eso es bastante reservado, no te dicen mucho acerca de su RTOS.

Lo segundo y creo que es allí donde está el problema, es que le pones solo un byte en la cola a la tarea "gestor_salidas", en mi hilo encontrarás que yo tuve problemas con las tareas que solo requerían un byte para mensajes y tuve que poner n+1 bytes en la cola, porque el sistema se olgaba, la razón no la sé, en el simulador se colgaba, así que no dudo que en la vida real también, prueba a poner 2 bytes en la cola de esa tarea a ver que pasa. Esto seguramente es una cagada de CCS, pero que le vamos a hacer, si con n+1 bytes pincha Ok, entonces n+1 bytes de cola y ya está resuelto.

Un saludo Reinier
PD0: Puedes pasar por el hilo y aclarar algunas dudas al respecto.
PD1: A los amigos del foro, no se desesperen que esta semana les pongo el próximo post en el hilo de RTOS, es que tengo un enrredo grande en el trabajo y no he tenido tiempo de escribir.




Desconectado DidiDodo

  • PIC10
  • *
  • Mensajes: 4
Re: Presentación y duda con Rtos
« Respuesta #8 en: 04 de Mayo de 2007, 14:40:58 »
Jejejejje... ¡¡Contigo tenía ganas de topar!! Muy interesante tu hilo sobre el Rtos del compilar de CCS. La verdad es que solucioné ya ese problema y como aún me queda tarea por hacer no me he querido meter más en el por qué del fallo.

Ahora ando con la placa que se encargará del control y las comunicaciones del sistema... Espero que no me dé muchos quebraderos de cabeza.

Un saludo y nos leemos por aquí.