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:
(
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. [...]" .. .