TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: elfrancho en 16 de Septiembre de 2010, 11:46:51

Título: 16f628a lento?
Publicado por: elfrancho en 16 de Septiembre de 2010, 11:46:51
Una vez que grabo el micro, cuando lo pongo en la placa, funciona el programa pero muuuuuuy lento...

Por ejemplo prendo un led con  B5 en 1, pongo delay_ms(100) y lugo apago el led...  pero en lugar de 100 ms, demora una eternidad, lo hace LEEEEEEEENTO...  COMO CADA 10 SEGUNDOS hace el cambio...



aqui el codigo

#include <16F628A.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC_IO                 //Internal RC Osc, no CLKOUT
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES BROWNOUT                 //Reset when brownout detected
#FUSES MCLR                     //Master Clear pin enabled
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection

#use delay(clock=4000000)
#use rs232(baud=300,parity=N,xmit=PIN_B2,rcv=PIN_B1,bits=8)

void main()
{

   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
   setup_oscillator(False);
   set_tris_a (00000000);
   set_tris_B (00000000);
   

   // TODO: USER CODE!!
   while (1){
      delay_ms(100);
      output_high(pin_B5);
      delay_ms(100);
      output_low(pin_B5);
   }

}
Título: Re: 16f628a lento?
Publicado por: Suky en 16 de Septiembre de 2010, 12:20:32
Configura el oscilador interno, no le coloques false.


Saludos!
Título: Re: 16f628a lento?
Publicado por: elfrancho en 16 de Septiembre de 2010, 12:43:05
Configura el oscilador interno, no le coloques false.


Saludos!

Gracias.. pero soy nuevo en ccs....  que deberia poner en lugar de false???
Título: Re: 16f628a lento?
Publicado por: elfrancho en 16 de Septiembre de 2010, 13:00:14
SOLUCIONADO!!!!!!


   setup_oscillator(OSC_4MHZ);


ESTO ERA LO QUE FALTABA


Ahora OTRAAAAA CONSULTA !!!!!

El pin Tx cuando no transmite nada està en 1....  y en este pin tengo un transmisor RF de 433mhz...  el cual queda constantemente transmitiendo el 1 por lo tanto calienta un poco...  que puedo hacer al respecto!!!! ???


Saludos amigos y gracias por su ayuda -111
Título: Re: 16f628a lento?
Publicado por: jhozate en 16 de Septiembre de 2010, 13:20:36
Estas visualizando siempre un 1 en la transmision??.. o estas probando que esta a 1 el pin?,
Título: Re: 16f628a lento?
Publicado por: elfrancho en 16 de Septiembre de 2010, 15:15:34
he agregado a mi código:

 while (1){
  delay_ms(500);
  printf("hola mundo");       
}

y el pin Tx del pic transmite perfectamente (lo veo en el osciloscopio)

El problema es que cuando el pic NO ESTÁ TRANSMITIENDO, tx se mantiene en valor alto (5v)  y el transmisosr de RF queda transmitiendo un 1 y calienta)....

La pregunta es si si puede hacer que en reposo (sin transmision) el pin tx esté en 0

Saludos !!!!
Título: Re: 16f628a lento?
Publicado por: jhozate en 16 de Septiembre de 2010, 15:26:49
desconozco si es normal en esos modulos algun calentamiento moderado. El estado de la linea por protocolo es 1. Pero no es que se este transmitiendo ese 1 siempre, la transmision inicia despues del bit de inicio.