TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: fastyx2 en 27 de Septiembre de 2007, 22:50:46

Título: interrupcion vs grabado de la eeprom
Publicado por: fastyx2 en 27 de Septiembre de 2007, 22:50:46
Amigos : tengo una duda y es la siguiente :

                                                                 Conviene desactivar las interrupciones que esten presentes en un programa cuando grabamos datos en la eeprom interna de un pic , para despues reestablecerlas?

desde ya gracias!!!
Título: Re: interrupcion vs grabado de la eeprom
Publicado por: MGLSOFT en 27 de Septiembre de 2007, 23:11:40
La grabacion de un byte de la EEPROM requiere de 18 mseg, aproximadamente, donde el PIC no debe hacer otra cosa, entonces si hay que desactivar el resto de las interrupciones, dejando el procesador libre para efectuar el loop de lectura del bit de grabacion terminada... :mrgreen:
Título: Re: interrupcion vs grabado de la eeprom
Publicado por: maunix en 28 de Septiembre de 2007, 07:30:18
Amigos : tengo una duda y es la siguiente :

                                                                 Conviene desactivar las interrupciones que esten presentes en un programa cuando grabamos datos en la eeprom interna de un pic , para despues reestablecerlas?

desde ya gracias!!!

No, no es necesario desactivarlas ni tampoco recomendable (desde mi punto de vista).  Solamente el GIE durante un par de instrucciones obligatorias pero luego no hace falta para nada.  El lugar donde se debe desactivar está mostrado en el datasheet asi que no hace falta que lo aclare  :)

Una grabación en la eeprom dura entre 4 a 8 mseg aprox.  Esto es típico pero puede variar.  Imaginate que si los que diseñan microcontroladores tuvieran que dejar todo apagado por ese tiempo, habría montones de aplicaciones que sencillamente no se podrían hacer.

Lo que yo hago es , si tengo que grabar varios bytes, mando a grabar el 1ro en el bucle principal, sigue actuando el software, luego cada vez que pasa por la rutina de grabación, verifica si el flag que terminó la grabación está restablecido.  En cuyo caso graba el siguiente byte y así sucesivamente.

Eso me permite ir grabando en la eeprom constantemente pero sin dejar de lado todo el resto del funcionamiento de la aplicación.

Saludos
Título: Re: interrupcion vs grabado de la eeprom
Publicado por: fastyx2 en 29 de Septiembre de 2007, 00:13:12
gracias por contestar!

>Yo tenía dudas en relacion a que pasa si en la mitad de una grabacion de la eeprom entra una interrupcion ,que pasa con ese dato : se graba bien o mal?
Título: Re: interrupcion vs grabado de la eeprom
Publicado por: Leon Pic en 29 de Septiembre de 2007, 11:04:22
Hola fastyx2. Hay que aclarar que una vez cargados los valores en los punteros indirectos, el CP, no graba en la EEPROM. De todas maneras si ocurre una interrupciòn en el inicio de la secuencia, mas precisamente en el momento de cargar los punteros indirectos, hay que asegurarce que el W no venga cargado con otro valor y continue grabando con un dato erroneo.

Me explico: Supongamos que estos cargando al W con 0X7C, para luego pasarlo al puntero indirecto EEDATA, pero antes de hacer esto ocurre una interrupciòn, cuando vuelva aca, vendrà con otro valor y se carga con un valor no deseado. Personalmente, desactivo las interrupciones en el momento de iniciar la secuencia correspondiente, y activàndolas en el momento de finalizaciòn de la secuencia. El pic tardarà X tiempo en grabar a la EEPROM, pero si aca ocurre una interruciòn, no pasa nada.
Cabe aclarar que si uno hace un programa muy bien echo, y si el programa lo permite, no harà falta desactivar las interrupciones.

Bueno, espero haberme echo entender.

Saludos.  :-/ :-/
Título: Re: interrupcion vs grabado de la eeprom
Publicado por: maunix en 04 de Octubre de 2007, 11:12:28
Lo que comentas leon es así para cualquier interrupción y se llama 'guardar el contexto', usualmente el WREG, STATUS, PCLATH y FSR aunque pudieran ser algunos más si es necesario.

De todas formas si uno usa interrupciones se entiende que conoce de esto y no es un problema que tenga que ver con la EEPROM sino con el PIC y con cualquier microcontrolador/microprocesador (mas allá de que algunos hagan grabado automático del contexto, siempre será de ciertos registros pero si nuestra aplicación requiera alguno más lo deberemos hacer a mano).


Saludos
Título: Re: interrupcion vs grabado de la eeprom
Publicado por: Leon Pic en 04 de Octubre de 2007, 20:05:46
Tienes mucha razón maunix. Al usar las interrupciones, hay que entenderlas al máximo.

Lo que núnca eschuché es "guardar el contexto", aclaro que hace poco empiezo a trabajar con los pic, sepanmen entender.

Saludos.  :-/ :-/
Título: Re: interrupcion vs grabado de la eeprom
Publicado por: fastyx2 en 05 de Octubre de 2007, 08:19:38
Les pido mil disculpas a todos por haber utilizado las interrupciones sin ser un experto. Les prometo que no va a volver a suceder.

Me anoté en un curso sobre interrupciones y cuando me reciba vuelvo a preguntar!

Un abrazo
Título: Re: interrupcion vs grabado de la eeprom
Publicado por: MGLSOFT en 05 de Octubre de 2007, 08:38:13
Por eso yo tome el atajo y le recomende no utilizar las interrupciones.

No hace falta que tratemos mal a nadie que recien se inicia Maunix. :shock:
De hecho yo comence de esa forma con la grabacion de la EEPROM, para luego aprender de interrupciones.

Todos en algun momento fuimos principiantes en el tema, ninguno de los hoy principiantes tiene la culpa de que en nuestra epoca de aprendizaje hubiera escasa o nula informacion para aprender.
Al menos yo lo hice en forma autodidacta, que lleva mas tiempo, pero graba los conceptos a fuego, despues de mil intentos en vano.

Fastyx2:
Esto es como en el boxeo, cada vez que te derriben, deberas levantarte y seguir, si quieres ganar.
Lo importante es que te levantes la misma cantidad de veces que te derriben...
Título: Re: interrupcion vs grabado de la eeprom
Publicado por: maunix en 05 de Octubre de 2007, 08:50:30
fastyx2 ¡¡no hay que pedir disculpas de nada, todos aprendemos de nuestros errores y de los de los demás!!

No hace falta que tratemos mal a nadie que recien se inicia Maunix. :shock:
:shock: :shock:

Por favor, les pido que me digan que frase que haya escrito se interpretó de mala forma porque la verdad no fue ni la más remota de mis intenciones!

Saludos
Título: Re: interrupcion vs grabado de la eeprom
Publicado por: Leon Pic en 05 de Octubre de 2007, 08:55:36
Les pido mil disculpas a todos por haber utilizado las interrupciones sin ser un experto. Les prometo que no va a volver a suceder.

Me anoté en un curso sobre interrupciones y cuando me reciba vuelvo a preguntar!

Un abrazo

Hola fastyx2. Por favor, no me mal interpretes. Nadie nace sabiendo. Y te digo más, yo no soy ningún experto en las interrupciones, aún me sigo trompezando con las interrupciones y por eso me anime a decir que hay que conocer al máximo las interrupciones, porque yo me veo obligado a eso.vLo que uno puede hacer mientras aprende, es pedir consejo.

Saludos.  :-/ :-/
Título: Re: interrupcion vs grabado de la eeprom
Publicado por: fastyx2 en 05 de Octubre de 2007, 13:12:34
personalmente siempre le tuve fobia a las interrupciones , de manera que evité utilizarlas , pero debo admitir que son muy utiles.

Ahora , yo particularmente soy una persona que no tiene la capacidad de entender los manuales de los pic cuando hablan de registros , de manera que trato de mantener mi zona de influencia en cuanto al diseño en la parte digamos " macro" de la informacion.

Piensen ustedes como se sentirian si cuando tienen una duda respecto de algo que comienzan a usar , alguien les diga : ey, para usar ese algo tenés que entenderlo al máximo" :shock:.

De todos modos , creo que el peor programa es el que no se hace , y la peor duda es la que no se disipa.

Concuerdo con Maunix en lo de lee, lee ,lee y despues pregunta , pero en algunos casos las ayudas que proveen los manuales son demasiado tecnicas para mi alcance , de manera que los consulto y les estoy por ello muy agradecido

Un Abrazo

Título: Re: interrupcion vs grabado de la eeprom
Publicado por: maunix en 05 de Octubre de 2007, 17:48:09
fastyx2 para ser concreto.

1) No hay problemas en usar la interrupción con la EEPROM, solo debes evitar su uso durante 2 instrucciones que están documentadas en el datasheet.  Ej. para un 16F87x


    bcf    INTCON,GIE
    movlw  55h
    movwf  EECON2
    movlw  AAh
    movwf  EECON2
    bsf    EECON1,WR
    bsf    INTCON,GIE




2) Tal vez el comentario que se hizo sobre que tengas cuidado con el WREG y demás fue por demás confuso, pero que no te sientas ofendido porque alguien te diga que debes entender bien algo antes de usarlo.  Al menos no fue con tal intensión.  Las interrupciones son potentes pero 'peligrosas' si no sabes usarlas.  Entonces, por eso sugiero que entiendas bien lo que es guardar el contexto antes de usarlas.  No solo para la EEPROM sino hablando de interrupciones en general, para los PICs o cualquier microcontrolador.  Si activas las interrupciones y no sabes bien qué es guardar el contexto o cómo guardarlo sino tu programa tiene grandes chances de perderse o tener un comportamiento errático.


 :) :)


Título: Re: interrupcion vs grabado de la eeprom
Publicado por: MGLSOFT en 06 de Octubre de 2007, 07:52:49
Esto me gusta mas Mauricio!! :-/ :-/
Ahora si creo que es el camino de ayudar a alguien, que es el espiritu de este foro!!

Marcos :mrgreen:
Título: Re: interrupcion vs grabado de la eeprom
Publicado por: maunix en 06 de Octubre de 2007, 09:47:39
Esto me gusta mas Mauricio!! :-/ :-/
Ahora si creo que es el camino de ayudar a alguien, que es el espiritu de este foro!!

Marcos :mrgreen:

Pasa que el comentario del WREG no lo hice yo y a veces uno (hablando por mi) no sabe cómo responder si de una manera simple comenzando del principio o si de una manera más breve y acotada dando a entender algunas cosas.

 :mrgreen:
Título: Re: interrupcion vs grabado de la eeprom
Publicado por: Leon Pic en 06 de Octubre de 2007, 19:44:36
Esto me gusta mas Mauricio!! :-/ :-/
Ahora si creo que es el camino de ayudar a alguien, que es el espiritu de este foro!!

Marcos :mrgreen:

Pasa que el comentario del WREG no lo hice yo y a veces uno (hablando por mi) no sabe cómo responder si de una manera simple comenzando del principio o si de una manera más breve y acotada dando a entender algunas cosas.

 :mrgreen:

Hola maunix. La verdad es que si yo hise un comentario raro, no me di cuenta (esto suena prepotente, pero no lo es, ni nada por el estilo, y no estoy enojado con nadie) Por favor, si dije algo fuera de lugar, haganmelo saber para modificar o corregir el mensaje.

Saludos.  :-/ :-/