¿Necesita ayuda con la configuración de hardware y software en PIC12F675 para encender un LED?

2

Estoy tratando de obtener una salida de un PIC12F675 , pero no puedo Parece que funciona. Aquí está la configuración de mi hardware que armé:

Y aquí está mi código programado usando un PicKit2:

#include <htc.h>
__CONFIG(FOSC_INTRCIO & WDTE_OFF & CPD_OFF);

void main()
{
    TRISIO = 0b111101;
    GP1 = 1;
    for(;;)
    {
        ;
    }
}

¿Qué me estoy perdiendo aquí?

Cualquier ayuda es apreciada, Gracias!

EDITAR: Código fijo, pero aún no funcional

    TRISIO = 0b111110;
    GP0 = 1;
    for(;;)
    
pregunta Shubham

3 respuestas

3

Si el esquema es correcto, entonces está configurando el pin incorrecto. Debe configurar GP0 en 1 (y modificar TRISIO según corresponda)

EDITAR : está bien, consulte el código a continuación. Se ha confirmado que esto funciona en MPLAB SIM usando HI-Tech v9.81. Intenté comentar un poco para dar una idea de lo que está pasando. Tenga en cuenta que desactivé MCLR en los bits de configuración.
Lo principal fue que el Comparador necesita ser deshabilitado (CMCON, vea comentarios / hoja de datos)
Agregué una rutina intermitente (comentada) en el bucle for para el interés.
Para los pines del puerto GPIO, GPIOx o GPx deberían funcionar bien.

#include <htc.h>

// Define oscillator frequency for delay routines
#define _XTAL_FREQ 4000000 

// Make sure config bits are correct in your version 
//(e.g. v9.61, 9.81, etc) These work in v9.81 but NOT in v9.61 
// Config bits are listed in e.g. Program Files->Hi-Tech->PICC->v9.81->include  
__CONFIG(FOSC_INTRCIO & WDTE_OFF & CPD_OFF & MCLRE_OFF);

void main()
{
GPIO = 0;               // Initialise GPIO to a known state 
ANSEL = 0x00;   // Analog inputs disabled so we can read state of pin  (e.g. in MPSIM, or needing to read-modify-write)
CMCON = 0x07;           // Comparator peripheral turned off 
TRISIO = 0b11111110;    // Set GPIO0 to output  

GPIO0 = 1;              // Note GPIO0 used, not GP0 (see 12F675 include file in directory mentioned above)

for(;;)
{
    /*
    GPIO0 = 1;              // Uncomment to flash GPIO0
    __delay_ms(100);        // Hi-Tech "built in" delay routine - needs _XTAL_FREQ (oscillator frequency) defining 
    GPIO0 = 0;
    __delay_ms(100);
    */
}

}

    
respondido por el Oli Glaser
2

Tienes la entrada de MCLR flotante! Obviamente, esto puede evitar que la parte se ejecute, pero es una mala idea, incluso si está configurada como una entrada de lógica general.

    
respondido por el Olin Lathrop
1

Deberías estar usando:

TRISIO = 0b111110;
GP0 = 1;

Con la declaración de configuración eliminada, su programa original funciona bien en mi hardware, usando una salida diferente para el LED (GP2).

El problema se debe a & CPD_OFF. Con eso eliminado el programa funciona.

    
respondido por el Leon Heller

Lea otras preguntas en las etiquetas