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

Temas similares

23/06/2012 #1


Pic16f819 inputs B4 y B5 muy sensibles
Hola, espero me puedan ayudar.
Resulta que no puedo hacer que un simple botón encienda un led.
Estoy usando el pic16f819, tengo configurado el pin b4 y b5 como inputs y b2 y b3 como salidas,,"b4 enciende b3" y "b5 enciende b2"
No sé si me falta algo en el código o alguna conexión, estoy usando el ccs compiler, en proteus la simulación sale muy bien, pero al armarlo a veces encienden uno seguido del otro y a veces al revés por ejemplo b4 enciende b2 y b5 enciende b3 y aveces encienden 3 o 4 veces continuas.

El código es el siguiente:

Código:
///////////////////////////////////////////////////////////////////////////////////////////////////
#include <16F819.h>
#fuses XT,NOWDT,NOLVP,NOPROTECT,PUT,NOLVP,BROWNOUT
#use delay (clock=4000000)


void main()
{
set_tris_b(0b00110000);
output_b(0b00000000);

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_spi(SPI_SS_DISABLED);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);

   // TODO: USER CODE!!
while(true)
{
   if (input(pin_b4))
   {
   output_high(pin_b3);
   delay_ms(1000);
   output_low(pin_b3);
   delay_ms(1000);
   } 

   
   if (input(pin_b5))
   {
   output_high(pin_b2);
   delay_ms(1000);
   output_low(pin_b2);
   delay_ms(1000);
   }
   
}

}
/////////////////////////////////////////////////////////////////////////////////////////////////
Estoy usando un 7805, un cristal 4mhz, 2 leds con sus resistencias, un alambre para simular el botón alimentando 5v al input ya sea b4 o al b5 "sólo un pulso"

De antemano, muchas gracias.
23/06/2012 #2

Avatar de dinoelectro

enciende las resistencias de pullup amigo

port_b_pullups(true);
23/06/2012 #3


si ,,muchas gracias !!!
Ya lo resolvi,,usando las interrupciones B4-B7 y utilizando switch,case

Gracias !!
29/07/2014 #4


encender LED con pic16f819
hola, tengo una duda con un simple programita para encender y apagar un led. uso el programa el PCWHD y uso el pic16f819. segun tengo configurado el reloj interno, compila bien en el programa y al momento de usar el pic en el protoboardno se enciende nada. abajo esta el programa, espero resolver este problema en las vacaciones jejejjee. toda opnion es de gran ayuda gracias

PD: soy estudiante de universidad en electronica y alimento mi protoboard con un cargador de 5v y de 0.7A
Archivos Adjuntos
Tipo de Archivo: txt proyecto.txt (587 Bytes, 28 visitas)
29/07/2014 #5
Moderador

Avatar de D@rkbytes

Eduardo Mota dijo: Ver Mensaje
Hola. Tengo una duda con un simple programita para encender y apagar un LED.
Uso el programa el PCWHD y uso el pic16f819.
Según tengo configurado el reloj interno, compila bien en el programa y al momento de usar el pic en el protoboardno se enciende nada.
Prueba con este simple programa.
Código:
#include <16f819.h>
#fuses   NOBROWNOUT
#use     delay(internal = 4MHz)

void main(void)
{ 
   setup_oscillator(OSC_4MHz); // Configurar el oscilador interno a 4MHz.
   
   output_high(pin_b0);
   delay_ms(500);
   
   while (true)
   {
      output_toggle(pin_b0);          
         delay_ms(500);
      }           
   }
Tienes mal la configuración del oscilador interno en tu programa y no es necesario configurar tantas cosas.

Mira el valor de los registros con algún debugger (Depurador) para encontrar errores de configuración.

Registros involucrados en este programa:
OSCCON ---> Configura Oscilador Interno
TRISB ---> Configura entradas y salidas del puerto B
PORTB ---> Puerto I/O con diferentes módulos.

Suerte.
30/07/2014 #6


D@rkbytes dijo: Ver Mensaje
Prueba con este simple programa.
Código:
#include <16f819.h>
#fuses   NOBROWNOUT
#use     delay(internal = 4MHz)

void main(void)
{ 
   setup_oscillator(OSC_4MHz); // Configurar el oscilador interno a 4MHz.
   
   output_high(pin_b0);
   delay_ms(500);
   
   while (true)
   {
      output_toggle(pin_b0);          
         delay_ms(500);
      }           
   }
Tienes mal la configuración del oscilador interno en tu programa y no es necesario configurar tantas cosas.

Mira el valor de los registros con algún debugger (Depurador) para encontrar errores de configuración.

Registros involucrados en este programa:
OSCCON ---> Configura Oscilador Interno
TRISB ---> Configura entradas y salidas del puerto B
PORTB ---> Puerto I/O con diferentes módulos.

Suerte.
muchas gracias, si funciona, solo que al conectarlo al protoboard, lo hace pero solo cuando acerco la mano, (estatica eso creo), y en ocasiones se apaga el led o se queda prendido, tendria que utilizar protecciones asi como en el led (resistencia)?
30/07/2014 #7
Moderador

Avatar de D@rkbytes

Eduardo Mota dijo: Ver Mensaje
Muchas gracias, si funciona, solo que al conectarlo al protoboard, lo hace pero solo cuando acerco la mano, (estática eso creo), y en ocasiones se apaga el led o se queda prendido.
¿Tendría que utilizar protecciones así como en el led (resistencia)?
Se me ocurre que no has colocado el pin de Master Clear hacia VDD. (Pin 4 = RA5)
Lo puedes colocar directamente hacia VDD o con una resistencia de 4.7k o 10k.
También puedes agregar el fuse NOMCLR y evitar que ese pin funcione como reset.

Verifica eso y nos comentas.
30/07/2014 #8


D@rkbytes dijo: Ver Mensaje
Se me ocurre que no has colocado el pin de Master Clear hacia VDD. (Pin 4 = RA5)
Lo puedes colocar directamente hacia VDD o con una resistencia de 4.7k o 10k.
También puedes agregar el fuse NOMCLR y evitar que ese pin funcione como reset.

Verifica eso y nos comentas.
tienes razon, funciona bien con la resitencia de 10K, de hecho las tiene en todo el puerto A, sgun investigue es para proteccion, asi el pic lo detectara como un 1 logico y no un dato indeterminado... gracias por la info
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 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.