PIC16F877 programa blink se carga correctamente pero no pasa nada. ¿Error de hardware o software?

0

Hice una placa personalizada basada en un PIC16F877 pero por ahora solo soldé el mínimo. Instalé MPLABX y el compilador XC8, conecté el ICD3 a la placa, adapté un ejemplo de "parpadeo" a RD0 donde está mi LED, programé el PIC y ejecuté el programa. No pasó nada.

Desconecté la energía de la placa y apliqué 5V (mi Vcc) a través del R + LED (- a cátodo obviamente), y se encendió ... Así que verifiqué la huella en la hoja de datos, RD0 está realmente ahí y yo tenía pocas dudas, ya que se trata de un componente CAD plug & play de Modelsource.

Entonces, ¿qué pasa? La programación salió bien, aquí está el registro:

(ICD3)

  

Conexión a MPLAB ICD 3 ...

     

Firmware cargado actualmente en ICD 3

     

Versión de Firmware Suite ..... 01.36.10

     

Tipo de firmware .............. Gama media

     

Voltaje objetivo detectado

     

Se encontró el dispositivo de destino PIC16F877.

     

Revisión de ID de dispositivo = 6

     

Se programarán las siguientes áreas de memoria:

     

memoria de programa: dirección inicial = 0x0, dirección final = 0x7ff

     

memoria de configuración

     

Dispositivo borrado ...

     

Programación ...

     

Programación / verificación completa

(salida)

  

CONSTRUYE EXITOSO (tiempo total: 155ms)

     

Cargando código desde   C: / Users / icono ... / MPLABXProjects / test.X / dist / default / production / test.X.production.hex ...

     

Carga completada

     

Conectando al programador ...

     

Destino de programación ...

     

Programación completada

     

Objetivo en ejecución ...

Si la programación fue correcta, eso significa que la frecuencia se configuró correctamente. No estoy seguro de si es un error de software o de hardware, así que aquí está el esquema: ( más grande ) (el puente no está conectado, por lo que TX y RX están desconectados)

Código:

#define _XTAL_FREQ 20000000

#include <xc.h>

// BEGIN CONFIG
#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = ON // Watchdog Timer Enable bit (WDT enabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)
//END CONFIG

int main()
{
  TRISDbits.TRISD0 = 0; //RD0 as Output PIN
  while(1)
  {
    RD0 = 1;  // LED ON
    __delay_ms(1000); // 1 Second Delay
    RD0 = 0;  // LED OFF
    __delay_ms(1000); // 1 Second Delay
  }
  return 0;
}

He intentado depurarlo a través de "Generar para depurar proyecto principal" y "Proyecto principal de depuración", pero dice "[Programación / verificación completa.] El dispositivo de destino no está listo para la depuración. [...]" .. .

    
pregunta user42875

2 respuestas

1

El hecho de que no pueda depurar el proyecto es una buena indicación de que la configuración de su hardware o los bits de configuración son incorrectos. El hecho de que pueda programar el dispositivo no es una indicación de que el micro esté recibiendo una señal de reloj válida. Debido a que los bits de configuración se ven bien, el problema más probable es que no haya señal de reloj.

    
respondido por el Matt
1

1) ¿De qué se trata la conexión del MAX233 a MCLR?

Quitaría R3 y vería qué sucede.

2) Cambie su palabra de configuración para deshabilitar el perro guardián hasta que haya resuelto todo.

    
respondido por el Dwayne Reid

Lea otras preguntas en las etiquetas