Autor Tema: Interrrupciones su logica  (Leído 3692 veces)

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

Desconectado luisesteban

  • PIC10
  • *
  • Mensajes: 24
Interrrupciones su logica
« en: 23 de Febrero de 2012, 16:32:28 »
Hola a todos:
Estoy entrando fuerte en este tema y tengo que decir, que es apasionante........... pero. Mi logica ,  incluso mi torpeza no alcanza a entender ciertas cosas basicas, y cuando esto ocurre no tienes forma de poder desarrollar y adaptar a las necesidades. Interrupciones y sus preguntas basicas....Se que consiste en habilitarla, que cuanta ascendente, que cuado pasa por cero se activa la bandera TOIF y que hay que restablecerla para poder utilizarla de nuevo. Pero al diseñar programas faltan otros detalles que al no saber la logica de fucionamiento se me quedan cosas atras. Ejemplos, porque en algunos programas se le pone valor al TMR0? que pasa que cuando empiezan a contar lo hace desde cero hasta el valor elegido y empieza dando activación al TOIF?. He visto en algun programa que utilizan un sistema para ampliar tiempos, utilizando registros, veo  que utilizan registro cuenta_1 y cuenta_2. En este caso no entiendo como sacar y contar cada desbordamiento? quien restablece el TOIF para otro desbordamiento? donde se esta ejecutando el programa mientras se realiza la cuenta y  compara los valores. Y algunas dudas más que ya por no cansar o aburrir al personal ni nombro. Se que para muchos de ustedes es algo cotidiano, pero para quien empezamos lo pasamos fatal y mucho menos querer molestar a nadie, en quizas cosas que les puedan reportar conocimientos y satisfaciones, asi que si hay algun alma caritativa y tiene ganas de pasarlo mal ayudandome, bienvenida pero que solo Dios se lo podrá pagar,  aparte de mi intensa gratitud. Gracias de antemano y reciban un cordial saludo a toda la familia de TODOPIC

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: Interrrupciones su logica
« Respuesta #1 en: 23 de Febrero de 2012, 16:42:16 »
Los valores que se asignan al tmro se dan para tener un calculo exacto del tiempo que neceitas.
En ese caso cuando emopieza la cuenta va desde ese valor hasta FF que pasa a 0 de nuevo, en ese momento hay que recargar el valor de nuevo para que ante una nueva situacion similar vuelva a empezar desde ahí y no desde 0 o desde el valor en que se parase la cuenta.

Lo mismo vale con registros auxiliares, estos se emplean para aumentar los tiempos de contaje o retraso y se pueden encadenar unos con ortros de forma que cuando uno se rebose lo que realice sea incrementar otro auxiliar. De esa manera es como si estuvieses multiplicando 2 numeros.

Las banderas, TOIF, Niple las borra de forma automatica y no te tienes que precupar de realizar esa labor.

Si llevas poco tiempo en el foro, sé bienvenido y un par de consejos:

- Intenta escribir con los parrafos mas separados. De esa forma no se hará tan tediosa la lectura delo que planteas, pues llega un momento en que se puede dudar de lo que estas intentando explicar.

- Realiza las preguntas que quieras, pero siempre de manera corta, clara y concisa. De esa forma las respuestas tambien seran rapidas y podras entender mejor las respuestas y aclarar tus dudas.

F.

Todos los días se aprende algo nuevo.

Desconectado luisesteban

  • PIC10
  • *
  • Mensajes: 24
Re: Interrrupciones su logica
« Respuesta #2 en: 23 de Febrero de 2012, 21:04:10 »
Hola Fer:
Ya he vistos articulos tuyos y como digo yo, me quito el sombrero. Entiendo lo que me acabas de decir y gracias. A veces estas dudas te hacen titubear mucho. Me permites

darme un ejemplo simple, un pic que pulsando una entrada sea capaz de dar una salida durante 15 minutos. Creo que con este ejemplo y una pequeña explicación de lo que

en todo momento ocurre ( como un diagrama de flujo ) me permitiria profundizar en como es el sistema logico de l programación. No se si pido mucho o implica hacerte perder

tu valioso tiempo, pero creo que me ayudaria a compreder los pasos, reconozco que soy un poco torpe, pero si no consigo saber que esta ocurriendo en cada momento

me resulta dificil entenderlo. Quiero en mi nombre y supongo que en muchos más, agradecer tu aportación, la facilidad y agilidad que tenemos el placer de disfrutar de tus

experiencias y sin más recibe un cordial saludo y todo mi agradecimiento.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Interrrupciones su logica
« Respuesta #3 en: 23 de Febrero de 2012, 22:02:01 »
un timer funciona por hardware, esto quiere decir que se autoincrementa segun su prescaler y velocidad del pic (entre otras funciones que tiene). Cuando tu lo activas este empieza a incrementarse y cuando se desborda se activa la bandera T0IF, hablamos de desbordarse cuando pasa de 255 a 0 de nuevo y 65535 a 0 cuando es de 16bits.

Bien, ahora ya sabes que funciona solo configurando sus parametros, no es necesario saber su flujo de programa ya que es paralelo al programa.

Ahora cuando se pone T0IF a 1 y estan activadois los registros pertinentes el codigo automaticamente pasa a el codigo de interrupcion, en este codigo pones lo que quieras que haga cuando se desborde el timer... Una vez llega al final de este codigo se pone a 0 el T0IF, y el codigo retorna justo donde se quedo anteriormente.

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: Interrrupciones su logica
« Respuesta #4 en: 24 de Febrero de 2012, 06:56:02 »
Hola Fer:

Me permites darme un ejemplo simple, un pic que pulsando una entrada sea capaz de dar una salida durante 15 minutos.

Si no te corre prisa te mando un ejemplo este finde.

De todas formas si estas aprendiendo y tienes el programa Niple puedes ir mirando en el link adjunto. Mas o menos es lo que necesitas pero con tiempos mas cortos, a parte de alguna funcionalidad mas. Dentro de ese link encontraras archivos que te indican y explican un poco el funcionamiento de los TMR's:
http://www.todopic.com.ar/foros/index.php?topic=30964.0

F.
« Última modificación: 24 de Febrero de 2012, 06:59:32 por Fer_TACA, Razón: Añadir link »
Todos los días se aprende algo nuevo.

Desconectado luisesteban

  • PIC10
  • *
  • Mensajes: 24
Re: Interrrupciones su logica
« Respuesta #5 en: 24 de Febrero de 2012, 10:05:51 »
Hola:

Gracias Fer por tu aportación y quedo a tu entera disposición agradeciendo tu esfuerzo y dedicación, muchas gracias y porfavor espero lo que haga falta jejejjej.

En cuanto a la aportación de MerLIZ gracias, ayuda y abre un poco mas el procedimiento, pero en mi caso particular, no saber que hace interiormente me deja fuera de juego

porque siempre te veras abocado a lo que vas viendo por ahi, sin embargo hablas de codigo de interrupción y la verdad que ni idea que quieres decir, incluso dices que en este

codigo ( no se si te refieres al registro TMR0) pones lo que quieres hacer, referente a hacer que?,  y por último que una vez acabado el proceso va donde se quédo, pero no se

si quieres decir el punto de partida de la interrupción. Un saludo

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: Interrrupciones su logica
« Respuesta #6 en: 24 de Febrero de 2012, 11:26:26 »
Mira:

internamente los pic llevan un sistema que generan un serie de pulso de una frecuencia de un valor determinado que se corresponde con la frecuencia del cristal externo que se coloque. Ademas el micro trata las secuencia del programa, lenguaje de 1 y 0, con cada ciclo de reloj de esa frecuencia. Algunas instrucciones tardan en ejecutarse 1 ciclo, otras 2,.....

En el caso del TMR0, al ser un contador, este se incrementa con cada ciclo de reloj, hasta llegar al valor FF (255 en decimal) para pasar el valor a 00 y asi sucesivamnete hasta que se apre o deshabilite o no te interese tomar en cuenta el valor.

Pero ademas, tienen la posibilidad, de interrumpir la ejecucion normal del programa que hayas realizado siempre y cuando tengas habilitada esta opcion. En ese momento, interrupcion, por defecto el micro deja de realizar lo que esté haciendo y salta a una posicion(direccion) determinada en la cual empieza (o sigue) con otra parte de tu programa hasta que tu decidas cuando parar.

En ese momento el micro regresa al punto justo donde se paró al producirse la interrupcion. Una vez realizado eso sigue con el programa normal.


Ejemplo:
Imaginate que tienes una alarma en tu casa o coche, de forma que cuando entre alguien que no esperas pues suene una bocina y encienda unas luces.
Cuando entra un caco(empieza la interrrupcion), que no sabe la forma de desactivarla; la bocina sonará (programa de tratamiento de la interrupcion) alertando del suceso producido (llama a la policia, manda un mail, eso es en definitiva el codigo de interrupcion).
¿cuando parará la alarma?
Cando tu decidas, entonces si la desconectas la bocina (borrado del señalizador de desborde del timer TMR0, por ejemplo).

¿Qué hace la alarma?. Seguir donde estaba, es decir vigilando.

Mas o menos es eso.



F.
« Última modificación: 24 de Febrero de 2012, 11:30:48 por Fer_TACA »
Todos los días se aprende algo nuevo.

Desconectado luisesteban

  • PIC10
  • *
  • Mensajes: 24
Re: Interrrupciones su logica
« Respuesta #7 en: 24 de Febrero de 2012, 12:40:14 »
Hola Fer:
Entiendo perfectamente lo que es la interrupción, pero quizas las dudas me vienen a como tomar el control de ellas, a como saber cuando cuenta, a como poder utilizarlas  una

vez producido el paso por cero. Mira Fer, ya ves que tengo la mollera algo pa yaaaaaaaaa. Podrías hechar un vistazo al archivo del ejemplo que me enviastes de un post

anterior donde intento ver la logica de funcionamiento y las preguntas asociadas a ellas. Dios , lo siento Fer que me cueste, pero si no logro tenerlo claro se que me sera

dificil avanzar. Lo siento que te de tanta paliza y por supuesto mi mas agradecimiento, por hacerte perder el tiempo. Graciasssssssssssssssss


Desconectado luisesteban

  • PIC10
  • *
  • Mensajes: 24
Re: Interrrupciones su logica
« Respuesta #8 en: 24 de Febrero de 2012, 15:20:38 »
Hola de nuevo FER:

Perdona mi insistencia jejej podrías mirar los archivos adjuntos que te envío, los he sacado de los progrmas que tu me dijistes que estudiara. Hechale un vistazo si no consigo

antes que te aburra o lo que es peor te tires por la ventana como un recuerdo de caso imposible jejej. Oye no lo tomes literal. Intento en ellos ver si mi lógica va bien y de

paso veas las dudas que me ocasionan, solo espero que no tengas que ver un mensaje más de lo mismo jejej. De todo corazón mi mayor gratitud asi como decir que no sabes

tu bien, lo que significa para este foro y para los novatos, las ganas que dan de seguir aprendiendo. Un saludo cordial

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: Interrrupciones su logica
« Respuesta #9 en: 25 de Febrero de 2012, 18:10:05 »
Respondo a tu primer post:

La rutina de interupcion empieza cuado pone : TMR1 = Activado. A partir de aqui empieza la cuenta.
En la rutina de interrupcion cuando se hace TMR1=desactivado, no se desactiva la interrupcion solo se para el contador del TMR1, es decir se le dice al TMr1 que no siga incrementando su cuenta.
Despues vuelvo a reconfigurar el puerto B, por que este ejemplo está sacado de un programa mas grande en donde por necesidad del mismo tenia que reconfigurar el puerto B de otra forma. Lo mismo pasa con asignar el bit Rb0 a 1.

No se supone que el TMR1 se para, lo he parado anteriormente con TMR1=desactivado.
Cuando se sale de la interrupcion se resetea el bit TOIF de manera automatica. Esto lo realiza asi Niple, en otros lenguajes de programacion como ensamblador por ejemplo tienes que resetearlo tu escribiendo en el programa la instruccion adecuada.

El icono que representa el retorno al programa principal es "Fin de la interrupcion".

Ahora miro el otro post.

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

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: Interrrupciones su logica
« Respuesta #10 en: 25 de Febrero de 2012, 18:43:53 »
Respuesta al 2º post:

Mira iba a responderte aqui, pero como he visto que eran muchas las dudas, he modificado cada uno de los 3 documentos que has adjuntado y he ido colocando las respuestas de forma intercalada en cada  una delas preguntas.
las he puesto en rojo para que las localices.

Este ejemplo que has tomado es muy parecido al que pretendias de obtener un tiempo de 15minutos.
El ejemplo detecta el estado de un bit (puesta en marcha) y coloca un motor a girar en una direccion durante un periodo de tiempo de 10 minutos, trascurridos los cuales lo para y espera otro tiempo creo que de un minuto y cuando acaba este, pone de nuevo en marcha el motor pero girando en sentido contrario al inicial durante otros 10 minutos, otro minuto de paro y vuelta a empezar.

Por este motivo, nno te he realizado el programa que pediste. A partir de este ejemplo y si e parece puedes ir realizando tu el programa y yo ir didiendote donde puedes mejorar, cambiar o donde te has equivocado.

Compredelo, es que de esa forma es como mejor vas a aprender. Si te lo hago yo lo tendrás realizado y no comprenderas como funciona el sistema de programacion.

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

Desconectado luisesteban

  • PIC10
  • *
  • Mensajes: 24
Re: Interrrupciones su logica
« Respuesta #11 en: 26 de Febrero de 2012, 09:41:25 »
Hola Fer:

Toda la razón sin esfuerzo no hay nada que hacer y estoy contigo que es la mejor metodologia de estudio, vamos que sin esfuerzo........

Se dice que de buen nacido es ser agradecido, y por ti, mi agradecimiento. Intento enviarte un archivo NIPLE y no me deja, encima tengo un word con todo y me dice que

sobrepaso la memoria, que son las conclusiones como hasta ahora te he estado enviando. Si tienes algun truco te agradeceria indicarmelo para hacerte llegar estos.

Un abrazo feurte y  cordiales  saludos..................

Desconectado luisesteban

  • PIC10
  • *
  • Mensajes: 24
Re: Interrrupciones su logica
« Respuesta #12 en: 26 de Febrero de 2012, 10:10:50 »
Hola FER:

Te envio uno a medias y en otro post el siguiente que me falta por el problema de la memoria, de todas formas si me pudieras indicar como capturar el flujo en NIPLE

para que se vea bien y no tome muchas cantidad de bytes y agregarlo al word seria un placer, graciasssssssssssss

Desconectado luisesteban

  • PIC10
  • *
  • Mensajes: 24
Re: Interrrupciones su logica
« Respuesta #13 en: 26 de Febrero de 2012, 10:21:46 »
Perdonen toda la parafernaria para poder enviarte el archivo completo.

Lo envio en rar para que puedas analizarlo.................... un abrazoooooooooooooo