Autor Tema: Concurrencia en CCS PICC  (Leído 8050 veces)

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

Desconectado tornar

  • PIC18
  • ****
  • Mensajes: 342
Concurrencia en CCS PICC
« en: 18 de Diciembre de 2004, 07:01:00 »
Hola, hoy estaba studiando la asignatura de programacion concurrente, y viendo que muchos lenguajes tienen caracteristicas que permiten la utilizacion de herramientas para manejar concurrencia (semaforos, monitores, regiones criticas, etc.), y estaba pensando si C, en particular el compilador CCS PICC, tiene alguna de estas herramientas implementadas para manejar la concurrencia en algunas de sus librerias, o de lo contrario me lo deberia implementar yo. Si alguien ha realizado algun programa en cCS PICC que use concurrencia le agradeceria que me indicase el codigo, librerias, rutinas, etc. que ha utilizado.

Saludos. Giño

Desconectado oshow

  • PIC18
  • ****
  • Mensajes: 321
RE: Concurrencia en CCS PICC
« Respuesta #1 en: 18 de Diciembre de 2004, 09:45:00 »
Aquí la gran mayoría de nosotros somos electrónicos o no somos informáticos así que ese rollo de semaforos y demás pues nos sonará a chino (a mí al menos me suena a chino, nunca lo he visto). Supongo que los informáticos sabrán mejor de lo que hablas.

De cualquier manera, el compilador de ccs no es tan standard como pueda ser un compilador de c para hacer programas para un PC, por ejemplo no permite recursividad ni otro tipo de operaciones que se pueden realizar en ese tipo de compiladores.

No sé, quizas el compilador de www.htsoft.com o el de www.iar.com, te permitan realizar esas operaciones que comentas (como puede ser la recursividad o concurrencia).  Yo reconozco que uso el ccs por la cantidad de cosas implemtadas que trae, pero nunca he visto eso que comentas.

Estaría bien que comentases en que consisten eso de los semaforos o en que pueden ser útiles para la programación de microcontroladores (para los que como yo no tenemos ni idea de lo que es o en lo que se puede usar).


Un saludo.


Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Concurrencia en CCS PICC
« Respuesta #2 en: 18 de Diciembre de 2004, 10:25:00 »
Yo hasta donde sé sobre el concepto de concurrencia o programación concurrente me hace pensar en la ejecución simultánea de procesos,o mas bien de forma "paralela".En esto entra en juego el sistema operativo,es decir,a cada proceso el sistema operativo le adjudica un intervalo de tiempo o "cuanto".Si un proceso no acaba de ejecutarse durante la duración de su cuanto,dicho proceso se coloca en una cola de procesos en la que intervienen prioridades y mas cosas...
No sé si esto es simplemente cuestión de software o depende también de la arquitectura del procesador.Si lo vemos desde ese punto de vista,es dificil imaginar a un pic actuando de forma concurrente,aunque si pensamos en un proceso que se está ejecutando hasta que en un momento dado para de hacerlo para que se ejecute una rutina de interrupción,esto bien podría considerarse como un programa que se ejecuta con un cierto nivel de concurrencia.

Desconectado oshow

  • PIC18
  • ****
  • Mensajes: 321
RE: Concurrencia en CCS PICC
« Respuesta #3 en: 18 de Diciembre de 2004, 10:36:00 »
Ahhh bueno, ya entiendo algo más o menos... perdonad mi metedura de pata, jejeje

Pero supongo que hacer un sistema operativo para el pic no es nada fácil, yo he visto uno comercial que posteó Marqués hace tiempo, tiene una versión demo.

http://www.pumpkininc.com/

Mira a ver si es eso a lo que te referias, y lo dicho, perdonad que confundiera la concurrencia con la recursividad, soy un metepatas, jejej.

Un saludo.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Concurrencia en CCS PICC
« Respuesta #4 en: 18 de Diciembre de 2004, 11:28:00 »
Oye que yo apenas se nada sobre el tema.Puse el ejemplo del sistema operativo porque en un pc funciona asi.La cuestión es que la concurrencia creo que es algo reservado exclusivamente a pc"s que cuenten con procesadores capaces de llevar mas de una vía de ejecución (creo que se denomina pipeline...en pentium y similares).Esto consiste,resumiendo bastante,en conseguir,mediante recursos hardware,ejecutar en un único ciclo máquina más de una instrucción máquina,perimitiendo así el llevar para adelante diferentes procesos paralelamente.Si pensamos en el pic esto es claramente imposible,pero como bien dice oshow,se podría hacer una especie de emulación del pipeline implementando por software esa gestión cronológica de procesos que lleva a cabo un sistema operativo

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Concurrencia en CCS PICC
« Respuesta #5 en: 18 de Diciembre de 2004, 11:38:00 »
Seguramente no sea esto a lo que se refiere tornar, pero si de lo que se trata es de la ejecucion de procesos paralelos independientes, eso si se puede implementar con un PIC. No teneis mas que aplicar las reglas del GRAFCET (Automatas) de la convergencia y divergencia al PIC.

Un saludo

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Concurrencia en CCS PICC
« Respuesta #6 en: 18 de Diciembre de 2004, 12:21:00 »
¿En qué consiste eso del grafcet, Pocher?

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Concurrencia en CCS PICC
« Respuesta #7 en: 18 de Diciembre de 2004, 12:25:00 »
Espera que te lo busco. Hace tiempo ya me lo preguntaron y creo que deje un ejemplo.

Desconectado pacalaconcurso

  • PIC24F
  • *****
  • Mensajes: 718
RE: Concurrencia en CCS PICC
« Respuesta #8 en: 18 de Diciembre de 2004, 12:36:00 »
si te refieres a manejar procesos de forma paralela es posible programarlos en un pic sin mayor problema usando una programacion por estados y usando un timer general para no dejar el micro esperando si necesitas usar delays...

si te refieres a usar un RTOS tambien es posible hacerlo (existen varios por ahi rulando, basados en el standart OSEK/VDX para la industria de automocion) el tema es que el CCS no maneja bien punteros a funciones asi que debes migrar a C18 o HT.

no creo que realmente necesites un RTOS, si tu programa lo estructuras de forma correcta puedes (yo lo tengo en varias aplicaciones) varias tareas (mas de 10 en mi caso) con tu tiempo de scan por debajo de 50 ms.

dale un vistazo al graftcet que te anota pocher, el tener tu programa estructurado en papel es imprescindible... el teclear es menos del 10% del tiempo que se emplea en el desarrollo de un programa.


saludos

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Concurrencia en CCS PICC
« Respuesta #9 en: 18 de Diciembre de 2004, 12:40:00 »
Aqui tienes el ejemplo: http://miarroba.com/foros/ver.php?foroid=132139

El ejemplo no es de secuencias simultaneas, es muy simple para que la gente se entere. Para secuencias simultaneas es lo mismo pero llevando varias ramas activas al mismo tiempo.

La teoria del GRAFCET es sencillisima, son 6 o 7 hojas muy faciles de entender. Lo inventaron los franceses para aplicarlo a un automata, creo que era el de Telemecanique. Si os interesa buscar en Google, hay mucha informacion.

Un saludo

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Concurrencia en CCS PICC
« Respuesta #10 en: 18 de Diciembre de 2004, 12:56:00 »
Por cierto Modulay que agradable sorpresa, ya me extrañaba no ver al amigo Biot desde hace mucho tiempo.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Concurrencia en CCS PICC
« Respuesta #11 en: 18 de Diciembre de 2004, 13:57:00 »
jaajaj no me digas que no sabías que era yo,yo si q me he sorprendidoSonrisa GiganteSonrisa Gigante

Echaré un vistazo a eso de los autómatas tiene q estar muy pero que muy interesante

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Concurrencia en CCS PICC
« Respuesta #12 en: 18 de Diciembre de 2004, 19:49:00 »
Intenté simularlo pero da error.El código está escrito para un 16F876 mientras que en proteus lo que usaste es un 16F84.Cambié y compilé el código pero no rula

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Concurrencia en CCS PICC
« Respuesta #13 en: 19 de Diciembre de 2004, 04:12:00 »
Estoy de limpieza a la fuerza en el ordenador. Instalo el compilador, lo pruebo, lo arreglo y lo dejamos en alguna carpeta de ejemplos.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
RE: Concurrencia en CCS PICC
« Respuesta #14 en: 19 de Diciembre de 2004, 13:11:00 »
Pues cambie el PIC para un 84 (por no cambiar el dibujo) y si que va.

De todas formas lo he redibujado para un 876, he cambiado el PIC en el codigo y tambien va. Como es una simulacion y no esta inicializada a 0 la posicion 0x00 de la EEPROM se disparan las dos salidas simultaneamente (el PROTEUS creo que no dejaba inicializar posiciones de la EEPROM, el MPLAB creo que si). En caso de montaje real con el programa grabador se debe inicializar esta posicion a 0.

Este ultimo es el que te mando para que lo incluyas en la carpeta de proyectos. Te lo mando al correo.

Un saludo