Problemas con el puerto A del 16F628A/627A

(1/2) > >>

demorales13:
Estoy trabajando con el compilador CCS y con el proteus 6.2SP5, pero resulta que no he podido configurar el puerto A del 16F628A como puerto de salida, es decir al colocar en el TRIASA = 0 para configurarlo como salida puedo controlar todos los pines del puerto excepto los pines A4 y A6, mirando el datasheet de este micro el puerto A4 puede ser usado tambien como T0CK1 y como CMP1 entonces puede ser que hay que desactivar estas opciones pero no se como, el pin A6 es tambien un tal CLKOUT pero se supone que si uno usa el oscilador interno del PIC este deberia quedar como un puerto IO sin problemas, pero no lo he podido hacer funcionar,  asi que tal vez no he configurado el oscilador que quiero y no se como hacerlo entonces, lo mas extraño es que el puerto A5 que se supone no es de entrada y salida sino solo de entrada si lo puedo manipular, use para poder configurar los pines las funciones fast_io y la standar_io y tampoco me funciono. Otra pregunta como puedo mirar el configuration word cuando uno esta depurando, ya sea en el MPLAB o en el proteus por que tratando de buscar una explicacion al por que no me funciona intente mirar este registro para ver si si estaba configurado como lo necesitaba y no supe como. Lo ultimo es donde puedo mirar un manual del CCS pero donde si expliquen las funciones y sus parametro es que en el que tengo no explican nada, dicen que hace pero no como usarlo o para que usarlo.


//*******************************CONFIGURACION**************************************//
#include "16f628a.h"               //pic a utilizar          

#use delay (clock=4000000)            //Fosc=4Mhz
#fuses INTRC_IO,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT,NOMCLR,NOPUT,NOCPD
#byte OPTION_REG= 0x81               //Option register*/



////********************************************************************************//


//***************************DECLARACION SUBRUTINAS*********************************//
void setup(void);
void prueba_puertos(void);
////********************************************************************************//



////********************************************************************************//

//0 pin como salida
//1 pin como entrada
void main(void)
{
setup();
prueba_puertos();
}


//**********************************SUBRUTINAS************************************//

void setup(void)
{
OPTION_REG = 0b01000000;         //Registro de opciones
}

void prueba_puertos(void)
{
set_tris_a(0);
for(;
   {
      output_a(0b11111111);
      delay_ms(1000);
      output_a(0b00000000);
      delay_ms(1000);
   }
}

vszener:
Buenas!!!!con respecto al pin A4 decirte que es de colector abierto, necesitas ponerle una resistencia de pull-up, aqui hablan del tema:
http://miarroba.com/foros/ver.php?foroid=6510&temaid=4662315
Y la A6 al configurar como oscilador interno, simplemente la declaras como salida y debe funcionar!, viendo tu codigo veo que simplemente has declarado el fuses del oscilador interno pero e el programa no lo as definido o configurado, para ello deberas usar esta funcion:
setup_oscillator(OSC_4MHZ);
Aqui e este enlace se habla de ellos:
http://miarroba.com/foros/ver.php?foroid=46840&temaid=4782866


Suerte!!!

demorales13:
Gracias vszener,,
Le agregue estas cosas y aun asi el A6 no lo puedo controlar,,, sigo controlando el A5 que se supone solo es de entrada,, simulandolo con el MPLAB los registros si se estan modificando como quiero, es mas el puerto A esta funcionando bien cuando lo pongo en 1 todos cambian excepto el A5, lo que esta bien por que este es solo de entrada,,,, sera que la version con la que estoy trabajando tiene problemas con ese pic?, por que usando el 627 me pasa lo mismo. Ahora el link que me diste para revisar lo del A4 no esta funcionando. Necesito este puerto por que estoy pensando usar este como puerto para un lcd y el B4 para manejar unas interrupciones externas y estuve modificando la libreria LCD y no me funciono, hasta que cai en cuenta del problema del puerto, asi que como veras estoy ya que tiro esto a la basura,,, de todas formas muchas gracias por la ayuda que me puedas brindar...


#include "16f628a.h"               //pic a utilizar          

#use delay (clock=4000000)            //Fosc=4Mhz
#fuses INTRC_IO,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT,NOMCLR,NOPUT,NOCPD
#byte CMCON = 0x1F
#use standard_io(A)

void setup(void);
void prueba_puertos(void);

void main(void)
{
setup();
prueba_puertos();
}


void setup(void)
{
setup_oscillator(OSC_4MHZ);
CMCON = 0x07;               //desabilito el comparador
}

void prueba_puertos(void)
{
set_tris_a(0);
for(;
   {
      output_a(0b11111111);
      delay_ms(1000);
      output_a(0b00000000);
      delay_ms(1000);
   }
}

vszener:
Buenas!!!el link sobre el pin A4 si funciona lo acabo de comprobar, de todas formas, el post donde se habla del problema del pin A4 esta en el subforo de:
Todo en microcontroladores pic y alli esta el post que dice Problemas en RA4.
De todas formas para solucionar dicho problema ponle como te dije anteriormente una resistencia de pull-up de 4k7 por ejemplo y ya esta ya funcionara perfectamente.
¿Donde no puedes controlar el pin A6 en PROTEUS o en la vida real?


Suerte!!!

demorales13:
Hola!! lo que quiero decir es que si simulo ese programa en el proteus con el micro 16f627A se supone que el puerto A debe pasar de 11...1 a 0...0 cada segundo pero resulta que el A6 nunca cambia, siempre queda en 0. Lo ultimo que hice fue desactivar el comparador pero nada, aun no puedo con esa cosa. Ahora voy a probar lo del A4 a ver que pasa. gracias.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente