Autor Tema: Compilado, antes funcionaba, ahora no!  (Leído 1538 veces)

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

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Compilado, antes funcionaba, ahora no!
« en: 07 de Mayo de 2006, 19:12:04 »
Hola saludos a todos, tengo un problema, nose que diablos paso, contare detalladamente, hice un programa que consiste en grabar un dato en la eeprom interna y mediante interrupcion externa por RB0 se lee el dato y se lo observa en puerto B y A, mientras el micro es llevado al estado de bajo consumo (sleep), este es el código en ccs:

Por cierto uso el pic16f877a

/*----------------------------------------------------------------------------*/
/* ESCRIBE un dato Y LEE la memoria eeprom interna de 16F877A  */
/* mediante interrupcion externa                                                  */
/*---------------------------------------------------------------------------*/

#include <16f877a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT,NOCPD,NOWRT
#use delay (clock=4000000)
#use fast_io(a)
#use fast_io(b)
#byte port_a=0x05
#byte port_b=0x06

// Se graba en la localidad 01h de la EEPROM (usando  la directiva #ROM)

#rom 0x2101={0xfd}         // La localidad 01h de memoria EEPROM = 0fdh

#int_EXT
   int dato;
EXT_isr()                           // rutina que atiende la interrupcion
{
   dato = read_eeprom(0x01);
   port_a = dato;
   port_b = dato;
   delay_ms(1000);
   port_a = 0;
   port_b = 0;
}

void main()               // programa principal
{
   set_tris_a(0x1e);
   set_tris_b(0x01);
   port_a=0x00;
   port_b=0x00;
// write_eeprom(0x01,0xfd);      // esta instruccion podria usarse en vez de #rom del
                                               //encabezado
   setup_adc_ports(NO_ANALOGS);      // todos los pines analogicos son digitales, talvez no
                                                        //sea necesario
   ext_int_edge(H_TO_L);                   //por defecto esta en L to H
   enable_interrupts(INT_EXT);             // habilitación de interrupcion por RB0
   enable_interrupts(GLOBAL);              // habilitadas interrupciones globales
   while(TRUE)
   {
      sleep();    // micro en estado de bajo consumo
   }
}

la primera vez que compile este programa y simulado en proteus todo bien, ningun problema, funcionaba a la perfección, pero despues ya no funciono, sucedio que estaba trabajando en eso en el proteus y con el compilador ccs tb, y de repente la rodilla de mi hermano apago mi pc y no tuve tiempo de guardar ni cerrar ni hacer nada, simplemente la computadora se apago, bueno, ahora cuando vuelvo a compilar el mismo codigo en la parte que indica cuanta memo se usa (RAM y ROM), ROM (es la eeprom verdad?) aparece en 0% y deberia estar en 3% (+ o -), porque eso aparecia antes, talvez ese no sea el problema la cosa es que en la simulacion todo bien armada, con los valores correctos, no funciona, mas bien comienza el tiempo a correr muy lento cundo se pulsa un pulsador en RB0 que sirve de interrupcion; aclaro nuevamente que el mismo codigo compliado antes del apagado involuntario de pc funcionaba de maravilla en el simulador. que fue lo que sudecio? no lo entiendo, talvez algo mal en mi codigo, una ayuda porfavor, estare muy agradecido, muchas gracias, adios.
.

Desconectado doctor_pic

  • PIC10
  • *
  • Mensajes: 1
Re: Compilado, antes funcionaba, ahora no!
« Respuesta #1 en: 08 de Mayo de 2006, 01:56:15 »
Hola.
Con respecto a lo de la RAM y ROM, esta última no es la EEPROM:
RAM: memoria volátil, en donde se alamcenan los datos, variables, etc de tu programa, por eso el valor al compilar un porgrama, suele variar
ROM: memoria en donde se almacena todo el código de programa, es decir todas las instrucciones compiladas.

Ahora con respecto a tu problema, no se si ya intentaste, crear un nuevo proyecto, y copiar todo el códio de programa en un archivo nuevo, para asi compilarlo y simularlo.......puede que el archivo de tu proyecto se encuentre corrupto........


SALUDOS  :-/
Despúes de un semestre sabatico =)P he regresado.......... GROUCHY RECARGADO

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Compilado, antes funcionaba, ahora no!
« Respuesta #2 en: 08 de Mayo de 2006, 16:55:10 »
Hola saludos colegas, muchas gracias por la ayuda, creo logre solucionar el problema, pero todavia no logro entenderlo ya que una primera vez que escribi y complile tal como esta arriba funciono bien, despues no volvio a funcionar mas, bueno les comento el error la definiicíón de int dato; la coloque dos líneas mas arriba, ya que en un ejemplo donde su usa la interrupcion externa por RB0 vi que despues de #int_EXT esta seguido (en la siguiente linea) EXT_xxxx() {....}; seguramente ese fue el error, ya que una vez movido el valor int dato mas arriba compilado nuevamente funcionaba de maravillas. Bueno por si a alguien le sirve aca dejo el aporte. Chao.  :-/

pd: gracias por la ayuda doctor_pic, tb hice la prueba anteriormente creando todo nuevamente y no era ese el problema.
.