Tengo un PIC18F2550 en el que estoy tratando de ejecutar un programa simple de tipo hello world. El código está configurado para encender y apagar un LED con retrasos de 250 ms entre los ciclos. Tengo un cristal de 4Mhz conectado a los pines 9 y 10 con 2 capacitores de 18pF. Cuando conecto mi osciloscopio al pin de salida y enciendo el chip, puedo ver que las señales altas y bajas van de 0 V a 5 V durante aproximadamente 3 a 5 segundos y luego solo líneas planas.
Si apago el chip por un tiempo y lo vuelvo a enchufar, comienza a funcionar nuevamente, pero después de 3-5 segundos volverá a 0.
¿Qué puedo hacer para solucionar este problema?
Actualizar
También debo agregar que después de repetir todo el proceso varias veces (es decir, encender y apagar el dispositivo), eventualmente no encenderá la salida.
Probé varios chips PIC18F2550 con el mismo software y obtuve el mismo efecto, por lo que no es el procesador PIC.
Estoy pensando que esto debe ser un problema de hardware ya que el software se copió de una muestra de trabajo. En caso de que alguien piense que se trata de un problema de software, aquí está el código de MikroC (aunque no creo que este sea el sitio de Stack Exchange correcto para el código fuente):
void main() {
TRISB = 0; //Make all PortB pins output
while(1)
{
PORTB = 0; //Turn off the port
Delay_ms(250);
PORTB = 255; //Turn on the port
Delay_ms(250);
}
}
Aquí un esquema (muy) aproximado del circuito. Tengo el visor conectado al pin 24.
Aquí están las partes que estoy usando
En mi experiencia, dejar flotando accidentalmente el pin _MCLR provoca un comportamiento errático como el tuyo. Asegúrese de que esté conectado a +5 V a través de una resistencia (47 kΩ más o menos), para evitar que el PIC se reinicie aleatoriamente.
Por lo general, establecer puntos de interrupción es la mejor manera de hacerlo, pero esto parece un problema de inicialización/configuración.
Intenta deshabilitar el perro guardián
WDTCON = 0;
¿Configuraste tu oscilador? ¿Qué tal borrar la mayoría de los registros? (TRISx, INTCON, TxCON, UCON, etc.)
while(1){ [code] };
connor lobo