PIC simple LED ON no funciona

0

He estado intentando realmente conseguir un PIC para encender un LED, sé que es muy simple, pero por alguna razón no puedo entenderlo, ¡no está ENCENDIDO!

Estoy usando un PIC16F877 antiguo, estoy 100% seguro de que funciona porque mi programador puede leerlo y escribirle. Estoy conectando mi Arduino 5v y GND para alimentar mi circuito. Estoy seguro de que no tiene nada que ver con eso, pero bueno, nunca se sabe.

De todos modos, doblo y triplicé la comprobación del cableado y me aseguré de que MCLR esté conectado a 5 V, estoy conectando:

PIN 11 Vdd a + 5v

PIN 12 Vss a GND

PIN 13 CLKIN a un circuito RC simple

simular este circuito : esquema creado usando CircuitLab

Pin 37 (RB4) conectado al LED.

El siguiente es mi código en C:

// CONFIG1
#pragma config FOSC = EXTRC_NOCLKOUT// Oscillator Selection bits (RCIO oscillator: I/O function on RA6/OSC2/CLKOUT pin, RC on RA7/OSC1/CLKIN)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled and can be enabled by SWDTEN bit of the WDTCON register)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = ON       // RE3/MCLR pin function select bit (RE3/MCLR pin function is MCLR)
#pragma config CP = OFF         // Code Protection bit (Program memory code protection is disabled)
#pragma config CPD = OFF        // Data Code Protection bit (Data memory code protection is disabled)
#pragma config BOREN = ON       // Brown Out Reset Selection bits (BOR enabled)
#pragma config IESO = ON        // Internal External Switchover bit (Internal/External Switchover mode is enabled)
#pragma config FCMEN = ON       // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is enabled)
#pragma config LVP = OFF        // Low Voltage Programming Enable bit (RB3 pin has digital I/O, HV on MCLR must be used for programming)

// CONFIG2
#pragma config BOR4V = BOR40V   // Brown-out Reset Selection bit (Brown-out Reset set to 4.0V)
#pragma config WRT = OFF        // Flash Program Memory Self Write Enable bits (Write protection off)

#include xc.h

#include stdio.h
#include stdlib.h

#define _XTAL_FREQ 40000;

void main(int argc, char** argv) {

    TRISA = 0xFF;
    TRISB = 0xFF;
    TRISC = 0xFF;

    ANSEL = 0x00;
    ANSELH = 0x00;

    TRISBbits.TRISB4=0;

while(1){

        PORTBbits.RB4=1; //led on
    }
}
    
pregunta KARAM JABER

2 respuestas

2

Los bits de configuración son la clave para PIC cuando configuro BOREN e IESO bit en OFF, funcionó como magia.

Por lo tanto, según la respuesta de varias líneas, el bit BOREN alterna el pin de restablecimiento de salida de color marrón; que es cuando el voltaje es demasiado bajo, las luces se atenúan tanto que fluyen muy pocos amperios de corriente, lo que en mi caso puede ser demasiado tenue para ver incluso en un LED, apagando este bit en particular, siempre se suministrará casi .3 a .5 voltios a cada pin de salida.

Bit IESO, está bien, es un poco complicado, pero intentaré explicarlo, así que si desactiva este bit y su circuito funciona, eso significa que su oscilador externo está funcionando y todo debería estar funcionando bien (especialmente incluyendo una muestra prueba, que estaba haciendo aquí). Sin embargo, si activa este bit y su circuito no funciona, eso significa que su oscilador no está funcionando correctamente y necesita algún ajuste o modificación, ahora si funciona, después de la prueba de muestra, puede activar este bit y ' Tendré su oscilador de fuente primaria funcionando muy bien.

mi resistencia es una resistencia de 47K ohmios y una tapa de 56pF, elijo estos valores porque, en base a la fórmula de oscilación de 1 grado de profundidad, proporciona casi 38mHz, que es alrededor de lo que puedo trabajar en mi PIC16F877. >

Gracias.

    
respondido por el KARAM JABER
0

Necesitará aumentar la impedancia del circuito RC (R1 entre 3K y 100K y ajustar C1 para darle la constante de tiempo correcta).

    
respondido por el John Birckhead

Lea otras preguntas en las etiquetas