PIC para principiantes que utilizan el Programador PIC Mini USB Compatible con MPLAB

2

Escribí un programa para encender los LED en PORTB. El programador borró, programó, verificó, hasta ahora todo bien. Pero entonces no pasó nada. Sin luces. Mi programador es un Mini USB PIC Programmer compatible con MPLAB.

¿Cuáles son algunas de las cosas que los principiantes se pierden?

Debajo está mi código:

#include <p18f4550.h> 
#pragma config WDT = OFF 
void delay (void) 
{ 
  unsigned int i; 
  for (i = 0; i < 65535 ; i++) ; 
} 

void main (void) 
{ 
  TRISB = 0; 
  while (1) 
  { 
    PORTB = 0; 
    delay (); 
    PORTB = 0xFF; 
    delay (); 
  } 
}
    
pregunta rarque

4 respuestas

5
  • ¿Olvidó configurar los pines LED para que salgan?
    • Cada pin que desee controlar un LED debe configurarse como una salida en su código. Esto implica establecer los bits TRIS para ese pin en '0'.
  • ¿Conectaste el LED hacia atrás?
    • Los LED se encenderán solo cuando el voltaje del ánodo-cátodo sea positivo.
  • ¿Tienes una fuente de reloj?
    • Asegúrese de estar usando una fuente de reloj que esté conectada, o el oscilador RC interno. Sin un reloj, tu programa no se ejecutará.
  • ¿Tiene el LED conectado al pin correcto?
  • ¿Se aplica energía al circuito?
  • ¿Tiene capacitores de derivación para el PIC?
  • ¿Hay un pull-up de resistencia para MCLR?
    • Sin este pull-up, tu chip se mantendrá en reinicio y nunca ejecutará tu programa.

Revisa tu cableado nuevamente. Los errores de cableado y conexión son muy comunes en los circuitos de principiantes.

    
respondido por el W5VO
2

Lo más común es usar pines que se comparten con el ADC. Debe habilitarlos para E / S digital ya que son entradas analógicas de forma predeterminada.

Cita de PIC18F2455 / 2550/4455/4550  hoja de datos :

  

Nota: en un reinicio de encendido, RB4: RB0 son   Configurado como entradas analógicas por defecto.   y se lee como "0"; RB7: RB5 son   Configurado como entradas digitales. Por   Programando el bit de configuración,   PBADEN (CONFIG3H < 1 >), RB4: RB0   también puede configurarse como digital   entradas en POR.

Esa es probablemente la causa del problema. Algunos de los pines PortB del PIC18F4550 se comparten con el ADC.

    
respondido por el Leon Heller
1

"¿Cuáles son algunas de las cosas que los principiantes se pierden?"

  • Primero revise su hardware. Encuentre un archivo blink-a-led.hex que se sepa que funciona y verifique que su hardware funcione. (Tengo algunos en mi sitio web, Google es tu amigo)
  • Ha deshabilitado el watchdog, es un buen comienzo, pero hay algunos ajustes de fusibles más que se necesitan, especialmente el oscilador (XP, HS, interno, etc.).
  • Configure los pines relevantes como pines digitales (verifique los módulos A / D y comparador)
  • Establezca la dirección del pin (TRIS, lo hizo)
  • Evite la maldición de lectura-modificación-escritura (RMW) (escriba el PUERTO completo o use la sombra o use LATx)
respondido por el Wouter van Ooijen
0

Todas estas respuestas tienen problemas potenciales válidos, especialmente el punto de Leon de que los pines analógicos pueden ser complicados y el punto de W5VR acerca de que MCLR no está siendo elevado. Además, dependiendo de su chip, es posible que tenga que escribir en el registro LATB para la salida y leer el registro PORTB para la entrada. Los documentos sobre la diferencia entre LATB y PORTB son dudosos y en el pst he tenido que usar algunas pruebas y errores para que funcionen.

LATB es el seguro de salida del puerto B. Esto contendrá los valores más recientes que escribió en el pestillo. Bajo algunas condiciones (por ejemplo, su pin de salida está muy cargado) el valor real en ese pin puede bajar bastante. Esto puede causar una lectura errónea de PORTB, es decir, devolverá 0 cuando debería devolver 1. Por lo tanto, es más seguro leer LATB porque aún contendrá el valor 'correcto'.

@kellenjb: Debería poder ejecutar el programa sin quitar el cable ICSP, SI utiliza el modo de depuración en MPLAB. De lo contrario, si compila el proyecto como Release, deberá extraer el cable. Es posible que el modo de depuración no sea compatible con el programador de OP; funciona en mi Pickit2.

    
respondido por el Isaac

Lea otras preguntas en las etiquetas