MicroPIC

Contenidos de MicroPIC => Proyectos => Mensaje iniciado por: osmelfb5 en Abril 07, 2021, 05:05

Título: Ayuda para Crear intervalos de una hora con un pic 16f628a
Publicado por: osmelfb5 en Abril 07, 2021, 05:05
Buenas a todos resulta que estoy tratando de crear un proyecto en cual me permita cada una hora mantener en uno logico  en un pin determinado y luego apagar en una hora, este procedimiento debe mantenerse en un periodo repetitivo , no soy un gran experto, pero e visto que tambien es usa un delay ms en ccs pero en fin si existiera algun procedimiento un poco + eficiente.
Título: Re:Ayuda para Crear intervalos de una hora con un pic 16f628a
Publicado por: nocturno en Abril 07, 2021, 07:16
Hola Osmel, si sólo quieres hacer eso con delay_ms es lo más sencillo. ¿A qué te refieres como más eficiente?, ¿a que haya menor consumo eléctrico?, si es así podrías usar el modo Sleep y despertarlo con la interrupción del Timer, contando el número de interrupciones necesarias para llegar a la hora que buscas.
Título: Re:Ayuda para Crear intervalos de una hora con un pic 16f628a
Publicado por: osmelfb5 en Abril 07, 2021, 13:43
buenos dias admin me referi a la la palabra eficiente por el uso del codigo a la programación como e visto algunos ejemplo de relojes pense para el tiempo de una hora no era eficiente el uso del dilay lo otro como podria yo simplificar la unidad de medida en tiempo para delay por que creo que se me hace un poco engorroso la concersion de ms a hora.
Título: Re:Ayuda para Crear intervalos de una hora con un pic 16f628a
Publicado por: nocturno en Abril 07, 2021, 16:36
Pon tu código y miramos de hacerlo más eficiente como dices, pero sin verlo es difícil opinar.
Título: Re:Ayuda para Crear intervalos de una hora con un pic 16f628a
Publicado por: osmelfb5 en Abril 08, 2021, 01:02
Buenas Tardes Nocturno aqui mi codigo Fuente:
#INCLUDE <16f887.h>
#USE DELAY(CLOCK=4000000)
#FUSES XT,NOPROTECT,NOWDT,NOBROWNOUT,PUT,NOLVP
#DEFINE LED PORTB,0
#BYTE PORTB= 6

MAIN()
{
   SET_TRIS_B(0B11111110);    //Configura el puerto B
   WHILE(TRUE)                // Haga por siempre
   {
      BIT_SET(LED);           // Active el led
      DELAY_MS(500);          // Retardo de 0.5 segundo
      BIT_CLEAR(LED);         // Apagar el led
      DELAY_MS(500);          // Retardo de 0.5 segundo
   }
}

Me gustaria saber si este codigo puede ser micrado a otrs pic como el 16f73 o pic16f873
Título: Re:Ayuda para Crear intervalos de una hora con un pic 16f628a
Publicado por: nocturno en Abril 08, 2021, 09:03
Pero con ese código no consigues un parpadeo cada hora, sino cada segundo. Para hacerlo cada hora tendrías que meter esto en cada parpadeo, por ejemplo:
Código: [Seleccionar]
for (i=0; i<3600; i++ ) delay_ms(1000);
Título: Re:Ayuda para Crear intervalos de una hora con un pic 16f628a
Publicado por: osmelfb5 en Abril 09, 2021, 01:49
buenas noches Nocturno muchas gracias por recomendarme el codigo hice lo que me recomendo al parecer me falta por declarar algun parametro ya que el compilador no me compila el codigo recuerde que soy apenas unamprendis en la materia.
Título: Re:Ayuda para Crear intervalos de una hora con un pic 16f628a
Publicado por: nocturno en Abril 09, 2021, 19:35
Sí, claro, tienes que declarar la variable i antes de usarla.

Añade
Código: [Seleccionar]
    int16 i;
en la línea siguiente al SET_TRIS_B
Título: Re:Ayuda para Crear intervalos de una hora con un pic 16f628a
Publicado por: osmelfb5 en Abril 10, 2021, 04:20
Buenas noches Amigo Nocturno logre compilar el codigo sin problemas pero no logro que el led en este caso se apague despues de la hora el codigo me quedo de esta forma;
#INCLUDE <16f887.h>
#USE DELAY(CLOCK=4000000)
#FUSES XT,NOPROTECT,NOWDT,NOBROWNOUT,PUT,NOLVP
#DEFINE LED PORTB,0
#BYTE PORTB= 6

MAIN()
{
   SET_TRIS_E(0B11111110);    //Configura el puerto B
   WHILE(TRUE)                // Haga por siempre
   {
   int16 i;
   for (i=0; i<3600; i++ )
      BIT_SET(LED);           // Active el led
      delay_ms(1000);          // Retardo de 0.5 segundo
      BIT_CLEAR(LED);         // Apagar el led
      delay_ms(1000);          // Retardo de 0.5 segundo
   }
}
me gustaria que me explicaras   for (i=0; i<3600; i++ ) en gran parte entiendo el uso de la sentencia for vendria significando que el valor de i = 0 si i es mayor   que 3600 incrementa el valor de i verdad disculpa que te pregunte tanto en estos momentos estoy estudiando el manual de fundamentos C para pic.
Título: Re:Ayuda para Crear intervalos de una hora con un pic 16f628a
Publicado por: nocturno en Abril 10, 2021, 18:09
Para que se apague a la hora tendrías que hacerlo así:
Código: [Seleccionar]
#INCLUDE <16f887.h>
#USE DELAY(CLOCK=4000000)
#FUSES XT,NOPROTECT,NOWDT,NOBROWNOUT,PUT,NOLVP
#DEFINE LED PORTB,0
#BYTE PORTB= 6

MAIN()
{
   SET_TRIS_E(0B11111110);    //Configura el puerto B
   WHILE(TRUE)                // Haga por siempre
   {
   int16 i;
   for (i=0; i<3600; i++ )
      delay_ms(1000);
   BIT_SET(LED);           // Active el led
   for (i=0; i<3600; i++ )
      delay_ms(1000);
   BIT_CLEAR(LED);         // Apagar el led
   }
}
Título: Re:Ayuda para Crear intervalos de una hora con un pic 16f628a
Publicado por: osmelfb5 en Abril 11, 2021, 04:20
Buenas noches Nocturno e intentado de varias maneras con lo que me recomendaste y solo e logrado que dicho led encienda por unos pocos seguntos y luego se apague y más nunca vuelve a encender haste que se reset o se vuelva a conectar al parecer no queda de otra que intentar con el timer0
Título: Re:Ayuda para Crear intervalos de una hora con un pic 16f628a
Publicado por: nocturno en Abril 11, 2021, 07:11
No entiendo por qué no funciona. Confírmame si esto parpadea cada 5 segundos, por favor.
Código: [Seleccionar]
#INCLUDE <16f887.h>
#USE DELAY(CLOCK=4000000)
#FUSES XT,NOPROTECT,NOWDT,NOBROWNOUT,PUT,NOLVP
#DEFINE LED PORTB,0
#BYTE PORTB= 6

MAIN()
{
   int16 i;
   SET_TRIS_E(0B11111110);    //Configura el puerto B
   WHILE(TRUE)                // Haga por siempre
   {
   for (i=0; i<5; i++ )
      delay_ms(1000);
   BIT_SET(LED);           // Active el led
   for (i=0; i<5; i++ )
      delay_ms(1000);
   BIT_CLEAR(LED);         // Apagar el led
   }
}
Título: Re:Ayuda para Crear intervalos de una hora con un pic 16f628a
Publicado por: osmelfb5 en Abril 11, 2021, 22:38
Buenas tardes amigo Nocturno solo logro que se quede prendido el led infinitamente, no se que estaria faltando.
Título: Re:Ayuda para Crear intervalos de una hora con un pic 16f628a
Publicado por: osmelfb5 en Abril 12, 2021, 00:20
hola amigo Nocturno compile el ultimo codigo que pulicas y se demora 5 segundos ahora que debo hacer para que me dure una hora.
Título: Re:Ayuda para Crear intervalos de una hora con un pic 16f628a
Publicado por: nocturno en Abril 12, 2021, 07:07
Pues si el parpadeo es de 5 segundos, para cambiarlo por una hora únicamente habría que modificar el 5 que está en los dos bucles FOR por un 3600.
Pero así es como lo teníamos antes y me dijiste que no funcionaba.
Título: Re:Ayuda para Crear intervalos de una hora con un pic 16f628a
Publicado por: osmelfb5 en Abril 13, 2021, 03:47
si amigo lo e emulado en el proteus y pasado una hora nunca se apaga el led realmente no pense que esto me fuera dar tanto trabajo además de no ser un esperimentado en el tema solo son mis comienzo.