Autor Tema: Problema al depurar PIC12F1572 y XC8  (Leído 1719 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado glomunmul

  • PIC10
  • *
  • Mensajes: 9
Problema al depurar PIC12F1572 y XC8
« en: 23 de Enero de 2019, 13:17:28 »
Hola! Buenas a todos!

Estoy empezando a utilizar el XC8 y estoy probando el funcionamiento del ADC y de las salidas. Al compilar y cargar el programa en la placa, el funcionamiento es el correcto, pero cuando entro en el modo debug para depurarlo, no funciona correctamente. Esto lo sé porque estoy utilizando un osciloscopio para comprobar que la salida se activa y desactiva.

El código es el siguiente:

// PIC12F1572 Configuration Bit Settings

// 'C' source line config statements

// CONFIG1
#pragma config FOSC = INTOSC    //  (INTOSC oscillator; I/O function on CLKIN pin)
#pragma config WDTE = OFF       // Watchdog Timer Enable (WDT disabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable (PWRT disabled)
#pragma config MCLRE = ON       // MCLR Pin Function Select (MCLR/VPP pin function is MCLR)
#pragma config CP = OFF         // Flash Program Memory Code Protection (Program memory code protection is disabled)
#pragma config BOREN = OFF      // Brown-out Reset Enable (Brown-out Reset disabled)
#pragma config CLKOUTEN = OFF   // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)

// CONFIG2
#pragma config WRT = OFF        // Flash Memory Self-Write Protection (Write protection off)
#pragma config PLLEN = ON       // PLL Enable (4x PLL enabled)
#pragma config STVREN = OFF     // Stack Overflow/Underflow Reset Enable (Stack Overflow or Underflow will not cause a Reset)
#pragma config BORV = LO        // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config LPBOREN = OFF    // Low Power Brown-out Reset enable bit (LPBOR is disabled)
#pragma config LVP = OFF        // Low-Voltage Programming Enable (High-voltage on MCLR/VPP must be used for programming)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

#include <xc.h>
//#include "pic12f1572.h"

#define _XTAL_FREQ 32000000

#define COMPRESOR LATAbits.LATA4
#define PWM LATAbits.LATA1

void Configuracion (void);

unsigned int Flag=0;                //

void main(void)

    Configuracion();
   
    while(1)
    {
            if(Flag==0)
            {
                Flag=1;
                ADCON0bits.ADON=1;
                PWM=1;
                ADCON0bits.GO=1;                       
            }       
            if(Flag==1)
            {
               
                if(ADCON0bits.ADGO==0)
                {
                    ADCON0bits.ADON=0;
                    PWM=0;
                    Flag=0;
                   
                }
               
            }
           
         
    }
}


void Configuracion (void)
{
    OSCCON = 0x70;      //32MHz
    OSCTUNE = 0x00;     //Ajustado de fabrica
    TRISA = 0x10;       //Entradas y salidas
    ANSELA = 0x10;      //Entradas analógicas
    ADCON0 = 0x0C;      //Canal 3
    ADCON1 = 0xC0;      //Fosc/4
   
   
    //TIMER
    // Esta parte esta emplementada para el futuro timer que utilizaré
    OPTION_REGbits.nWPUEN=1;
    OPTION_REGbits.INTEDG=1;
    OPTION_REGbits.TMR0CS=0;
    OPTION_REGbits.TMR0SE=1;
    OPTION_REGbits.PSA=0;
    OPTION_REGbits.PS2=1;   //
    OPTION_REGbits.PS1=1;   // 
    OPTION_REGbits.PS0=1;   //
}


Cuando lo compilo soy capaz de ver como la salida se activa y desactiva correctamente, como si fuera un pulso, pero cuando lo depuro la señal permanece a 0 hasta que le pongo un punto de ruptura en cualquier punto del while y siempre está a uno.

Estoy utilizando un micro PIC12F1572 y estoy utilizando MPLAB IDE v 5.00 y el XC8 v 2.05

Agradecería cualquier ayuda porque he probado a crear nuevos proyectos desde 0, consultar en foros, en el datasheet, etc, y ya no se donde puede estar el problema.


 

anything