Autor Tema: 12F508A ¡GP2 como salida!  (Leído 2563 veces)

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

Desconectado pepiño

  • PIC10
  • *
  • Mensajes: 11
12F508A ¡GP2 como salida!
« en: 01 de Febrero de 2007, 19:58:11 »
hola a todos!!!!
por aki ando con un enanito de estos.... los de 8 patas; un 12f508a, con la simple intención de configurar GP3, GP4 Y GP5 como entradas y GP0, GP1 y GP2 como salidas. El problema viene en que todo funciona bien menos el led que conectado a GP2 no se ilumina cuando debe. O escribo unas lineas de mi programilla aber si vuestros ojos pueden ver lo que yo no doy encontrado:

#include <12C508A.h>
#use delay(clock=4000000)
#fuses NOWDT,NOPROTECT,NOMCLR,INTRC
#use fast_io(B)

void main()
{

set_tris_B (0x38);....... con esto crei tenerlo todo configurado, pero parece ser que no..... He probado el programa

completo con un 16f84 y bien, funciono todo.

Un saludo y gracias por leerme.:mrgreen:

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: 12F508A ¡GP2 como salida!
« Respuesta #1 en: 02 de Febrero de 2007, 02:20:10 »
Comprueba en la data si ese pin es TTL o Schmitt Trigger. No tengo ese datasheet, pero sí la del 12F683 y el GP2 es ST.

En caso que lo sea, puedes utilizar el pin como salida poniéndole una resistencia pull-up.

Desconectado pepiño

  • PIC10
  • *
  • Mensajes: 11
Re: 12F508A ¡GP2 como salida!
« Respuesta #2 en: 02 de Febrero de 2007, 06:55:23 »
hola Nocturno!!! He mirado el datasheet y en efecto GP2 es Schmitt Trigger... como ya comente kiero utilizar GP2 como salida y lo que hice es conectar una resistencia de 10k de positivo al pin correspondiente a GP2 (el 5 del dil) y un led tambien de positivo al pin ( el catodo va al pin 5)....esto no furrula....

Desconectado dhmejia

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 260
Re: 12F508A ¡GP2 como salida!
« Respuesta #3 en: 02 de Febrero de 2007, 09:48:22 »
Aparantemente debería funcionar sin problemas, lo único que se me ocurre es que tengas problemas en el GP2 por ser el pin de entrada del timer, agrega esta línea en el main:

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

Con esto configuras el timer como interno y lo separas del pin GP2.

saludos
Pereira - Colombia

Desconectado pepiño

  • PIC10
  • *
  • Mensajes: 11
Re: 12F508A ¡GP2 como salida!
« Respuesta #4 en: 02 de Febrero de 2007, 12:14:00 »
gracias dhmejia y nocturno.... esto va cañón... un abrazo desde galicia.... nos vemos por los foros...cuando tenga todo probado ya adjuntaré aki el proyecto completo; se trata de un control de un estribo para una furgoneta....

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: 12F508A ¡GP2 como salida!
« Respuesta #5 en: 02 de Febrero de 2007, 13:48:52 »
¿Una furgoneta con estribo?, ¿y lleva también silla de montar, riendas y orejeras?  :D

Desconectado pepiño

  • PIC10
  • *
  • Mensajes: 11
Re: 12F508A ¡GP2 como salida!
« Respuesta #6 en: 05 de Febrero de 2007, 18:01:42 »
jeje!!! la verdad es que no me explico nada bien... se trata de un escalón mecánico colocado en la puerta lateral... estoy diseñando el sistema para un colega... pronto os lo pongo por si puede valeros para algo... a mi sin duda vuestra ayuda me ha resultado muy útil :-/

Desconectado pepiño

  • PIC10
  • *
  • Mensajes: 11
Re: 12F508A ¡GP2 como salida!
« Respuesta #7 en: 06 de Febrero de 2007, 09:50:37 »
Hola amigos!!! y como lo prometido es deuda ahi va mi pequeño proyecto:

Entradas:
--GP2: Pulsador abrir.
--GP3: Pulsador cerrar.
--GP5: Pulsador puerta. Viene implementado en la puerta de la furgo y esta cerrado permanentemente con puerta abierta y viceversa con puerta cerrada.

Salidas:
--GP0: Indicador luminoso; cuando el "estribo" está fuera se ilumina.
--GP1: Salida que hace que el estribo salga.
--GP4: Salida que hace que el estribo entre.

Las particularidades del proyecto son que las salidas que activan el motor del estribo tendrán una duración limitada de 2sg. (prueba y ensayo); y que el escalón solo saldra y entrará con puerta abierta.

#include <12C508A.h>
#use delay(clock=4000000)
#fuses NOWDT,NOPROTECT,NOMCLR,INTRC
#use fast_io(B)

char a;
char e;
char i;
char u;
char j;

void main()
{
a=0;
e=0;
i=0;
u=0;
j=1;

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

set_tris_B (0x2C);
output_low(pin_B0);
output_low(pin_B1);
output_low(pin_B4);

while (1)//for (;;)
{
if (input(pin_B5))
{
if (a==1 && e==0)
{
output_high(pin_B4);
delay_ms(2000);
output_low (pin_B4);
output_low(pin_B0);
e++;
u++;
a=0;
i=0;
}
else
{}
}
else
{
if (input(pin_B2))
{
if (input(pin_B3))
{
}
else
{
if (u==0 && j==0)
output_high(pin_B4);
delay_ms(2000);
output_low (pin_B4);
output_low(pin_B0);
u++;
e=0;
a=0;
i=0;
}
}
else
{
if (i==0)
output_high(pin_B1);
delay_ms(2000);
output_low(pin_B1);
output_high(pin_B0);
j=0;
a=1;
i++;
u=0;
e=0;
}
}

}
}