Autor Tema: Usar mas de una salida en niple  (Leído 9468 veces)

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

Desconectado parsek

  • PIC10
  • *
  • Mensajes: 13
Usar mas de una salida en niple
« en: 18 de Noviembre de 2012, 19:15:06 »
Hola a todos y enhorabuena por el foro.
Me imagino que mi pregunta sobre el programa niple les resultará muy básica pero a mi me está volviendo loco
porque no soy capaz de solucionarlo.
Mirando algún manual de niple he conseguido crear un programa muy básico para hacer que la salida GP0 de un
12f629 pase de nivel alto a bajo sucesivamente y con tiempos variables definidos por mi mediante el comando
tiempos por ciclos.
Queda así:
http://img855.imageshack.us/img855/4715/niple1.jpg
Hasta ahora perfecto pero surge la necesidad de activar también la salida GP1 con unos tiempos distintos a GP0 y
aquí surge el problema porque si intento configurar una salida más salta un error de configuración con el mensaje "no se admiten más salidas", como éste:
http://img542.imageshack.us/img542/7857/niple2.jpg
He probado de todas formas y leido tutoriales o vídeos con ejemplos pero no encuentro el caso de activar más de una salida.
¿Qué estoy haciendo mal?

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: Usar mas de una salida en niple
« Respuesta #1 en: 19 de Noviembre de 2012, 09:07:12 »
Hola Parsek, el mensaje que te sale es debido a que tienes seleccionado el bloque de colocar las salidas = 0 en el pùerto A. Un bloque como ese solo admite una entrada y una salida.
Pero si te fijas lo que estas realizando es poniendo todo el puerto A completo con el valor =0 y despues colocas de manera redundante el bit GP0=0.
Pienso que para lo que quieres realizar, en principio te sobra el bloque de A=00000000 y si lo que quieres trabajar con varios bits tendras que manejarlos de forma individual es decir con GP0 y GP1 por ejemplo.
En tu programa sería:
GP0=0
tiemp 5 segundos
GP0=1
tiempo 2segundos
GP1=0
tiempo el que quieras
GP1=1
tiempo el que quieras

volver al inicio.

¿es eso lo que quieres realizar?

F.
Todos los días se aprende algo nuevo.

Desconectado lucegiar2005

  • PIC24F
  • *****
  • Mensajes: 504
Re: Usar mas de una salida en niple
« Respuesta #2 en: 19 de Noviembre de 2012, 09:47:08 »
Buenos dias Fermin, parsek y al foro. Una ves ma´s entro de metiche, espero que sirva lo que diga. Según me parece entender lo que no resuelve parsek es modificar el estado de varias salidas simultaneamente o cuasi simultaneas, si es eso lo podes manejar con la escritura del puerto con el valor binario deseado, es decir
A= 01010
donde los "1" ponen en alto las salidas A2 y A4 respectivamente y en bajo a las demás, pasado el tiempo deseado
A= 10101
invierte los niveles de las salidas.
Intertanto se pueden manejar individualmente cada una a gusto.
Tambien podes hacer:
A0=1, A1=1, A4=1, etc..
x tiempo A1=0,
x tiempo A0=0,
x tiempo A4=0,
donde x= tiempo deseado y el oreden de cambio sera el deseado.
Estoy en el trabajo por lo que no puedo hacer un grafico de lo que digo, pero espero ser claro y colaborar con el tema en la medida de lo posible. Un abrazo a todos.
- Santiago -

Desconectado parsek

  • PIC10
  • *
  • Mensajes: 13
Re: Usar mas de una salida en niple
« Respuesta #3 en: 19 de Noviembre de 2012, 14:30:46 »
Hola Fer TACA, lucegiar2005 y a todos.
Ante todo gracias por vuestras respuestas, me han orientado mucho sobre el tema.
Fer TACA lo has pillado a la primera pero aún así tengo una duda.
Entiendo que me sobra el bloque A=D00000000, eso lo copiaba de un tutorial para encender y apagar un sólo led (perdón por mi ignorancia).
Lo que quiero hacer es empezar con GP0 a 0 y al mismo tiempo GP1 a 1. Tras 5 segundos GP0 pasa a 1 y tras 2 segundos vuelve a 0 e incluso añadir más tiempos distintos, así sucesivamente, en bucle.
El problema es que al mismo tiempo que GP0 empieza su secuencia también lo tiene que hacer GP1 y/o GP2, GP3... con una secuencia distinta a GP0, más o menos larga como bien ha entendido lucegiar2005.
Básicamente quiero tratar las salidas independientemente, con tiempos distintos para cada una pero varias salidas a la vez.
Entonces mi pregunta es:
¿Dónde coloco el valor del bit de GP1, GP2..., en el diagrama?, ¿a continuación de GP0?, es ahí donde me hago un lío...
Disculpad mi ignorancia en éste tema y muchas gracias por vuestra atención.
« Última modificación: 19 de Noviembre de 2012, 16:03:42 por parsek »

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: Usar mas de una salida en niple
« Respuesta #4 en: 19 de Noviembre de 2012, 15:45:51 »
Si lo que quieres es ir manejando distintos tiempos en distintos bits quizas seria bueno que lo realizases con interrupciones y contadores distintos para cada bit.
Me explico creas una base de tiempos con la interrupcion por ejemplo 1sg y a cada bit le asignas un contador
Luego con cada interrupcion incrementas todos los contadores  y a continuacion comparas el valor de cada uno con el valor del tiempo de cada secuencia. Segun el valor pues asi vas activando 1 u 0 a cada bit.
Recuerda que una vez alcanzado el maximo de tiempo de cada una de las secuencias (contadores) debes reponerlos a =0.

F.
Todos los días se aprende algo nuevo.

Desconectado parsek

  • PIC10
  • *
  • Mensajes: 13
Re: Usar mas de una salida en niple
« Respuesta #5 en: 19 de Noviembre de 2012, 16:32:56 »
Hola de nuevo.
Lo siento Fer TACA pero ahí me pierdo, el tema de interrupciones y bases de tiempos me es desconocido por completo y creo que se me haría bastante complicado.
¿No existe alguna forma más sencilla de poder activar las dos salidas simultáneamente pero con tiempos distintos?

Desconectado lucegiar2005

  • PIC24F
  • *****
  • Mensajes: 504
Re: Usar mas de una salida en niple
« Respuesta #6 en: 19 de Noviembre de 2012, 20:45:34 »
Hola nuevamente. Parsek: si pudieses poner un ejemplo de secuencia que desees y en texto, quizá podremos tener un ejemplo de desarrollo y te sea más fácil comprender. Hacé uno que diga: inicio así, a los xseg el pin x=?, a los xseg el pin x=?, etc., pudiendo cambiar los niveles altos o bajos de cualquier pin que desees. Un abrazo.
- Santiago -

Desconectado lucegiar2005

  • PIC24F
  • *****
  • Mensajes: 504
Re: Usar mas de una salida en niple
« Respuesta #7 en: 19 de Noviembre de 2012, 22:36:21 »
Acá te dejo un .rar con un archivo de Proteus, 2 .hex para que veas como funcionan, y 2 .jpg que corresponden a una imagen del programa que hace lo mostrado. Son 2 modos de hacer lo que creo que querías. Espero te saque un poco del pozo.
- Santiago -

Desconectado parsek

  • PIC10
  • *
  • Mensajes: 13
Re: Usar mas de una salida en niple
« Respuesta #8 en: 20 de Noviembre de 2012, 08:49:05 »
Hola lucegiar2005.
Creo que los ejemplos que me has dado son exactamente lo que busco, el modo 2 de tu ejemplo creo que se adapta a lo que necesito (corrígeme si me equivoco), de todas formas te explico la secuencia que necesito:
Inicio-GP0=1,GP1=1,GP2=0, a los 3 segundos GP0=0, a los 2 segundos de INICIO GP1=0, a los 10 segundos de INICIO GP2=1.
a los 20 segundos de GP0=0 pasa a GP0=1, a los 12 segundos de GP1=0 pasa a GP1=1, a los 5 segundos de GP2=1 pasa a GP2=0
Se ponen en bucle GP0 y GP1 para que repitan la secuencia salvo GP2 que se queda en 0 hasta que se resetee el pic.
Realmente lo que me interesa es aprender a modificar las secuencias a mi gusto para adaptarlas a mis necesidades (en éste caso serán para
el disparo de cargas pirotécnicas) y así poder adaptar el número de salidas que necesite en cada caso y los tiempos entre ellas.
Espero no haberme liado mucho con la explicación de lo que necesito y te agradezco sinceramente tu tiempo.
Un abrazo.
« Última modificación: 20 de Noviembre de 2012, 08:53:45 por parsek »

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: Usar mas de una salida en niple
« Respuesta #9 en: 20 de Noviembre de 2012, 08:52:43 »
Hola Santiago,

lo que dices estariá bien, si la secuencia fuera de manera secuencial pero fijate que dice que:

El problema es que al mismo tiempo que GP0 empieza su secuencia también lo tiene que hacer GP1 y/o GP2, GP3... con una secuencia distinta a GP0, más o menos larga como bien ha entendido lucegiar2005.
Básicamente quiero tratar las salidas independientemente, con tiempos distintos para cada una pero varias salidas a la vez.
para realizar esto , lo unico que se me ocurre es lo que explique: con interruciones.

Parsek: La interrupcion es un evento que se te va a producir de forma periodica y con un tiempo determinado que puedes fijar tu mismo. De este modo por ejemplo fuedes fijar un tiempo de 0,5sg (o el que tu quieras). De esta manera cada vez que trascurra ese tiempo tienes digamos un impulso(llamamosle así), asi que ya tienes por tanto "una base de tiempos" con un periodo de medio segundos. luego vas incrementando los contadores que creas necesarios, uno para cada salida que sea distinta, para que al alcanzar cada uno de los contadores su valor final puedas cambiar el valor de cada salida.
Niple dentro de los temporizados por TMR's te permite configurar las interrupciones por ejemplo el TMR0, la secuencia mas o menos podria ser:

-Rellenas cada una de las casillas de la pantalla que te va saliendo.
-El siguiente bloque seria activar el TMR0 para que produzca la interrupcion.
-Crear(insertar) una  interrupcion del TMR0(subrutina de usuario) y dentro de esta incremanetas los contadores.
- Sales de la rutina de interrucion del TMR0
- Dentro del programa principal vas comprovando el estado de lo contadores y de acuerdo a sus valores ya decides  que hacer.

F.
Todos los días se aprende algo nuevo.

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: Usar mas de una salida en niple
« Respuesta #10 en: 20 de Noviembre de 2012, 09:05:06 »
Bueno respondi mientras se escribia otro post.
Parsek, lo que te indica Lucegiar no es exactammete lo que quieres ya que lo que le indica es que al tiempo x se pone unos valores a 1, despues a otro tiempo(pero siempre despues de acabar el anterior) otro, luego comienzan otros tiempos (pero simepre despues de terminar los anteriores).
Tu lo que indicas es que los tiempos cuenten desde el inicio con valores distintos entre ellos y entre actuaciones y eso no se puede realizar de manera secuencial como indica lucegiar, salvo que tengas muy bien definidos los tiempos de cada una de las secuencias y empieces a contar los segundos que habian trascurrido desde el inicio hasta cada una de las actuaciones de cambio de estado de los valores que ya has indicado.

Asi GP1 se pondra a ls 2" a 0, luego 1" mas tarde GP0 sera=0 y 7" mas tarde se pondrá GP2=0. Mas tarde a los 10" de ponerse GP2=0 se coloca otra vez GP0=1 y asi sucesivamente. esto seria de una forma secuencias, y como ves  estos valores de tiempos, son distintos a los que has puesto, pero el resultado final de las temporizaciones (valores que has indicado) son los mismos si sumas los valores entre cada uno de ellos.

Espero haberme explicado.

F.
Todos los días se aprende algo nuevo.

Desconectado parsek

  • PIC10
  • *
  • Mensajes: 13
Re: Usar mas de una salida en niple
« Respuesta #11 en: 20 de Noviembre de 2012, 09:48:50 »
Hola Fer TACA, gracias por tu respuesta.
Se me ha ocurrido una manera que aunque algo engorrosa y trabajosa me podría valer, a ver si lo doy explicado:
Partiendo del ejemplo Modo 2 de lucegiar2005 empiezo en INICIAR, configuro los puertos como salida, como la temporización mínima que necesito es de 1 segundo la usaré como temporización mínima, coloco una temporización de 1 segundo y después doy valores a GP0,GP1,GP2,GP3 de 0 y empiezan todas las salidas en 0, 1 segundo de temporización y GP0=1, GP1=0, GP2=0, GP3=1, coloco otra temporización de 1 segundo por si quisiese modificar el valor de algún bit (salida me refiero), sino quisiese simplemente dejaría los valores como anteriormente, tras otro segundo coloco GP0=1 (no quiero que cambie de momento), GP1=0 (tampoco cambia), GP2=1 (éste cambia ahora) y GP3=1 (tampoco cambia), un segundo después pongo GP0=0 (cambia ahora), GP1=0 (no cambia), GP2=0 (cambia ahora), GP3=1 (no cambia), otro segundo más y pongo todas las salidas a 0 para que termine la secuencia y si quiero repetirla hago un bucle a la primera temporización que incluso podría ser de 100 milisegundos para que la espera tras el encendido fuese mínima.
No se si me habré explicado bien pero resumiéndolo un poco empiezo con INICIAR, configuro los puertos como salida, coloca una temporización pequeña para que inicie pronto la secuencia, pongo GP0 a 0, a continuación GP1 0, a continuación GP2 a 0 y a continuación GP3 a 0, coloco la temporización mínima con la que voy a trabajar y después voy cambiando los valores de salidas cada segundo según mis necesidades.
Entiendo que si por 10 segundos no van a cambiar el estado de las salidas no tengo que colocar 10 temporizaciones de 1 segundo, una de 10 segundos me vale.
Veo que así es engorroso y lioso pero me es una buena opción porque veo toda la secuencia al detalle cada segundo y puedo modificar (o no) a mi antojo.
La pregunta es, ¿funciona así?
GRACIAS

Desconectado parsek

  • PIC10
  • *
  • Mensajes: 13
Re: Usar mas de una salida en niple
« Respuesta #12 en: 20 de Noviembre de 2012, 09:50:58 »
Lo siento, creo que tambien yo respondí ahora mientras tu escribias tu último post...

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: Usar mas de una salida en niple
« Respuesta #13 en: 20 de Noviembre de 2012, 10:03:53 »
Hola Fer TACA, gracias por tu respuesta.
Se me ha ocurrido una manera que aunque algo engorrosa y trabajosa me podría valer, a ver si lo doy explicado:
Partiendo del ejemplo Modo 2 de lucegiar2005 empiezo en INICIAR, configuro los puertos como salida, como la temporización mínima que necesito es de 1 segundo la usaré como temporización mínima, coloco una temporización de 1 segundo y después doy valores a GP0,GP1,GP2,GP3 de 0 y empiezan todas las salidas en 0, 1 segundo de temporización y GP0=1, GP1=0, GP2=0, GP3=1, coloco otra temporización de 1 segundo por si quisiese modificar el valor de algún bit (salida me refiero), sino quisiese simplemente dejaría los valores como anteriormente, tras otro segundo coloco GP0=1 (no quiero que cambie de momento), GP1=0 (tampoco cambia), GP2=1 (éste cambia ahora) y GP3=1 (tampoco cambia), un segundo después pongo GP0=0 (cambia ahora), GP1=0 (no cambia), GP2=0 (cambia ahora), GP3=1 (no cambia), otro segundo más y pongo todas las salidas a 0 para que termine la secuencia y si quiero repetirla hago un bucle a la primera temporización que incluso podría ser de 100 milisegundos para que la espera tras el encendido fuese mínima.
No se si me habré explicado bien pero resumiéndolo un poco empiezo con INICIAR, configuro los puertos como salida, coloca una temporización pequeña para que inicie pronto la secuencia, pongo GP0 a 0, a continuación GP1 0, a continuación GP2 a 0 y a continuación GP3 a 0, coloco la temporización mínima con la que voy a trabajar y después voy cambiando los valores de salidas cada segundo según mis necesidades.
Entiendo que si por 10 segundos no van a cambiar el estado de las salidas no tengo que colocar 10 temporizaciones de 1 segundo, una de 10 segundos me vale.
Veo que así es engorroso y lioso pero me es una buena opción porque veo toda la secuencia al detalle cada segundo y puedo modificar (o no) a mi antojo.
La pregunta es, ¿funciona así?
GRACIAS

esto si es secuencial, pero mas engorroso y tendras que ir revisando correctamente toda tu secuencia.

F.
Todos los días se aprende algo nuevo.

Desconectado parsek

  • PIC10
  • *
  • Mensajes: 13
Re: Usar mas de una salida en niple
« Respuesta #14 en: 20 de Noviembre de 2012, 10:31:17 »
Si, es secuencial, pero de esa forma puedo modificar cada segundo o temporización mínima que le ponga la salida que necesite...
Asi funcionaría ¿no?


 

anything