Autor Tema: Como usar un timer para que me cuente 10 minutos  (Leído 2090 veces)

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

Desconectado ricardomecatro

  • PIC10
  • *
  • Mensajes: 2
Como usar un timer para que me cuente 10 minutos
« en: 07 de Mayo de 2012, 16:11:28 »
Hola, y disculpen de antemano si ya habia un tema parecido, vi varios pero no encontre lo que queria y les escribo para ver si me pueden ayudar en como usar un timer, soy nuevo aun en estos temas y quiero hacer lo siguiente; tengo un proyecto donde debo recibir una entrada de un contacto magnetico de una puerta, al abrirse la puerta el circuito se abre y esta señal la deseo meter a la entrada del pic16f877a , mientras el circuito este abierto (la puerta abierta) me empiece a contar si la puerta dura 10 minutos abierta me active una salida que me activara un rele, pero si la puerta no tarda los 10 minutos abierta no me haga nada y me haga eso del conteo cada ves que se abra la puerta.  Espero y me puedan ayudar y si falle a algo en las reglas del foro porfavor haganmelo saber y corregirlo y ya no cometerlo mas adelante.

Desconectado pablolode

  • PIC16
  • ***
  • Mensajes: 123
Re: Como usar un timer para que me cuente 10 minutos
« Respuesta #1 en: 07 de Mayo de 2012, 16:57:18 »
hola ricardo, si has fallado a las reglas,he visto varios ejemplos en el foro de uso de timers, te recomiendo te fije esos ejemplos antes:   
Indice de Hilos Destacados en el sub-Foro de C para Microcontroladores.

Desconectado ricardomecatro

  • PIC10
  • *
  • Mensajes: 2
Re: Como usar un timer para que me cuente 10 minutos
« Respuesta #2 en: 30 de Mayo de 2012, 20:13:40 »
Aqui les dejo el programa por si a alguien le sirve y se aceptan criticas para optimizar codigo o algo parecido

 #include <16f877A.h>         //pic a utilizar         
#fuses XT,NOWDT,NOPROTECT,PUT      //ordenes para el programador
#use delay (clock=4000000)         //Frecuencia reloj
#use fast_io(b)
#use fast_io(a)

#DEFINE  PUERTA  input(PIN_A1)

int cts=0, ctm=0, tm;

#INT_TIMER1
void isr_Timer1() {
   set_timer1(3036);
   cts++;
   if(cts==120) { ctm++; cts=0; }
   if(ctm==tm) {ctm=0;
      output_high(PIN_B7);
      }
   }

void contar(int mins) {

   tm=mins;
   enable_interrupts(GLOBAL);
   enable_interrupts(INT_TIMER1);
   
}

void no_contar() {
   disable_interrupts(INT_TIMER1);
   output_low(PIN_B7);
   cts=0;
   ctm=0;
}

void main (){
//Activar timer1 e interrupciones   
   SETUP_TIMER_1(T1_INTERNAL|T1_DIV_BY_8);
   set_tris_b(0x00);
   set_tris_a(0xFF);
   output_b(0);
   while(true) {
      while(PUERTA == 1){
      contar(10);}  //tiempo en minutos
      while(PUERTA == 0){
      no_contar();}
   }
}

Desconectado AcoranTf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1093
Re: Como usar un timer para que me cuente 10 minutos
« Respuesta #3 en: 31 de Mayo de 2012, 18:08:49 »
Bueno ya que hablas de una puerta, te pongo enlace a un proyecto que estoy desarrollando, precisamente de un automatismo para una puerta. Aun no esta totalmente acabado, pero es funcional.
No te garantizo que mi forma de programar sea la optima, ya que tambien llevo poco tiempo haciendolo, pero igual te sirve de ayuda para hacer lo que tu quieres.
En el archivo Puerta.rar que hay en uno de los comentarios, tienes el fuente de CCS, el esquema de proteus y algunos comentarios sobre el funcionamiento del sistema. No obstante en breve subire los ultimos avances y modificaciones que he realizado, sobretodo a la fuente que alimenta el PIC, ya que la que hay en ese esquema no funciona del todo bien.

Saludos.


 

anything