Autor Tema: Problema al grabar datos en la eeprom y recepcion uart  (Leído 1715 veces)

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

Desconectado dapi28

  • PIC10
  • *
  • Mensajes: 2
Problema al grabar datos en la eeprom y recepcion uart
« en: 25 de Marzo de 2014, 02:42:03 »
Saludos, mi problema es el siguiente y espero me puedan ayudar:

Estoy programando en ccs el pic 16f877A, durante el funcionamiento del programa recibo datos constantemente por el puerto serial para lo que estoy utilizando la interrupcion por recepcion ( INT_RDA) y aparte necesito almacenar ciertos datos en la eeprom. El problema es que luego de almacenar los datos en la eeprom (Si reinicio el micro puedo comprobar que en efecto los datos se almacenaron en la eeprom correctamente) la interrupcion del puerto serial queda "desactivada" es decir el micro nunca vuelve a entrar en la funcion de interrupcion por puerto serial, por lo que mi programa se daña al no poder recibir mas datos.

Alguien Podria ayudarme con este error?
Gracias de antemano.

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Problema al grabar datos en la eeprom y recepcion uart
« Respuesta #1 en: 25 de Marzo de 2014, 08:58:23 »
  Según el datasheet, antes de comenzar la escritura hay que deshabilitar las interrupciones (esto es en asm), tal vez las funciones de CCS deshabiliten las interrupciones y nunca las vuelva a habilitar y por ello no te ingresa a la interrupción del UART
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: Problema al grabar datos en la eeprom y recepcion uart
« Respuesta #2 en: 25 de Marzo de 2014, 11:09:34 »
podrias poner tu código para darle una revisada
"Nada es imposible, no si puedes imaginarlo"

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Problema al grabar datos en la eeprom y recepcion uart
« Respuesta #3 en: 25 de Marzo de 2014, 13:33:35 »
Dos posibles problemas:

1) el modificador ERRORS en la declaración del #USE RS232. Sin eso si el buffer RX de la UART se desborda, la UART deja de recibir datos hasta ser reiniciada. Es problable que la rutina de EEPROM esté deshabilitando las interr durante la grabación y pudiendo generarte eso.

2)utilizar #DEVICE WRITE_EEPROM = NOINT

De esa manera, las interrupciones (como la de la UART) pueden ocurrir durante el grabado de la EEPROM. La contra es que al activarla, tenés que asegurarte que no ocurra nunca una grabación de la EEPROM dentro de la ISR.

Te recomendaría que agregues ambas características a tu código si no las estás usando. Seguramente solucione el problema.

Saludos.
"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.