Autor Tema: problema parpadeo led timer1 pic16f1828  (Leído 2454 veces)

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

Desconectado francpa

  • PIC10
  • *
  • Mensajes: 16
problema parpadeo led timer1 pic16f1828
« en: 19 de Febrero de 2013, 14:29:59 »
hola amigos

les cuento mi problema quiero hacer parpadear un led cada 500ms utilizando el timer1 del pic 16f1828, lo simulo en proteus no me genera error pero tampoco hace nada l compilacion tampoco me da error lo hago con otro pic y funciona bien, cualquioer ayuda se los agradeceria mucho
Código: [Seleccionar]
#include <16F1828.h>

#FUSES NOWDT, XT, NOPUT, NOPROTECT, NOCPD, NOBROWNOUT, NOLVP, NODEBUG, NOWRT, NOMCLR
#use delay(clock=4000000)
#use FIXED_IO( C_outputs=PIN_C0 )
#bit RB7=0x06.7
 
#int_TIMER1
void  TIMER1_isr(void) //Función de interrupción por desbordamiento TMR1
{
RB7=~RB7;
set_timer1(0x0BDC);//carga del TMR1
}
 
void main()
{
set_tris_c(0b01111111); //configura RB7 como salida el resto como entrada
RB7=0;
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
set_timer1(0x0BDC);
while(true);
 
}

aqui esta el codigo adjunto
gracias por cualquier ayuda

Desconectado francpa

  • PIC10
  • *
  • Mensajes: 16
Re: problema parpadeo led timer1 pic16f1828
« Respuesta #1 en: 19 de Febrero de 2013, 14:39:45 »
Código: [Seleccionar]
#include <16F1828.h>

#FUSES NOWDT, XT, NOPUT, NOPROTECT, NOCPD, NOBROWNOUT, NOLVP, NODEBUG, NOWRT, NOMCLR
#use delay(clock=4000000)
#use FIXED_IO( b_outputs=PIN_B7 )
#bit RB7=0x06.7
 
#int_TIMER1
void  TIMER1_isr(void) //Función de interrupción por desbordamiento TMR1
{
RB7=~RB7;
set_timer1(0x0BDC);//carga del TMR1
}
 
void main()
{
set_tris_b(0b01111111); //configura RB7 como salida el resto como entrada
RB7=0;
setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
set_timer1(0x0BDC);
while(true);
 
}

lo siento me habia equivocado este es el codigo verdadero el que no me funciona, segun yo esta bueno, al simularlo en el proteus no pasa nada

saludos

Desconectado Chenao

  • PIC18
  • ****
  • Mensajes: 414
Re: problema parpadeo led timer1 pic16f1828
« Respuesta #2 en: 19 de Febrero de 2013, 15:45:23 »

Intenta hacer lo siguiente en la rutina de interrupción

Código: [Seleccionar]
#int_TIMER1
void  TIMER1_isr(void) //Función de interrupción por desbordamiento TMR1
{
  conta = conta + 1;
  if(conta == 1)
   {
     output_pin(pin_b7, 1)
     set_timer1(0x0BDC);//carga del TMR1
   }
 else
   {
     output_pin(pin_b7, 0)
     set_timer1(0x0BDC);//carga del TMR1
    conta = 0;
   }
}

Donde conta es una variable global que se inicializa desde la función main().
Un saludo desde Pereira - Colombia

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: problema parpadeo led timer1 pic16f1828
« Respuesta #3 en: 19 de Febrero de 2013, 17:42:27 »
Hola Chenao, tal vez en vez de poner output_pin(pin, valor), quisiste poner output_bit(pin, valor)

Saludos!

Desconectado Chenao

  • PIC18
  • ****
  • Mensajes: 414
Re: problema parpadeo led timer1 pic16f1828
« Respuesta #4 en: 19 de Febrero de 2013, 19:07:12 »
Citar
Hola Chenao, tal vez en vez de poner output_pin(pin, valor), quisiste poner output_bit(pin, valor)

En efecto bmb eso me pasa por andar a las carreras y no verificar las sintaxis de las funciones, gracias (y).
« Última modificación: 19 de Febrero de 2013, 19:14:37 por Chenao »
Un saludo desde Pereira - Colombia


 

anything