Autor Tema: como configurar pines de entrada en pic16f628a ?  (Leído 11682 veces)

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

Desconectado Halcon_de_Fuego

  • PIC12
  • **
  • Mensajes: 61
como configurar pines de entrada en pic16f628a ?
« en: 26 de Diciembre de 2010, 14:39:03 »
tengo este codigo pero no veo la configuracion de los pines
Código: [Seleccionar]
#include <16f628.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay (clock=4000000)
#include <lcd.c>
#use standard_io(a)

int counter=0;
float rpm;

#int_timer1
void timer1_isr(void)
{
   counter=get_timer0();
   
   if(input(PIN_A2))    /*para motores de 8 cilindros*/
   {
   rpm=counter*4;       /*rpm=counter*2.0*120;*/
   }
 
   
   if(input(PIN_A3))    /*para motores de 6 cilindros*/
   {
   rpm=counter*3;       /*rpm=counter*2.0*120;*/
   }
   
   
   if(input(PIN_A4))  /*para motores de 4 cilindros*/
   {
   rpm=counter*2;     /*rpm=counter*2.0*120;*/
   }

y cuando quiero que la señal entre por A2 o A3 no lo hace pero en A4 si ! no entiendo bien porque

saludos !

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: como configurar pines de entrada en pic16f628a ?
« Respuesta #1 en: 26 de Diciembre de 2010, 14:50:20 »
El compilador CCS utiliza las funciones input() y output() para configurar los pines o los puertos como entradas y salidas respectivamente sin la necesidad de configurar los registros TRISx, en muchas ocasiones esto se vuelve una ventaja, pero en otras se vuelve un problema.

Si deseas realizar la configuracion de manera manual debes utilizar la funcion set_tris_x() donde x es el nombre del puerto.

Busca en la ayuda de ccs, ahí encontraras mas informacion.
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: como configurar pines de entrada en pic16f628a ?
« Respuesta #2 en: 26 de Diciembre de 2010, 14:56:00 »
se me adelantaron jejejjee
tambien no olvides que debes de configurar el pic para que las entradas del puerto A sean entradas digitales, ya que como bien ha dicho bigluis el pic cambiara la configuracion trisa dependiendo del uso de los pines pero no dira el tipo de señal que debe recibir...
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado Halcon_de_Fuego

  • PIC12
  • **
  • Mensajes: 61
Re: como configurar pines de entrada en pic16f628a ?
« Respuesta #3 en: 26 de Diciembre de 2010, 15:20:04 »
gracias no entiendo un pomo ! alguien tiene un ejemplo para poder adaptar ?

muchas gracias por sus respuestas anteriores !

Desconectado Halcon_de_Fuego

  • PIC12
  • **
  • Mensajes: 61
Re: como configurar pines de entrada en pic16f628a ?
« Respuesta #4 en: 26 de Diciembre de 2010, 15:36:52 »
creo que lo configure manualmente pero como ago para preguntar si un pin esta resiviendo señal ??

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: como configurar pines de entrada en pic16f628a ?
« Respuesta #5 en: 26 de Diciembre de 2010, 16:54:43 »
a ver el puerto a puede detectar valores analógicos ,osea valores desde 0voltios asta 5.6 voltios tú lo que pretendes es leer es una pulsacion a un botón ,no? Pues tienes que configurar el pic para que detecte estados lógicos 1 y 0 usa el buscador ya que es un tema muy tocado así sabrás como hacerlo
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado Halcon_de_Fuego

  • PIC12
  • **
  • Mensajes: 61
Re: como configurar pines de entrada en pic16f628a ?
« Respuesta #6 en: 26 de Diciembre de 2010, 17:03:12 »
tengo todo andando solo quiero configurar los pines para tomar 3 señales una en cada momento tal cual esta el codigo , lo que no entiendo es xq no anda o los if estan mal xq por lo que me dicen los configuro mal .

el unico que anda con ese codigo es el a4

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: como configurar pines de entrada en pic16f628a ?
« Respuesta #7 en: 26 de Diciembre de 2010, 17:13:53 »
te lo vuelvo a decir, tus pines leen, el problema es que leen señales analogicas, configura el puerto A con setup_comparator(NC_NC_NC_NC)
asi deshabilitas las entradas analogicas y habilitas las digitales... asi tu sistema de if() te funcionara...
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado Halcon_de_Fuego

  • PIC12
  • **
  • Mensajes: 61
Re: como configurar pines de entrada en pic16f628a ?
« Respuesta #8 en: 26 de Diciembre de 2010, 18:37:43 »
hay otra cosa rara acá porque no funciona eso

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: como configurar pines de entrada en pic16f628a ?
« Respuesta #9 en: 26 de Diciembre de 2010, 18:49:45 »
el codigo de arriba es todo el codigo????...ahi le falta
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: como configurar pines de entrada en pic16f628a ?
« Respuesta #10 en: 26 de Diciembre de 2010, 19:16:56 »
el codigo de arriba es todo el codigo????...ahi le falta
No creo jejeje
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: como configurar pines de entrada en pic16f628a ?
« Respuesta #11 en: 26 de Diciembre de 2010, 19:50:45 »
debes hacer algo así

Código: [Seleccionar]
void main(){
   ...
   setup_adc(NO_ANALOG);
   setup_comparator(NC_NC);
   ...
}
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: como configurar pines de entrada en pic16f628a ?
« Respuesta #12 en: 26 de Diciembre de 2010, 21:02:46 »
Hola Halcon_de_Fuego, al parecer el problema está justamente en la parte de código que no has mostrado.  Si subes el código completo te podemos ayudar entre todos a encontrar el problema más rapidamente.

Saludos!

Desconectado Halcon_de_Fuego

  • PIC12
  • **
  • Mensajes: 61
Re: como configurar pines de entrada en pic16f628a ?
« Respuesta #13 en: 28 de Diciembre de 2010, 19:21:35 »
Hola amigos denmen unos minutos y lo subo

Desconectado Halcon_de_Fuego

  • PIC12
  • **
  • Mensajes: 61
Re: como configurar pines de entrada en pic16f628a ?
« Respuesta #14 en: 28 de Diciembre de 2010, 19:26:15 »
Bueno este es el codigo amigos

Código: [Seleccionar]
#include <16f628.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay (clock=4000000)
#include <lcd.c>
#use standard_io(a)

int counter=0;
float rpm;

#int_timer1
void timer1_isr(void)
{//set_tris_A(11111111);
setup_comparator(NC_NC_NC_NC);


   counter=get_timer0();
   
   if(input(PIN_A2))    /*para motores de 8 cilindros*/
   {
   rpm=counter*4;       /*rpm=counter*2.0*120;*/
   }
 
   
   if(input(PIN_A3))    /*para motores de 6 cilindros*/
   {
   rpm=counter*3;       /*rpm=counter*2.0*120;*/
   }
   
   
   if(input(PIN_A4))  /*para motores de 4 cilindros*/
   {
   rpm=counter*2;     /*rpm=counter*2.0*120;*/
   }
   
   lcd_putc("\f       RPM\n");
   lcd_gotoxy(5,2);   
   
   if(input(PIN_A0))
      printf(lcd_putc,"izq %5.0f",rpm);
   
   if(input(PIN_A1))
      printf(lcd_putc,"der %5.0f",rpm);
   
   if(!input(PIN_A0)&!input(PIN_A1))
      printf(lcd_putc,"\fCONECTAR ENTRADA\n     DE GIRO");

   delay_ms(250);
   set_timer0(0);
   set_timer1(3036);
}

void inicio(void)
{
   int i,j;
   lcd_putc("\f    Tacometro\n     Pirata");
   delay_ms(3000);
   lcd_putc("\f   Laboratorio");
   lcd_gotoxy(1,2);
   lcd_putc("  Electronica A");
   delay_ms(1500);lcd_putc("\f");
   for(j=0;j<4;j++)
   {
      lcd_gotoxy(5,1);
      lcd_putc("CARGANDO");
      for(i=5;i<13;i++)
      {
      lcd_gotoxy(i,2);
      lcd_putc("-");delay_ms(75);
   }
   lcd_putc("\f");
   }
   lcd_putc("\f");
}

void main(void)
{
lcd_init();
inicio();
setup_timer_0(rtcc_ext_l_to_h|rtcc_div_2);
setup_timer_1(t1_internal|t1_div_by_8);
set_timer0(0);
set_timer1(3036);
enable_interrupts(int_timer1);
enable_interrupts(global);
while(true);
}


 

anything