Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

17/10/2016 #1


Programa para mantener un LED parpadeando (Alarma)
Hola! Necesito que alguien me eche una mano.
Tengo un programa para PIC16F887 de una alarma con 8 entradas y 8 salidas. (2 puertas y 4 ventanas, bit3 y bit 7 son no implementados)

El problema es que necesito que cuando uno de los leds encienda, se quede haciendo la función de intermitente (alarma) pero que lo mantenga haciendo aunque el bit lo cambie a alto o bajo.

Por favor. Si alguien sabe, me caería de maravilla!

Este es el código:
Código PHP:
void main() {
                
TRISC=0x00//Configurando el Puerto "C" como salida
                
OPTION_REG=OPTION_REG 0x7F//Activar "Weak Pull-up"
                
ANSELH=0x00//Configurando Entradas Digitales en PORTB
                
PORTB=0xFF//Activando Pull-ups

                
while(1)
                {
                 if(
PORTB.RB0//Alarma Encendida
                 
{
                 
PORTC=PORTB&0x77//Enmascaramiento
                 
delay_ms(250); //Retardo 1/4 de segundo
                 
PORTC=0x01//Alarma activada
                 
delay_ms(250);
                 }
                 else
                 {
                 
PORTC=0//Alarma Apagada
}
}

17/10/2016 #2
Moderador

Avatar de D@rkbytes

Usa un timer, el timer 1 por ejemplo, que es de 16 bits y tendrás mayor lapso para el desborde.
Lo configuras para que desborde cada x tiempo y haces un output_toggle(PIN_XX);
17/10/2016 #3


ah! suena interesante... aunque no entiendo muy bien lo que quieres decir con el desborde...
pero cual pin viene siendo? es el que dice TK1CKI?
17/10/2016 #4
Moderador

Avatar de D@rkbytes

axelcircuit dijo: Ver Mensaje
Ah! Suena interesante, aunque no entiendo muy bien lo que quieres decir con el desborde.
El desborde se produce cuando el timer ha llegado a su valor máximo de conteo programado.
En ese momento la cuenta se reinicia al valor precargado y habrá ocurrido un desborde.
axelcircuit dijo: Ver Mensaje
¿Pero cuál pin viene siendo? ¿Es el que dice TK1CKI?
No. El pin T1CKI (Timer 1 Clock Input) es el pin de reloj externo para sincronizar el timer 1.
Puedes usar cualquier pin que sea salida, pero ese proceso lo debes hacer dentro del servicio de interrupción por desborde del timer 1.
Por lo tanto, el timer 1 debe ser configurado para operar con el reloj interno.
17/10/2016 #5

Avatar de ruben90

Y si utilizas un diodo LED tipo blinking? Digo, si su función será solo parpadear, te viene como anillo al dedo y te ahorras el pedazo de código.
17/10/2016 #6


si, el problema que necesito hacerlo con codigo y no es solo parpadeo
18/10/2016 #7


Si pueden subir un ejemplo del codigo me ayudaria bastante o si me pueden tutoriar estaria superchido!
18/10/2016 #8
Moderador

Avatar de D@rkbytes

Es sencillo, mira el ejemplo adjunto.
Ahí también se hace uso de la interrupción externa para activar y desactivar el timer 1.

La fórmula para cargar el timer 1 se encuentra en la hoja de datos.
También existen programas en línea sobre calculadoras de timers.
Yo hice un programa para eso y también lo adjunto.
Archivos Adjuntos
Tipo de Archivo: rar 16F887 LED Toggle con Timer 1.rar (456,1 KB (Kilobytes), 4 visitas)
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.