TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: jonathanPIC888 en 12 de Marzo de 2026, 20:23:47

Título: Problema con PIC16F13115 y GPIO que no cambia de estado.
Publicado por: jonathanPIC888 en 12 de Marzo de 2026, 20:23:47
Buenas tardes estimados.

Tengo que migrar un pequeño proyecto al PIC16F13115, del PIC12F1840 que estoy usando actualmente.

El único problema que tengo en toda la migración, es la salida RA5, que no cambia de estado.

El código que estoy utilizando para probar es el siguiente:

Código: [Seleccionar]
#INCLUDE <16F13115.h>

#FUSES WDT                    // Utilizamos el perro guardián.
#FUSES PUT_64MS               // Habilita el power uP timer en 64ms.
#FUSES NOMCLR                 // Utilizamos el pin MCLR como E/S.
#FUSES PROTECT                // Proteje el código del microcontrolador.
#FUSES NOBROWNOUT             // No hay reset por bajo voltaje.     
#FUSES NOCLKOUT               // Utiliza los pines de clk como E/S.           
#FUSES FCMEN                  // Monitor de falla de clock.                 
#FUSES NOWRT                  // No hay protección de registros especiales.
#FUSES STVREN                 // Si la pila se llena, generará un reset.     
#FUSES NODEBUG                // No utilizaremos código de debug.
#FUSES WDT2048                // Utilizamos el perro guardián cada 2 segundos.
#FUSES NOLVP                  // No utilizaremos programación a bajo voltaje.
#FUSES NOBOOTBLOCK            // No deja espacio para el booteo.

#USE delay (Clock = 32000000,restart_wdt) // Reloj = 32Mhz.


//------------------------------------------------
// Inicialización
//------------------------------------------------ 

void Inicializacion(void)
{

   setup_oscillator(OSC_HFINTRC_32MHZ);

   output_a(0x00);
   delay_ms(100);
   setup_wdt(WDT_2S);
}

//------------------------------------------------
// MAIN
//------------------------------------------------

void main()
{

Inicializacion();
setup_adc_ports(NO_ANALOGS);

   while(TRUE) {
      output_high(PIN_A5);
      delay_ms(500);
      output_low(PIN_A5);
      delay_ms(500);
      restart_wdt();
   }

}

Alguien tiene idea donde le puedo estar escapando. Vi la hoja de datos, consulté a la IA, etc. Pero no doy con la tecla.
Creia que era un error del CCS, pero los registros afectados que se ven en el archivo ensamblador, están ok.

Saludos !
Título: Re:Problema con PIC16F13115 y GPIO que no cambia de estado. (SOLUCIONADO)
Publicado por: jonathanPIC888 en 13 de Marzo de 2026, 00:03:51
La solución está en colocar la siguiente línea de configuración:

Código: [Seleccionar]
#FUSES RSTOSC_HFINTRC_32MHZ   // Oscilador interno con PLL a 32Mhz.
#FUSES NOCLKOUT               
#FUSES NOEXTOSC               // No utilizamos el oscilador externo.
Título: Re:Problema con PIC16F13115 y GPIO que no cambia de estado.
Publicado por: dogflu66 en 17 de Marzo de 2026, 17:54:47
Hace tiempo que no programo en CCS, pero si sigues teniendo problemas puedes añadir la siguiente línea y ver que pasa:
setup_oscillator(osc_8mhz | OSC_PLL_ON);
Título: Re:Problema con PIC16F13115 y GPIO que no cambia de estado.
Publicado por: jonathanPIC888 en 21 de Marzo de 2026, 19:30:02
Ahi lo pude solucionar dogflu66, era un problema de fusibles mal configurados. Saludos !