Autor Tema: timer0 en pic12f675  (Leído 4181 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado zidfrid23

  • PIC10
  • *
  • Mensajes: 27
timer0 en pic12f675
« en: 22 de Diciembre de 2009, 14:07:41 »
hola amigos del foro.

veran soy novato en pic y deseo realizar una rutina que me genere retardos sin parar la maquina, para ello tengo la intencion de usar el timer0, el problema es que me escribi un codigo de prueba sencillo y este no me corre en el pic.
el siguiente es el codigo, aclaro que programo con el picC:

Código: [Seleccionar]
#include "C:\Users\Alejandro\Documents\PIC\timer0\timer0.h"
#int_RTCC
void time_isr()
{
  output_high(pin_a2);
}

void main()
{
   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_comparator(NC_NC);
   setup_vref(FALSE);
   set_timer0(0);
   enable_interrupts(INT_RTCC);
   enable_interrupts(GLOBAL);
   output_a(0x00);
   SET_TRIS_A(0x38);


  while(1);
}

es como si no estubiera entrando a la interrupcion por overflow del timer, y no se por que.

Bueno eso es todo amigos, cualquier ayuda o sugerencia es bien benida, y de antemano gracias por su tiempo e interes.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: timer0 en pic12f675
« Respuesta #1 en: 22 de Diciembre de 2009, 15:48:00 »
Hola, no has definido que oscilador usas. Si usas uno de 4MHz es recomendable que agregues el fusible...

#fuses XT

Ya que puede que el pic esté esperando otro oscilador y por eso no funciona.

Desconectado QIQE

  • PIC18
  • ****
  • Mensajes: 335
Re: timer0 en pic12f675
« Respuesta #2 en: 22 de Diciembre de 2009, 16:05:20 »
verifica el fuse LVP y ponlo en NOLVP
Muchas gracias por vuestro tiempo.

Saludos desde valencia!!!

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
Re: timer0 en pic12f675
« Respuesta #3 en: 22 de Diciembre de 2009, 20:17:55 »
sube tambien este archivo

Código: [Seleccionar]
#include "C:\Users\Alejandro\Documents\PIC\timer0\timer0.h"

Desconectado zidfrid23

  • PIC10
  • *
  • Mensajes: 27
Re: timer0 en pic12f675
« Respuesta #4 en: 23 de Diciembre de 2009, 12:27:11 »
bueno amigos este es el .h de mi ensayo con el timer, el problema persiste.

Código: [Seleccionar]
#include <12F675.h>
#device adc=8

#FUSES NOWDT                  //No Watch Dog Timer
#FUSES INTRC_IO              //Internal RC Osc, no CLKOUT
#FUSES NOCPD                  //No EE protection
#FUSES NOPROTECT              //Code not protected from reading
#FUSES MCLR                  //Master Clear pin enabled
#FUSES NOPUT                  //No Power Up Timer
#FUSES BROWNOUT              //Reset when brownout detected

#use delay(clock=4000000)


gracias por la colaboracion amigos.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: timer0 en pic12f675
« Respuesta #5 en: 23 de Diciembre de 2009, 12:33:54 »
Hola.

El pin MCLR si esta conectado a Vcc?
El papel lo aguanta todo

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
Re: timer0 en pic12f675
« Respuesta #6 en: 23 de Diciembre de 2009, 15:35:39 »
yo reiniciaria el timer0 despues de prender el PIN a2, intenta para ver que sucede.

Código: [Seleccionar]
set_timer0(0);
primero pruebalo en un simulador, puede ser PROTEUS, si funciona ahi, trata de programar el PIC con un programa que encienda y apague (con un retardo de un segundo) todos los puertos del PIC, esto para comprobar que estas programando correctamente el PIC, y luego comprueba que todo este bien conectado que este llegando el suficiente voltaje a los pines indicados y nos comentas como te va.

INTENTO HACER EL PROGRAMA SIN EL COMPILADOR, YA QUE ESTOY EN UN COMPUTADOR DISTINTO MAS O MENOS TE RECOMIENDO QUE QUEDE ASI:

Código: [Seleccionar]
#include <12F675.h>
#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC_IO                //Internal RC Osc
#FUSES NOCPD                    //No EE protection
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES PUT                      //Power Up Timer
#FUSES NOBROWNOUT               //No brownout reset
#FUSES BANDGAP_HIGH          
#use delay(clock=4000000)

#INT_TIMER0
void timer0(){

   output_high(PIN_A2);//enciendes el pin A2
   delay_ms(10);//Tiempo de duracion de encendido del pin A2
   output_low(PIN_A2);//apagas el pin A2
   set_timer0(0);//vuelves a esperar los 65 ms

}

void main()
{

   setup_adc_ports(NO_ANALOGS|VSS_VDD);
   setup_adc(ADC_OFF);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_256);// timer para que se dispare cada 65 ms
   setup_timer_1(T1_DISABLED);
   setup_comparator(NC_NC);
   setup_vref(FALSE);
   enable_interrupts(INT_TIMER0);
   enable_interrupts(GLOBAL);
  
   output_a(0x00);
   set_timer0(0);

   while(true){
   }

}

Mira que quite el PIN MASTER CLEAR y tambien le coloque el cristal interno sin salida.
« Última modificación: 23 de Diciembre de 2009, 15:59:01 por fidodido18 »

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: timer0 en pic12f675
« Respuesta #7 en: 23 de Diciembre de 2009, 15:54:35 »
 :?

Una vez se desborda, vuelve a su cuenta normal no?

Tienes el esquemático por ahi para verlo?
El papel lo aguanta todo

Desconectado garocco

  • PIC10
  • *
  • Mensajes: 16
Re: timer0 en pic12f675
« Respuesta #8 en: 23 de Diciembre de 2009, 16:29:51 »
Disculpame, pero no veo en el código "clear_interrupt(int_timer0);"
Si no lo limpias se queda en la interrupt indefinidamente (en cuanto se ejecuta el retfie vuelve a entrar).

Saludos.

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
Re: timer0 en pic12f675
« Respuesta #9 en: 23 de Diciembre de 2009, 16:49:30 »
Disculpame, pero no veo en el código "clear_interrupt(int_timer0);"
Si no lo limpias se queda en la interrupt indefinidamente (en cuanto se ejecuta el retfie vuelve a entrar).

Saludos.

Hola bueno ya realize la simulacion en proteus y me funciono perfectamente con el codigo que tengo arriba, envia un pulso de duracion de 10 ms cada 65 ms..


Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: timer0 en pic12f675
« Respuesta #10 en: 23 de Diciembre de 2009, 23:10:09 »
Hola.

CCS limpia la bandera por nosotros ... jeje (eso es lo que nos mal-acostumbra)

Creo que es cuestión del hard, esperemos algún esquemático para revisar.

Saludos
El papel lo aguanta todo


 

anything