TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: mirazulado en 26 de Julio de 2004, 15:13:00
-
Este es un problemita que no puedo solucionar con las salidas del port A de un 16f628.. No logro que ni RA4, ni RA6 tomen el valor que yo quiero con el siguiente programa:
void main()
{
setup_counters(RTCC_INTERNAL,RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DIV_BY_4,249,1);
setup_ccp1(CCP_PWM);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
output_low(PIN_A0);
output_Low(PIN_A1);
output_Low(PIN_A2);
output_high(PIN_A3);
output_high(PIN_A4);
output_high(PIN_A6);
output_high(PIN_A7);
while(1);
}
#include <16F628.h>
#use delay(clock=4000000)
#fuses NOWDT,INTRC_IO, PUT, NOPROTECT, BROWNOUT, NOMCLR, NOLVP, NOCPD
normalmente uso otros pines como salida y listo pero eso no es la solucion..
Saludos a todos Mariano ..
-
Hola, mira el RA4 es salida Open Colector por lo tanto deberias poner un transistor para que se encargue de manejar lo que pretendes, si miras el DS del 628 te muestra como es internamente.
EL RA6, solo podes usarlo si usas el oscilador interno aunque creo que el problema lo debes teenr con RA5 que es el MCLR o una entrada solamente no es salida, en la pagina 27 del DS empieza la descripcion de cada pin y sus funciones.
saludos
ARIEL
-
El 628 lo usé un par de veces y hace bastante tiempo.
Como te dice Pikman RA4 es salida de colector abierto, debes meter una resistencia pullup (10k por ejemplo) entre este pin y Vcc.
Respecto a RA6 se puede usar como I/O normal o como salida de Osc interno, mira a ver si el fuse INTRC_IO tiene algo que ver (prueba quitándolo).
Revisa bien el DATASHEET.
Un saludo
-
Gracias !! es asi nomas el RA4 es colector abierto y con una resistencia pullup anda bien.. Muchas gracias de nuevo !..
Un abrazo Mariano ..