Problemas al iniciar PIC18F4680

Bueno, finalmente decidí familiarizarme con los PIC y obtuve un PIC18F4680 y un clon de PICkit 2. Hice un circuito simple de hola mundo como se muestra aquí:

esquema de circuito de mierda

Entonces, básicamente, tengo un LED del pin 0 del puerto A, un oscilador de cristal, uno de esos todos en una unidad en una lata (¿lo estoy usando correctamente?), Dos condensadores de 100 nF y el pin MCLR elevado (y conectado al programador cuando lo estoy usando).

En el programador, tengo pines Vpp/MCLR, Vdd, Vss, ICSPDAT/PD, ICSPCLK/PGC y AUX. Después de leer un poco, descubrí que el AUX debe estar conectado al pin PGM en el PIC. Conecté todos los pines del programador conectados a los pines respectivos en el PIC.

Intenté usar el PIC con el oscilador externo a 40 MHz y con el oscilador interno a 1 MHz y no hizo ninguna diferencia en el problema principal. Creo que los osciladores están bien porque puedo ver una salida de 250 kHz en el pin 14 cuando estoy usando el oscilador interno de 1 MHz y alguna lectura extraña cuando estoy usando el oscilador externo de 40 MHz (lo cual es de esperar ya que mi El multímetro puede medir frecuencias de hasta 5 MHz y espero una salida de 10 MHz, según la hoja de datos del microcontrolador).

El problema es que cuando conecto el PIC programado a la corriente, no hace nada por lo que puedo ver. En su lugar, necesito conectarle el PICkit, abrir la aplicación PICkit 2 de Microchip y después de verificar el chip, el LED comienza a parpadear como se supone que debe hacerlo con la frecuencia correcta. Cuando desconecto el PICkit del circuito o de la computadora, el LED parpadeante se detiene.

Esto suena similar a esta publicación reciente electronics.stackexchange.com/questions/27093/… (¿En particular la parte del pin pgm?)
@John Burton Bueno, la principal diferencia es que no recibo la operación intermitente como se ve en esa publicación. Simplemente no funciona. Además, estoy tirando del pin MCLR hacia arriba, por lo que la solución que se ve allí no se aplica.
El punto es que necesita subir el PGM cuando no está programando el chip o puede obtener esto. No tengo forma de saber si este es tu problema, por supuesto.
@John Burton Está bien. Até PGM a Vdd y no ayudó. También (creo) estoy usando programación de alto voltaje, por lo que el pin PGM debería estar disponible como un pin normal. Además, ¿de dónde obtiene la información sobre qué pin debe conectarse dónde? No estoy seguro de dónde podría obtener la información. Por ejemplo, la hoja de datos dice eso While in Low-Voltage ICSP Programming mode, the RB5 pin can no longer be used as a general purpose I/O pin and should be held low during normal operation.y RB5 es PGM aquí.
Acabo de ver varias veces usando fotos que dejar pgm flotando causó este problema y configurarlo en alto aseguró que el chip no piense que está en modo de programación. Fue solo un pensamiento, algo que he visto. Es probable que su problema sea otro, si eso no lo solucionó.

Respuestas (3)

Parece que lo tiene configurado en MPLAB para usar el PICkit como depurador, no como programador. Eso le permitirá trabajar con el PICkit conectado y ejecutando MPLAB, pero no de forma independiente. Asegúrese de que el bit de configuración de depuración esté desactivado y de programar la pieza con el PICkit como programador , no como depurador.

Parece que esa fue la fuente principal del problema.

¿Qué frecuencia es su oscilador externo? No sé si el PIC puede admitir 40 MHz. Normalmente usamos un oscilador de 10 MHz y usamos el PLL interno del PIC para aumentarlo a 40 MHz. Pero verifique que sus ajustes de configuración sean HS para el oscilador.

Además, verifique que el oscilador externo realmente esté produciendo una salida. A menudo, estos dispositivos tienen 4 pines, donde uno es una entrada de habilitación. Tienes que conectar la entrada de habilitación a +5v para que funcione.

El oscilador es de 40 MHz y estoy usando la opción EC. De acuerdo con la hoja de datos, este PIC puede tomar hasta 10 MHz de entrada de oscilador RC y usar PLL en esa o fuente de reloj externa de 40 MHz. También tiene la opción de volver al reloj interno si no hay externo (y he habilitado esa opción). Además, el problema no ocurriría cuando estoy usando un oscilador interno.

Debe agregar una resistencia pull-up de 10kOhm en MCLR (Pin 1)

Lo intenté con 10k pull-up y no ayudó.