Autor Tema: Ejecutar procesos dentro o fuera de un muestreo  (Leído 2296 veces)

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

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Ejecutar procesos dentro o fuera de un muestreo
« en: 01 de Febrero de 2007, 13:40:16 »
Hola amigos.

Esta duda siempre la he tenido desde que empecé a escribir códigos donde se usa el muestreo.

Digamos que tengo un pic donde ocurre un proceso en el que cada 100uS el pic toma una muestra, además el micro debe ejecutar otro proceso en el que debe tomar esa muestra y enviarla a otro dispositivo, entonces ahí viene mi pregunta ¿este 2º proceso debe hacerse dentro o fuera del intervalo de muestreo (o sea dentro ó fuera de los 100uS)?

digo esto puesto que la muestra no debería ser interrumpida, en los casos que he aplicado esto me las he ingeniado para que sobre tiempo dentro de esa ranura y meter las instrucciones necesarias para ejecutar un segundo, tercer proceso. (cambiando a mayor frecuencia algunas veces) Pero yo creo que no siempre será así.

Salu2
Pedro
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Ejecutar procesos dentro o fuera de un muestreo
« Respuesta #1 en: 01 de Febrero de 2007, 14:59:24 »
Si las muestras que entran son siempre cada 100useg, tu procesamiento de dicho dato deberá ser menor que este cálculo.

Una forma es por ej, guardar el valor A/D en una variable temporal y marcar un flag en la rutina de interrupción (asumiendo que lo haces por interrupción).  En el bloque principal del programa te fijas si el flag está encendido , en cuyo caso lo haces 0 y comienzas el proceso de la señal, tomando la variable temporal y pasandola a otra variable que sería la variable del cálculo. 

Si durante el cálculo justo llega otra señal , se guardará en la variable temporal y se volverá a encender el flag (lo cual no importa ya que no usamos más la variable temporal y el flag fue borrado al principio).

El tema es que tarde o temprano si tu cálculo demora más que 100useg, llegará el momento en que estés con un dato terminando de calcular, tengas un dato temporal esperando y llegue el nuevo dato temporal.

Saludos
- 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 PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Ejecutar procesos dentro o fuera de un muestreo
« Respuesta #2 en: 02 de Febrero de 2007, 15:56:46 »
...
El tema es que tarde o temprano si tu cálculo demora más que 100useg, llegará el momento en que estés con un dato terminando de calcular, tengas un dato temporal esperando y llegue el nuevo dato temporal.

Saludos

Gracias Maunix por responder, muy importante este último punto que planteas, entonces ese será el caso extremo para un muestreo donde deben ocurrir al menos dos procesos, me imagino que esa variable temporal viene siendo algo así como un buffer, donde los datos recientes se cargan en espera de terminar de procesar el dato anterior.

en el montaje que estoy haciendo, no he calculado aún si el tiempo de transmisión de datos es mayor ó menor al tiempo de muestreo del CAD, voy hacer unas pruebas y les comentaré.

se que esto que estoy diciendo se sale ya de un caso en particular pero hay muchas aplicaciones donde se usa una memoria intermedia donde se almacenan la información reciente (multimedia, documentos para imprimir) y pienso que algo similar se puede aplicar al procesamiento de datos con uC PIC.

Salu2
Pedro
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Ejecutar procesos dentro o fuera de un muestreo
« Respuesta #3 en: 02 de Febrero de 2007, 17:29:53 »
se que esto que estoy diciendo se sale ya de un caso en particular pero hay muchas aplicaciones donde se usa una memoria intermedia donde se almacenan la información reciente (multimedia, documentos para imprimir) y pienso que algo similar se puede aplicar al procesamiento de datos con uC PIC.

De hecho, el uso de buffer y memorias intermedias es de uso corriente en los pics también.

Saludos
- 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)