Autor Tema: sincronizar 2 pics para funcion de avisos luminosos  (Leído 10719 veces)

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

Desconectado fastyx2

  • PIC16
  • ***
  • Mensajes: 109
Re: sincronizar 2 pics para funcion de avisos luminosos
« Respuesta #30 en: 16 de Julio de 2008, 20:30:09 »
lo entendi. compre un cd4094 y lo estuve toqueteando... :g)

me queda una duda: vamos a suponer que no tengo 44 entradas y salidas , sino 5 y 5 para simplificar.

llama la habitacion 1 , la entrada con los 4067 establece en su salida  la "direccion"1.este valor lo recojo en una entrada del pic y lo guardo en una variable x1.
ese estado de x1 debo colocarlo en la salida del pin del pic para que ingrese como data del cd4094.tengo que tambien ver de que manera activo un pulso de clock cuando hubo una novedad a la entrada(llamada).entonces ese bit se transfiere a la posicion q1 del cd4094 y el led se prende.

ahora llama la 3.analogamente guardo la variable x3 , pero ahora al colocar el dato en la entrada del cd40904 quedaria prendido el led 1 y el 2 cuando en realidad yo necesito que esté prendido el led 1 y el led3. por eso no entiendo la utilidad de desplazar los registros, salvo que haga todo un calculo para considerar el que estaba prendido ( 1 ) se desplace al 2 disparando un clock con un cero en el dato y luego otro dato en uno y otro clock con lo que quedaria 1(1) , 2 (0), 3 (1) , 4 (0) ,5 (0)
que lio no? o me estoy perdiendo algo... :lol:

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: sincronizar 2 pics para funcion de avisos luminosos
« Respuesta #31 en: 16 de Julio de 2008, 21:02:20 »
Es mas sencillo.

Tu tienes 44 salidas en bytes es 44/8 = 5,5 que redondenado quedan en 6 bytes. Puedes utilizar 6 posiciones de memoria para guardar los 44 estados de los pulsadores. Cuando alguien pulsa un botón, cambias de estado el bit que corresponda dentro del byte donde este asignado el bit. Al mismo tiempo activas el temporizador de cuenta de espera y envías los 6 bytes (bit a bit) al registro de desplazamiento, con lo que se renueva todos los valores del registro de desplazamiento. De esta forma tienes en memoria (en los 6 bytes) toda la información a introducir en el registro de desplazamiento.

Si tienes que modificar los valores del registro de desplazamiento, desactivas la salida, envías la información y vuelves a activar la salida, de esta forma no veras parpadeos extraños según se mueve la información.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado fastyx2

  • PIC16
  • ***
  • Mensajes: 109
Re: sincronizar 2 pics para funcion de avisos luminosos
« Respuesta #32 en: 16 de Julio de 2008, 22:38:58 »
gracias , no lo habia pensado desde la perspectiva de tener el paquete de 44 variables y cada vez que se cambiaba una , mandar otra vez el paquete modificado , y se me aclaró aun mas cuando leí que el tiempo de clock que maneja el cd4094 es de 200 ns con lo cual el paquete de datos completo de 44 variables es de 8,8 us.

lo que me queda por resolver es como hago para que las luces encendidas que no fueron atendidas ( lease pacientes) pasen de prendidas a parpadeantes :D

tendria que rebuscarmelas para poner a correr un contador y despues de determinado valor leer el dato que esta en el led ( si no se apago quiere decir que la enfermera no dió bola ) y cambiar el estado del led
« Última modificación: 16 de Julio de 2008, 22:46:41 por fastyx2 »

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: sincronizar 2 pics para funcion de avisos luminosos
« Respuesta #33 en: 17 de Julio de 2008, 01:48:37 »
Aquí tienes la forma de asignar las variables externas de los registros de desplazamiento a posiciones internas de memoria: Toma de datos de los Registros

Desconectado fastyx2

  • PIC16
  • ***
  • Mensajes: 109
Re: sincronizar 2 pics para funcion de avisos luminosos
« Respuesta #34 en: 17 de Julio de 2008, 08:04:35 »
gracias pocher por contestar!

voy a leerlo atentamente y despues te cuento lo que entendi :D

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: sincronizar 2 pics para funcion de avisos luminosos
« Respuesta #35 en: 17 de Julio de 2008, 19:33:16 »
lo que me queda por resolver es como hago para que las luces encendidas que no fueron atendidas ( lease pacientes) pasen de prendidas a parpadeantes :D

tendria que rebuscarmelas para poner a correr un contador y despues de determinado valor leer el dato que esta en el led ( si no se apago quiere decir que la enfermera no dió bola ) y cambiar el estado del led

Es muy sencillo, recuerda que este integrado tiene una patilla de control de la salida. Si activas y desactivas la salida de estos integrados tendrás parpadeando los leds.

un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado fastyx2

  • PIC16
  • ***
  • Mensajes: 109
Re: sincronizar 2 pics para funcion de avisos luminosos
« Respuesta #36 en: 17 de Julio de 2008, 20:38:40 »
gracias por contestar!

si , es una excelente idea , lo que ocurre es que queria que sea selectivo , es decir , si la habitacion 23 fue llamada hace 10 minutos que esté ya parpadeando pero no la de la habitación 26 que fue llamada hace 1 minuto ( concepto de prioridad ).

por eso en un principio habia pensado en 3 pic16f877 , ya que puedo manejar a las salidas en forma independiente...

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: sincronizar 2 pics para funcion de avisos luminosos
« Respuesta #37 en: 17 de Julio de 2008, 21:45:26 »
Hola.

Creo que acá tus limitaciones son meramente de programación. No lográs abstraer el problema y plasmarlo en un algoritmo que responda a tus requerimientos.

¿Cómo haría yo para lograr lo que necesitás?(lo hago para 48 habitaciones)

Primero: Almacenaría el estado actual de los pulsadores, en un array de 48 bits(6 bytes).Lo llamaré TEMPORAL. Un bit por pulsador. Entonces, un algoritmo debe ir controlando los 3 4067 e ir volcandolos en este arreglo.

Ahora otro array idéntico. Lo llamaré ESTADO, de 48 bits(6 bytes), que almacenen el estado en que se encuentra la habitación(los inicializaría todos a cero, y un 1 indicaría que se ha presionado el pulsador en el pasado de esa habitación).

Una vez finalizado el barrido de los pulsadores, hago una IOR entre los dos array. El resultado de ESTADO IOR TEMPORAL se guarda en ESTADO.

Segundo: cada habitación tiene 1 byte asignado para que cuente cierta unidad de tiempo desde que se presionó el pulsador de dicha habitación.
Entonces acá necesitás un tercer array de 48 bytes.Lo llamaré, TIEMPO, y debería ser inicializado todo a cero.

Tercero: Un algoritmo que cuente tiempo. Yo voy a elegir períodos de 1 segundo. Para esto vas a tener que usar un timer y un registro auxiliar probablemente. Supongamos que el timer interrumpe cada 50ms. Entonces con un registro auxiliar(lo llamaré VEINTEAVOSEG) contarás 20 veces para lograr un segundo. Pero lo seguiría haciendo contar hasta 200. Lo usaría como doble timer. Contando lapsos de 1 segundo y de 10 segundos.

Entonces, hago VEINTEAVOSEG MOD(% en CCS) 200.Si eso da 0, entonces transcurrieron 10 segundos. Si esto es cierto, hago que VEINTEAVOSEG vuelva a valer 0 para volver a contar y además, recorro el array ESTADO de los pulsadores. Si un bit del array ESTADO está en 1,incremento el elemento del array TIEMPO asociado en una unidad(siempre teniendo cuidado de que no desborde. Si el elemento del array TIEMPO vale 255, no lo incremento.Lo dejo en 255).

Luego si haciendo VEINTEAVOSEG MOD 20 obtengo 0, he contado un segundo.Entonces, invierto el valor de un flag(1 bit) que llamaré LED_ON_OFF.

Cuarto: El algoritmo que lo une todo. Si VEINTEAVOSEG MOD 20 dió cero, entonces es hora de refrescar los LEDs.
Recorro uno a uno los elementos(bits) del array ESTADO. Si está en 0, envío un cero al LED asociado. Si está en 1, entonces:
Compruebo el valor del elemento correspondiente del array TIEMPO. Si su valor excede un valor prefijado(Digamos, por ejemplo: 60(60*10 = 600 segundos=10 min) entonces, lo enciendo si LED_ON_OFF está en 1, lo apago si LED_ON_OFF está en 0.
Si su valor no excede dicho valor prefijado. Enciendo el LED.

El barrido de los LEDS y posterior análisis es lo único que tendrías dentro de un bucle. Lo otro sucedería con interr, pero como te conviene priorizar la deteccion de los pulsadores, desactiva las interr globales antes del barrido y volve a activarlas al terminar el análisis. Total, el error de tiempos que te genera es infimo.

El botón de RESET pone a cero el array TIEMPO y ESTADO. En máximo un segundo, deberían apagarse todas las luces.

¿Capiche?

Saludos.
« Última modificación: 17 de Julio de 2008, 21:49:17 por BrunoF »
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado fastyx2

  • PIC16
  • ***
  • Mensajes: 109
Re: sincronizar 2 pics para funcion de avisos luminosos
« Respuesta #38 en: 17 de Julio de 2008, 22:20:14 »
bueno , es justamente lo qu yo decia :D

espero que ese capische no tenga connotaciones napolitanas no?

voy a leer atentamente lo qu escribiste . gracias por ayudar

Desconectado Juluma

  • PIC10
  • *
  • Mensajes: 1
Re: sincronizar 2 pics para funcion de avisos luminosos
« Respuesta #39 en: 21 de Julio de 2008, 13:04:29 »
Buenas

No sé si alguien lo ha comentado ya, pero en la revista digital ucontrol número 3 hay una sección donde se habla de los registros de desplazamiento para el manejo de una matriz de leds:

http://www.ucontrol.com.ar/wiki/index.php/Revista_Numero_0003

Desconectado fastyx2

  • PIC16
  • ***
  • Mensajes: 109
Re: sincronizar 2 pics para funcion de avisos luminosos
« Respuesta #40 en: 23 de Julio de 2008, 11:37:43 »
gracias Juluma por contestar!

Si  , es verdad lo que decis respecto al numero de la revista, de hecho lo he leido conforme a las palabras del Maestro Maunix que rezan : lee,lee,lee y despues pregunta :D :D :D

El tema de mi limitación estaba centrada en que no le encontraba la utilidad al registro de desplazamiento en la aplicación , hasta que BrunoF me explicó qué podia hacer con ellos.