Autor Tema: Tube el un problema al energizar el micro, (nunca lo habia hecho)  (Leído 1819 veces)

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

Desconectado cicloide2

  • PIC18
  • ****
  • Mensajes: 359
Hace un tiempo hice un codigo (el primero  y gracias a ustedes), el programa encendia un led y cuando este prendia y apagaba una cantidad de veces prendia otro led , bueno este fin de semana se me ocurrio dejarlo funcionando todo el dia, y por la noche desconectarlo, al otro dia volvi a hacer lo mismo pero al energizarlo (conectarle la fuente) no arranco, lo desconecte lo volvi a conectar y si arranco esto me lo hizo dos veses hasta ahora.
Saben si debo colocar alguna linea que me resetee el micro antes de comenzar o asi esta bien o la falla podria estar por otro lado ( la fuente que utilizo es una switching de 5 Volt 1 Amp, de las que estan armadas con enchufe para enchufar directamante a 220Vac)
Me llamo la atencion pues parecia que todo andaba bien cuando hice el codigo funciono lo mas bien pero, supomgo que al dejarlo funcinando todo el dia y luego desconectarlo, el programa se detiene en cualqueer lugar, es por eso que pregunto si me esta faltando alguna linea que resetee el micro al energizarlo.
El micro es el MC9S08SH8.
Aca les dejo el codigo, para que no lo busquen:

Código: C
  1. #include <hidef.h> /* for EnableInterrupts macro */        
  2. #include "derivative.h" /* include peripheral declarations */                
  3. void delay(void) { //Retardo de aprox. 100ms        
  4. char cont;        
  5. cont=5;        
  6.  
  7. asm {          
  8.  
  9. loop:       nop      
  10.             nop
  11.             nop
  12.             nop        
  13.             nop        
  14.             dbnz cont,loop        
  15.  
  16.  }        
  17.  
  18. }        
  19.  
  20.  
  21. void main(void) {        
  22.   int i, cuenta;
  23.   cuenta=0;            
  24.   SOPT1 = 0x02; //Deshabilito watchdog        
  25.   PTBDD_PTBDD1=1; //Configuro el bit 1 del puerto B como salida        
  26.   PTBDD_PTBDD0=1; //Configuro el bit 0 del puerto B como salida                
  27.   PTAPE_PTAPE0=1; //Configuro la resistencia pull-up de PTAD0        
  28.   EnableInterrupts;        
  29.  
  30.   for(;;) {
  31.      for(i=60000;i;i--){  //enciende un led1
  32.      PTBD_PTBD1=1 ;
  33.     delay();
  34.    }
  35.      for(i=30000;i;i--){  //apaga led1
  36.      PTBD_PTBD1=0;
  37.     delay();
  38.    }
  39.    cuenta+=1;
  40.    if (cuenta==20)        //si se apaga y prende led1 20 veses
  41.    PTBD_PTBD0=1;          // prendo led2
  42.    for(i=100;i;i--){
  43.    delay();
  44.    }
  45.    if (cuenta==22){       //pregunto si la variable "cuenta" alcanzo 22 encendidas y apagadas del led 1
  46.    PTBD_PTBD0=0;          //si llego apaga led2
  47.    cuenta=0 ;
  48.    }
  49.    
  50.     }
  51.      
  52.       }

Gracias, salu0010 :-)
« Última modificación: 09 de Julio de 2012, 12:44:13 por cicloide2 »


 

anything