Autor Tema: Ayuda con lcd  (Leído 14752 veces)

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

Desconectado arielmdq

  • PIC16
  • ***
  • Mensajes: 166
Re:Ayuda con lcd
« Respuesta #30 en: 14 de Octubre de 2015, 12:59:11 »
Hola ,MGLSOFT te quería agradecer por los archivos de los numeros grandes que le pasaste a chaly29 el me los envió y despues los encontre en este post ja ja , y gracias  por comentar en el tema ,saludos .

A KILLERJC  te quiero preguntar algo por que sino me mareo un poco  :-)  :D y yo me mareo facil  :D con el ejemplo que me explicaste de comparar el ccp con el timer(1) es solo para crear la base de tiempo ,no?.Por que vos ya estas cargando el CCP con un valor ,por eso es modo COMPARE  :mrgreen:
Si es asi entonces ,tengo que seguir utilizano el timer(0) como contador de pulsos pero realizando la captura para poder medir la frecuencia  con la interrupcion del ccp en vez de la interrupcion por timer(1) algo asi:
Código: C
  1. #int_CCP1
  2. void  CCP1_isr(void)
  3. {
  4.    contador=get_timer0();
  5.    set_timer0(0);  
  6.  
  7. }
O si no , no entendi nada  :shock: :shock: :shock: :D
El tiempo es una ilusión ,solo existe el presente................

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Ayuda con lcd
« Respuesta #31 en: 14 de Octubre de 2015, 14:44:23 »
Exacto, pero ya no tocas mas el timer1 ( recargandolo ni nada por el estilo ).


Citar
Mi próximo desafió, aunque por ahora no tengo tiempo, es hacerlo en LCD del tipo OLED, que tienen otro driver diferente al estándar.

Hace un tiempo habia uno con una banderita de nueva zelanda creo que habia hecho el driver de un OLED, con graficos y todo, como que no le contestaron muchos y se fue xD, solia escribir en ingles y español

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7907
Re:Ayuda con lcd
« Respuesta #32 en: 14 de Octubre de 2015, 16:12:16 »
Si lo del timer es para generar una base de tiempo para temporizaciones, te conviene un tiempo muy pequeño (yo uso 1 milisegundo) y despues creas banderas con el conteo dentro de la interrupcion, y segun el estado de esas banderas ejecutas rutinas y volves a poner la bandera en cero.

Con una sola interrupcion podes llegar a disponer de 10 bases de tiempo distintas, que ejecutan diferentes tareas, lo lindo de eso es que esas tareas se ejecutan solas despues.

Respecto a medir tiempos de pulsos, usa el modo capture, anda joya para eso, igual para tener precision tendras que poner un cristal de los mas rapidos que puedas disponer en el micro que uses, porque eso aumenta la precision de la medicion.

Killer, te referis al que ponia los temas de rock metalico en sus videos?? Lo voy a buscar, hizo cosas interesantes, igual solo queria hacerlo en modo texto, pero es cierto que la principal diferencia entre ese driver y el del LCD estandar es que permite ambos modos de uso, modo texto y modo grafico...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Ayuda con lcd
« Respuesta #33 en: 14 de Octubre de 2015, 18:25:57 »
 ahi nomas lo encontro en la busqueda, a este me referia:

http://www.todopic.com.ar/foros/index.php?topic=44230.msg367161#msg367161

Y esa musica que le ponia xD

Desconectado arielmdq

  • PIC16
  • ***
  • Mensajes: 166
Re:Ayuda con lcd
« Respuesta #34 en: 14 de Octubre de 2015, 20:31:35 »
Hola vuelvo con mas preguntas , bueno ya le cambié al programa la parte de la interrupcion del timer por la de ccp ,y hasta ahora en la simulacion funciona lo mas bien , recien mañana la probaré en el pic .
Pero ahora lo que me preocupa es la forma de poder grabar en la memoria cuando haya un corte de alimentacion .Por ahora me decidi por la opcion de detectar un flanco de bajada por Rb0 que creo es lo que tengo mas mano para hacer. Ya le cambié al lcd la distribucion de pines para que me quedara Rb0 libre y asi poder usarlo  .Activé la int_ext para que me detecte un flanco de bajada
Código: C
  1. enable_interrupts(int_ext);
  2.   ext_int_edge(h_to_l);
Y luego hice esta funcion:
Código: C
  1. #int_ext
  2. void corte()
  3.        {
  4.           write_int16_eeprom(100, Hora);
  5.           delay_ms(15);
  6.           write_int16_eeprom(110, HoraParcial);
  7.           delay_ms(15);          
  8.           write_eeprom(120, Minuto);
  9.           delay_ms(15);
  10.           write_eeprom(130, MinutoParcial);
  11.           delay_ms(15);
  12.          
  13.        }
pero cuando compilo me salen 2 warning que dicen:  interrupts disabled call to prevent re-entrancy {@delay_ms1}
                                                                                   interrupts disabled call to prevent re-entrancy { write_int16_eeprom}
Que estoy haciendo mal ?
Esto que estoy haciendo ,sirve?


PD:Cuando se active esta interrupcion ya no me interesa el resto del programa ,solo que guarde los datos en la memoria ya que se supone que me  quede sin alimentacion .
El tiempo es una ilusión ,solo existe el presente................

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Ayuda con lcd
« Respuesta #35 en: 14 de Octubre de 2015, 21:53:23 »
No se exactamente el tema del delay.... ( ni idea por que te da eso en un delay )

Pero en la EEPROM es OBLIGACION desactivar las interrupciones al grabarlo. Por lo cual procura antes de grabar en la EEPROM desactivar las interrupciones y habilitarlas cuando termines de grabar. Estoy acostumbrado que normalmente el programa en ASM lo hace, entonces no me di cuenta. Pero bueno. ya estas avisado, intenta ponerle un disable_interrupt(global) y  enable_interrup(global) antes y despues, Y sacale los delays!!! CCS, imagino que debe haber puesto una condicion preguntando para que no intente guardar cuando todavia no termino la anterior

Código: C
  1. disable_interrupt();
  2.           write_int16_eeprom(100, Hora);
  3.           write_int16_eeprom(110, HoraParcial);
  4.           write_eeprom(120, Minuto);
  5.           write_eeprom(130, MinutoParcial);
  6.           enable_interrupt();

Y otra cosa. para evitar que grabe y grabe y grabe, podes hacer un contador que cuando grabe comienze y usas el mismo interrupt del CCP para contar 10 o mas y habilitas nuevamente la interrupcion externa ( antes limpiando el flag) de esa forma a lo sumo guarda 1 ves cada 5 segundos, y el maximo error seria ese con lo guardado.  Y te evitas destrozar la EEPROM

Desconectado arielmdq

  • PIC16
  • ***
  • Mensajes: 166
Re:Ayuda con lcd
« Respuesta #36 en: 15 de Octubre de 2015, 20:15:52 »
Hola que tal ,bueno estuve haciendo algunas pruebas y les cuento, lo de la interrupcion por ccp funcionó perfecto en realidad no note ningun cambio a lo anterior que era la interrupcion por timer1, pero si de esa manera es mejor entonces asi quedará ,una cosa mas  aprendida  vamos todavia  :) .Ahora lo de grabar en la eeprom despues de varias pruebas terminé haciendo esto:
 
Código: C
  1. short a=0;
  2. #int_ext
  3. void corte()
  4.  {
  5.     a=1;
  6.          
  7.  }
Y luego al comienzo del while :
Código: C
  1. while(1)
  2.     {
  3.          if (a==1)
  4.        {
  5.           write_int16_eeprom(100, Hora);
  6.           delay_ms(15);
  7.           write_int16_eeprom(110, HoraParcial);
  8.           delay_ms(15);          
  9.           write_eeprom(120, Minuto);
  10.           delay_ms(15);
  11.           write_eeprom(130, MinutoParcial);
  12.           delay_ms(15);
  13.           a=0;
  14.          
  15.        }
Poco elegante pero es lo que se me ocurrió   :oops:
Dejando las escrituras dentro de la interrupcion y aún quitando los delays no funcionaba , yo tenia entendido que cuendo se hacian varias escrituras seguidas era recomendable los delays , es esto cierto?
No se si la manera en que lo hice es buena , de todos modos pensé en ponerlo al principio del while para que sea lo primero que chequee despues de la interrupcion , pero no sirve de nada por que despues de la interrupcion el programa vuelve a donde había quedado ,no?
En la plaqueta de pruebas  todavia no tengo hecho un circuito que me detecte la falta de alimentacion y me ponga Rb0 a 0 esta prueba la hice a mano solo para ver si grababa en la memoria ,y sí , lo hacía .Tampoco tengo claro que circuito tendría que hacer exactamente algo de lo mas sencillo y especifico posible ,solo lo del comparador que dijo KILLERJC y supongo que será algo parecido a lo que me explicó chaly29 aca http://www.todopic.com.ar/foros/index.php?topic=15702.15  si tienen algun circuito o algo especifico se los agradeceré. Tambien pensé  en preguntarle a este genio de los circuitos si ya hizo algo parecido para que me tire una idea , el siempre tiene un as bajo la manga   :D obiamente sin menospreciar cualquier idea que uds me propongan .Me gustaría saber que piensan acerca de esto y desde ya muchas gracias por su ayuda .
                                        Saludos !!!
El tiempo es una ilusión ,solo existe el presente................

Desconectado mariacontenis

  • PIC16
  • ***
  • Mensajes: 114
Re:Ayuda con lcd
« Respuesta #37 en: 15 de Octubre de 2015, 22:49:08 »
Excelente tema. Estoy atento a todo lo que comentan y comparten y me a Sedó de gran interés y aprendizaje. Arielmdq será que pudieras subir un vídeo de funcionamiento?. Gracias a todos por compartir.  :-/

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Ayuda con lcd
« Respuesta #38 en: 15 de Octubre de 2015, 23:54:02 »
Citar
bueno estuve haciendo algunas pruebas y les cuento, lo de la interrupcion por ccp funcionó perfecto en realidad no note ningun cambio a lo anterior que era la interrupcion por timer1, pero si de esa manera es mejor entonces asi quedará ,una cosa mas  aprendida  vamos todavia

Es que el cambio es muy pequeño, estamos hablando de algunos ciclos entre interrupcion e interrupcion, tambien si tenes 2 interrupciones y se atiende otra primero no vas a tener problema por que le flag queda seteado y ya el CCP lo puso a 0 al Timer1.

Con respecto al codigo sobre la interrupcion externa  es lo mismo que tenias antes. incluso podrias desactivar la interrupcion y preguntar por el flag, se que CCS tiene funciones, no se cuales son, pero es lo equivalente a esto lo que hiciste:
(Hasta diria que es mas eficaz lo que tenias antes)
Código: C
  1. while(1)
  2.     {
  3.          if (flag_activo())
  4.        {
  5.           write_int16_eeprom(100, Hora);
  6.           delay_ms(15);
  7.           write_int16_eeprom(110, HoraParcial);
  8.           delay_ms(15);          
  9.           write_eeprom(120, Minuto);
  10.           delay_ms(15);
  11.           write_eeprom(130, MinutoParcial);
  12.           delay_ms(15);
  13.           borrar_flag();
  14.        
  15.        }
Y ni siquiera necesitarias activar la interrupcion, solo leer el flag, lo cual seguis con lo mismo de antes, nomas que ahora en ves de leer el ADC, estas haciendo caso a una entrada.

Citar
Dejando las escrituras dentro de la interrupcion y aún quitando los delays no funcionaba , yo tenia entendido que cuendo se hacian varias escrituras seguidas era recomendable los delays , es esto cierto?
No entiendo por que no. Escribir la EEPROM no se hace instaneamente como uno escribiria en la RAM por ejemplo, sino que tarda un tiempito mas ( no voy a poner el ASM para no complicarte la vida ), vos cuando le das a escribir al dato, pones un bit en 1, recien se termina de escribir cuando se pone en 0. Pienso que CCS deberia tener en su funcion un control de este bit, o esperando que termine de grabar cuando envia el dato, o cuando se le da la orden de grabar que espere a la anterior orden que termine. Pienso que deberia hacerlo asi.
Lo que puede pasar es que la funcion de escritura desactive y active las interrupciones, y al estar dentro de la interrupcion y no haber limpiado el flag, este continuamente entrando, ya que va a saltar nuevamente al vector de reset, nunca saliendo de la instruccion. Lamentablemente no veo otra solucion mas que hacer tu propio codigo con respecto a esto. Si es que buscas hacerlo de esta forma.

Citar
No se si la manera en que lo hice es buena , de todos modos pensé en ponerlo al principio del while para que sea lo primero que chequee despues de la interrupcion , pero no sirve de nada por que despues de la interrupcion el programa vuelve a donde había quedado ,no?
Exacto, cuando sale de la interrupcion va a donde estaba, si estaba en la mitad de un delay de 3segundos ( 1.5s ) y ocurre la interrupcion, cuando salga de la interrupcion todavia le queda 1.5s + todo el otro codigo que tengas.

Citar
En la plaqueta de pruebas  todavia no tengo hecho un circuito que me detecte la falta de alimentacion y me ponga Rb0 a 0 esta prueba la hice a mano solo para ver si grababa en la memoria ,y sí , lo hacía .Tampoco tengo claro que circuito tendría que hacer exactamente algo de lo mas sencillo y especifico posible ,solo lo del comparador que dijo KILLERJC y supongo que será algo parecido a lo que me explicó chaly29 aca http://www.todopic.com.ar/foros/index.php?topic=15702.15  si tienen algun circuito o algo especifico se los agradeceré.

Creo que Chaly te podria ayudar. Todo depende de que necesites que haga tu circuito. Un comparador es simple, compara las tensiones de entrada de + y -, en la cual 1 de las entradas deberia tener una tension de control y "fija" y la otra es la sensada , segun el estado que esten estas podes tener VCC o GND en la salida de este. Ahora si la tension fluctua entre estos valores por ahi quisieras tener una histeresis, supongamos que medis la tension y deberia haber 9V a la entrada del regulador de tension ( supongamos un 7805 ) si cae la tension a 6.5V queres que actue tu comparador poniendose a GND su salida, pero solo queres que cuando llegue a 8V vuelva a ponerse a VCC la salida asi saber que la tension volvio como debia estar. Eso seria una histeresis. Sin histeresis en 6.49 se pondria a GND y en 6.51 a VCC , fluctua entre esos valores y esarias grabando mil veces. Tambien podes implementar algo con el PIC.
Chaly si no tiene un circuito en su baul de los recuerdos o te podria ayudar.

« Última modificación: 16 de Octubre de 2015, 01:08:26 por KILLERJC »

Desconectado arielmdq

  • PIC16
  • ***
  • Mensajes: 166
Re:Ayuda con lcd
« Respuesta #39 en: 16 de Octubre de 2015, 08:24:16 »
Muchas gracias KILLERJC por la explicacion ,y claro tenes razon con lo de grabar en eeprom estoy haciendo lo mismo que hacía con el adc  :D , bueno entonces no se bien que hacer , voy a leer un poco   a ver de que otra manera se puede hacer ,de todos modos el circuito para detectar la falta de alimentacion lo voy a tener que hacer ,asi que voy a ir viendo eso tambien .
No tengo muy en claro cuando hablan de flag supongo que es una señal, un parametro ,una palabra a la que se le asigna un valor ? o simplemente  una variable y la llaman flag ,se supone que esto ya lo debería saber pero bue en algun momento lo tenía que preguntar  :oops: disculpame pero no tengo muy incorporado el termino .
A Mariacontenis aca http://www.todopic.com.ar/foros/index.php?topic=15702.60  hay un video con el proyecto pero esta sin numeros grandes despues voy a hacer uno cuando este terminado
                                                                                              Saludos!!!
« Última modificación: 16 de Octubre de 2015, 08:31:23 por arielmdq »
El tiempo es una ilusión ,solo existe el presente................

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7907
Re:Ayuda con lcd
« Respuesta #40 en: 16 de Octubre de 2015, 08:50:22 »
Todos los otros conceptos que expone Killer son correctas, en lo que no coincido es en usar las escrituras eeprom dentro de una interrupción.

Porque??

Las escrituras eeprom necesitan que NO se realicen otras acciones mientras ocurren, porque se malogran y el solo hecho de grabar un byte en eeprom, presupone 18 mseg con un reloj de 4 mhz.
Si ademas grabas mas de un byte, multiplicalo por la cantidad de bytes.

Como el CCS ejecuta una interrupción y al momento borra las banderas (flags) de interrupción, queda listo para ejecutar otra vez la misma interrupción aun estando en ejecución el código de la anterior interrupción (en este caso la escritura en eeprom), lo que ocasiona recursividad, que esta prohibido en un PIC, por eso te avisa el compilador que desactivara esa interrupción para evitar una nueva entrada (reentrancy disabled).

Las tareas de temporización (delay) y tareas de largo plazo, no deben ejecutarse dentro de la interrupción, por las razones expuestas anteriormente.
En la interrupción solo debes operar instrucciones que no impliquen temporizaciones, y escribir en eeprom o usar delay, precisamente es lo que no se debe hacer.

Esta bien que marques una bandera y luego ejecutes esa tarea dentro del main() y una vez ejecutadas, borres la bandera.

Si bien el compilador te ayuda evitando recursividad (reentrancy) el problema es que si tu aplicación tiene mas de una fuente de interrupción, todas quedan deshabilitadas, ya que actúa sobre el bit de interrupciones globales.

En palabras simples, si entra en esa interrupción y deshabilita, no vas a tener comunicaciones serie por interrupciones, se entiende?? :mrgreen: :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Ayuda con lcd
« Respuesta #41 en: 16 de Octubre de 2015, 09:38:20 »
Para MGLSOFT

Citar
Las escrituras eeprom necesitan que NO se realicen otras acciones mientras ocurren, porque se malogran y el solo hecho de grabar un byte en eeprom, presupone 18 mseg con un reloj de 4 mhz.

No pense que era tanto tiempo, es lo unico que no habia pensado, , sobre que no se este haciendo otra cosa es que no se va a hacer otra cosa mas que grabar la EEPROM. Con respecto a lo de reentrante es que estoy acostumbrado a verlo desde el ASM (se que no es ASM pero es el funcionamiento del PIC), yo en ASM no activaria las interrupciones dentro de una interrupcion por simple logica, cuando entra a la interrupcion el PIC se desactivan, pero si el codigo de escribir en la EEPROM (de CCS ) lo activa nuevamente entonces ahi no te queda otra que hacer uno mismo la funcion de la escritura de la EEPROM. Y eso lo nombre en el post anterior. Si uno hiciera el codigo de la EEPROM no activaria las interrupciones, por lo tanto no existiria una "reentrada". Y eso contesta a esto:

Citar
Como el CCS ejecuta una interrupción y al momento borra las banderas (flags) de interrupción, queda listo para ejecutar otra vez la misma interrupción aun estando en ejecución el código de la anterior interrupción (en este caso la escritura en eeprom), lo que ocasiona recursividad, que esta prohibido en un PIC, por eso te avisa el compilador que desactivara esa interrupción para evitar una nueva entrada (reentrancy disabled).

El tema es que el necesita grabar los datos cuando exista una caida de tension para justamente que no se pierdan, la cual no le va a servir para nada asi como esta su programa. En el que hay momentos hasta con 3 segundos de delay. Si supuestamente ocurre este caso, vos no te preocupas por que tu programa "siga" ya que es una condicion por asi decirlo "de parada". Es lo ultimo que harias, y por lo cual no me preocuparia por si llego a retrasar el CCP o perder 0.5s en el contador,  lo cual no va a hacer por que tiene una interrupcion de 0.5s y la grabacion de la EEPROM duraria mucho menos. Supongamos que se activo el flag de caida de tension, entro a la interrupcion y cuando entro y estoy grabando se activa el flag del CCP, no va a haber problema por que estan desactivadas las interrupciones mientras estoy en una interrupcion. Cuando termine de grabar la EEPROM y quiera salir, al activar la interrupcion el micro va a ver la flag del CCP y va a entrar de nuevo. la cual va a hacer el codigo del CCP, limpiar el flag y salir.lo cual estas ante un tiempo de 0.5s a 1s para salir de tu grabada de EEPROM y entrar a la del CCP (si es que sigue y fue una "falsa alarma" ) y no queres perder datos, ( el CCP te borra el timer asi que menos problema con eso )

Mi idea fue la de grabarlo lo mas rapido posible, como decia esta es una condicion de parada en la cual el PIC ya no va a tener mas tension, y mi idea era que aprovechara rapidamente ese ultimo momento para guardar las cosas. Si lo pone en el loop while deberia reformular su codigo, incluso reformulado si te "agarra" en el comienzo de una escritura del LCD tal ves corras la misma suerte que con el delay. Por eso dije de la interrupcion.

Resumiendo por si no me explique:

En caso que sea lo ultimo que haga el PIC por que se corto la tension:
- Entra a la interrupcion (es lo mas rapido 20 ciclos maximo deberia tener), graba la EEPROM ( lo que tarde ), termina de grabar, se sale de la interrupcion (limpia flag, etc) y que continue el programa hasta que no tenga mas tension y se pare.
Comparacion con el metodo de ponerlo en el while:
En el While sos dependiente de donde este el programa y seguro que la mayoria de las veces tenes mas de esos 20 ciclos para comenzar a grabar la EEPROM, comenzas tarde a grabarla, lo cual corres mas riesgo de que a la mitad de la grabacion quedes sin energia y quede corrupto lo guardado, obviamente con la interrupcion corres la misma suerte, pero al comenzar mas rapido es un poco menos el riesgo.

En caso de que sea una falsa alarma:
- Con interrupcion no seria problema, como ya comente el CCP se encarga de poner a 0 el Timer1 y la flag quedaria activada, se grabaria la EEPROM, tomaria el RETFIE ( que activaria la interrupcion global ) y al estar activado el flag del CCP entraria nuevamente a la interrupcion por el CCP, el cual aumentaria sus segundos, borraria el flag y seguiria normalmente. Lo unico que "retrasaste" es el programa principal por que entraste 2 veces a la interrupcion (1 para el CCP y otra para la EEPROM).

Lo que no entendi fue esto:

Citar
En palabras simples, si entra en esa interrupción y deshabilita, no vas a tener comunicaciones serie por interrupciones, se entiende??
Cuando se entra la interrupcion se deshabilita solo las interrupciones globales, el RETFIE es quien las habilita nuevamente. Pero si misteriosamente usas una funcion como escribir en la EEPROM que posee las instrucciones de desactivar y activar las interrupciones dentro como para poder usarlas en el loop while por ejemplo, entonces ahi SI vas a tener problemas y va a ser reentrante. Y es a esto a lo que estoy apuntando.

Grabar la EEPROM en la interrupcion no es el problema, el problema es la funcion de grabado de la EEPROM.
Y ahora te pido que me entiendas a mi :P
O los dos estamos diciendo lo mismo y no nos entendemos  :D

Para arielmdq

Citar
No tengo muy en claro cuando hablan de flag supongo que es una señal, un parametro ,una palabra a la que se le asigna un valor ? o simplemente  una variable y la llaman flag ,se supone que esto ya lo debería saber pero bue en algun momento lo tenía que preguntar  :oops: disculpame pero no tengo muy incorporado el termino .

Flag normalmente es una "variable" de un 1 bit, es 0 o 1, en el cual puede indicar algo, por ejemplo cuando ocurre una interrupcion se pone en 1 una flag llamada CCP1IF indicando que ocurrio la condicion interrupcion del modulo CCP. ( No hace falta que este habilitado la interrupcion para que se ponga en 1 la flag), vos hiciste algo parecido, creaste una "flag" llamada a ( aunque de 8 bits seguro) la cual para vos te indica si entro o no a la interrupcion, eso es una flag, es una bandera ( traduccion ) como para indicar algo
« Última modificación: 16 de Octubre de 2015, 09:47:23 por KILLERJC »

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7907
Re:Ayuda con lcd
« Respuesta #42 en: 16 de Octubre de 2015, 10:00:57 »
No había leído que era para grabar en EEPROM ante un corte de energía.
En ese caso, coincido en que decimos lo mismo. :mrgreen: :mrgreen:

Respecto a eso, creo que hay un tema de Marioguillote donde hizo un circuito + software que le permitía detectar la perdida de energía y grabar un montón de bytes en eeprom antes de apagar el circuito (en realidad no recuerdo si lo apagaba o lo dormía).
Busquenlo en el foro, se discutió mucho ese tema, yo lo tenia grabado pero con el cambio de look del foro perdi todos los temas marcados...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Ayuda con lcd
« Respuesta #43 en: 16 de Octubre de 2015, 16:42:08 »
Citar
Respecto a eso, creo que hay un tema de Marioguillote donde hizo un circuito + software que le permitía detectar la perdida de energía y grabar un montón de bytes en eeprom antes de apagar el circuito (en realidad no recuerdo si lo apagaba o lo dormía).

Hice una busqueda. En la cual busque la palabra eeprom y lo restringi al usuario, pero no habia nada. Solo respuestas a otros usuarios. Estas seguro que era el?

Desconectado arielmdq

  • PIC16
  • ***
  • Mensajes: 166
Re:Ayuda con lcd
« Respuesta #44 en: 16 de Octubre de 2015, 16:52:07 »
Aca encontre un post donde se toca el mismo tema http://www.todopic.com.ar/foros/index.php?topic=26343.msg215873#msg215873
y se habla de El #fuse NOBROWNOUT que permite que el micro siga operando ante una caida de tension
Y otro post http://www.todopic.com.ar/foros/index.php?topic=36290.msg302456#msg302456 donde mglsoft dice:Puedes usar el Brown down detect, puesto al valor que mas te convenga.
Si ocurre la deteccion de baja tension dejas de hacer todo y disparas la escritura en eeprom, eso deberia ayudar bastante.
Pero no se como usar ninguna de las dos cosas  :D :D :D sigo buscando........
El tiempo es una ilusión ,solo existe el presente................