Autor Tema: led + button  (Leído 3277 veces)

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

Desconectado nina

  • PIC10
  • *
  • Mensajes: 29
led + button
« en: 13 de Septiembre de 2010, 22:14:59 »
Es el siguiente.
el siguiente programa no funciona en absoluto.
Estoy usando el 16F628 con el oscilador interno y una fuente de alimentación ATX (computadora).
Simula la belleza proteus y ta. al pulsar el botón, el LED se quede indefinidamente.
Sin embargo, al montar en la protoboard LED se ilumina sólo unos segundos. Es como estuviesse reseting del tiempo en tiempo.
Mi ccs es 4.032 y el mplab es 8.10.

si alguien tiene un led un 16F628 y un botón y puede simular en protoboard para mí. Estoy muy agradecido.

#include <16F628A.h>
#fuses INTRC_IO,NOWDT,NOPUT,NOPROTECT,NOCPD
#use delay(internal=4000000, PLENN)
#define botao PIN_A1
#define LED PIN_B3

void main() {
setup_oscillator(OSC_4MHZ);
output_low(LED);
while(TRUE)
{
if (input(botao) == 0)
{
output_high(LED);
}

}
}

Gracias

Muganga

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: led + button
« Respuesta #1 en: 13 de Septiembre de 2010, 22:31:51 »
Hola nina, podrias subir el esquemático de como tienes conectado el PIC en la protoboard?  Por lo que comentas, si es posible que se esté reseteando.  De todos modos debes revisar que tu fuente no sea la que esté produciento esto y que le tengas el capacitor de desacoplo en la alimentación del PIC.  También debería tener una resistencia pullup en el pin del botón (A1).

Saludos!

Desconectado nina

  • PIC10
  • *
  • Mensajes: 29
Re: led + button
« Respuesta #2 en: 13 de Septiembre de 2010, 22:56:04 »
RA----10K----5V
RA----BUTTON----TIERRA

B3----470R-----LED---TIERRA

VCC ----5V
GND ----TIERRA


ya sustituyó a la fuente de alimentación ATX (computadora) por una fuente de teléfono celular, pero también no funciona.
Podria hacer un teste con una batería de 9 voltios?

Muchas gracias por la respuesta

Nina

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: led + button
« Respuesta #3 en: 14 de Septiembre de 2010, 00:25:32 »
Pone una resistencia de pullup entre el boton y 5V

      5V
       /
       \  10K
       /
RA-+--BUTTON----TIERRA

saludos!!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado nina

  • PIC10
  • *
  • Mensajes: 29
Re: led + button
« Respuesta #4 en: 14 de Septiembre de 2010, 08:29:50 »
Gracias por su ayuda, entratanto, mismo poniendo incluso la resistencia (pull up) el problema continúa.

Nina

Desconectado f-traxx

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 116
Re: led + button
« Respuesta #5 en: 14 de Septiembre de 2010, 09:03:17 »
Hola nina haz lo siguiente y dime si te funciona, en fuses añade #FUSES NO_MCLR, #FUSES XT.
Luego saca el setup oscillator, cambia #use delay(internal=4000000, PLENN) por #use delay(clock=4000000)

Espero que te haya ido bien.

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: led + button
« Respuesta #6 en: 14 de Septiembre de 2010, 09:39:35 »
Otra cosa que yo haría es deshabilitar las entradas como analógicas.  Ya que A1 por defecto es configurada como entrada analógica y no digital.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado nina

  • PIC10
  • *
  • Mensajes: 29
Re: led + button
« Respuesta #7 en: 14 de Septiembre de 2010, 10:12:05 »
Ya he intentado al pin RB4 todavía no ha funcionado.

Muchas gracias

Nina

Desconectado korpaztk

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 202
Re: led + button
« Respuesta #8 en: 14 de Septiembre de 2010, 11:18:55 »
nunca hay q probar con fuentes switching (fuentes de pc ó cargadores de celulares ej.) porque meten mucho ruido al circuito por los armonicos que tienen esas fuentes, es mejor probar con fuentes lineales o pilas comunes, al programa yo le declararia los tris y las hubicaciones de los puertos.


#include <16F628A.h>
#fuses INTRC_IO,NOWDT,NOPUT,NOPROTECT,NOCPD
#use delay(internal=4000000, PLENN)
#define botao PIN_A1
#define LED PIN_B3
#byte porta=5  //digo en que parte del mapa de memoria se encuentra los puertos a y b
#byte portb=6

void main() {
setup_oscillator(OSC_4MHZ);
output_low(LED);
set_tris_a(0x02);
set_tris_b(0x04);
while(TRUE)
{
if (input(botao) == 0)
{
output_high(LED);
}

}
}

hay aveces cuando no haces esas declaraciones que el micro te puede hacer cualquier cosa
espero poder ayudarte con eso
Korpaz.
Técnico Electronico.

El Papel Es Mi Mejor Psicologo

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: led + button
« Respuesta #9 en: 14 de Septiembre de 2010, 14:53:03 »
El pic esta ejecutando?? Hace un programita que haga titilar el led para corroborar.
Si no funciona proba con esta configuracion de fuses:
#fuses NOWDT,INTRC_IO, PUT, NOPROTECT, NOMCLR, NOLVP, NOCPD
#use delay(clock=4000000)

De paso hago una preguntita: para q sirve poner PLENN en esta linea?
#use delay(internal=4000000, PLENN)

saludos!!

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: led + button
« Respuesta #10 en: 14 de Septiembre de 2010, 20:26:40 »
De paso hago una preguntita: para q sirve poner PLENN en esta linea?
#use delay(internal=4000000, PLENN)

Ya somos dos!  :)

Hola nina, si estás usndo estos fuses como lo indica tu código:
Código: [Seleccionar]
#fuses INTRC_IO,NOWDT,NOPUT,NOPROTECT,NOCPD
Entonces quiere decir que tienes el pin MCLR activo (pin 4). En ese caso debes tener una resistencia conectada a +5V en el pin 4 (MCLR) o si no se te va a estar reseteando todo el tiempo.
Te recomiendo un código con encabezados más completos para que te evites confusiones:

Código: [Seleccionar]
#include <16F628A.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC                    //Internal RC Osc
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES MCLR                     //Master Clear pin enabled
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection

#use delay(clock=4000000)

#define botao PIN_A1
#define LED   PIN_B3

void main()
{

   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_ccp1(CCP_OFF);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);

   output_low(LED);
   while(TRUE)
   {
      if (input(botao) == 0)
      {
         output_high(LED);
      }
   }
}

Saludos!

Desconectado nina

  • PIC10
  • *
  • Mensajes: 29
Re: led + button
« Respuesta #11 en: 14 de Septiembre de 2010, 23:11:10 »
primeiramente gostaria de agradecer a todos pela ajuda.

o problema fue neste ponto:

"Entonces quiere decir que tienes el pin MCLR activo (pin 4). En ese caso debes tener una resistencia conectada a +5V en el pin 4 (MCLR) o si no se te va a estar reseteando todo el tiempo."


o resto do programa continuou o mesmo:

#include <16F628A.h>
#fuses INTRC_IO,NOWDT,NOPUT,NOPROTECT,NOCPD
#use delay(internal=4000000)


#define botao     PIN_A1
#define LED       PIN_B3



void main() {
output_low(LED);
   while(TRUE)
     {
         if (input(botao) == 0)
         {
            output_high(LED);
         }

     }
}


muchas gracias

nina

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: led + button
« Respuesta #12 en: 15 de Septiembre de 2010, 22:17:56 »
Hola de nuevo nina, ya hiciste la prueba en el protoboard?  Con que hiciste la programación?  Acabo de ver este programa y me parece que alli tienes (tenemos) el mismo error, por lo que me parece que la sugerencia que te hace gera es la correcta:

... Si no funciona proba con esta configuracion de fuses:
#fuses NOWDT,INTRC_IO, PUT, NOPROTECT, NOMCLR, NOLVP, NOCPD
#use delay(clock=4000000)

Saludos!