PICC no deshabilitará WDT en PIC16F876

3

IDE = MPLABx

Toolchain = HiTech PICC Lite

Target = PIC16f876

Burner = PICkit2

Este es uno nuevo para mí. Tengo tres leds conectados al chip, RC0, RC2 y RC3. Los pulsos RC2 se activan al comienzo del programa (nunca más), los pulsos RC3 continuamente a través del bucle infinito y los pulsos RC0 durante la interrupción. El programa funciona correctamente, como en la interrupción se ejecuta y qué no.

Sin embargo, el chip se está reiniciando. He determinado que el temporizador de vigilancia reinicia el chip. He determinado esto cambiando el preescalador de vigilancia y esto se extiende el tiempo antes de que se reinicie el chip. Pensé que la opción __option WDTE_OFF deshabilitaría el WDT, pero este no parece ser el caso.

Tampoco estoy seguro de por qué el WDT se está activando en primer lugar.

¿Alguien ha tenido este problema o puede indicarme la dirección correcta?

Mi código;

#include"pic16f876.h"
#include "pic.h"
#include "htc.h"
#define XTAL_FREQ 20000000
__CONFIG (FOSC_XT, WDTE_OFF, PWRTE_ON, BOREN_OFF,
       LVP_OFF, CPD_OFF, WRT_OFF, DEBUG_OFF);

void setup(void);

int main(void) {
    int counter;
    int timer;
    TRISC=0x00;
    for(counter=0;counter<6000;counter++)
    RC2=1;
    setup();
    T0IF=0;
    di();
    RC2=0;
    for(;;){
       for(counter=0;counter<6000;counter++)
            RC3=0;
       for(counter=0;counter<6000;counter++)
            RC3=1;
    } 
}

void setup(void){
 //turn off all interrupts
    INTCON=0x00;
        //for TRISx, 1=input, 0=output
//setup Timer0 as real time interrupt
T0CS=0; //Timer0 set to internal clock cycle
PSA=0; //assign prescale to Timer0
OPTION_REGbits.PS=0b111; //prescale set to 1:256
T0IE=1; //allow RTI
};

void interrupt int_handler(void)
{
    int int_counter;

    if(T0IF==1){
        GIE=0;
        T0IE=0;
        RC0=1;
        for(int_counter=0;int_counter<30000;int_counter++)
        RC0=1;
        for(int_counter=0;int_counter<30000;int_counter++)
        TMR0=0x00;
        T0IE=0;
       //T0IF=0;
        return;
    }
}
    
pregunta Michael

1 respuesta

2

Los comandos de configuración han cambiado un poco en varias versiones de PICC.
Prueba tu configuración de esta manera:

__CONFIG (FOSC_XT & WDTE_OFF & PWRTE_ON & BOREN_OFF,
   LVP_OFF & CPD_OFF & WRT_OFF & DEBUG_OFF);

Además, no hay necesidad de que estos 3 incluyan:

#include"pic16f876.h"
#include "pic.h"
#include "htc.h"

Solo uno como este:

#include <htc.h>

incluirá las otras 2 (mire en htc.h y pic.h para ver cómo funciona. Deben estar en algo como: C: \ Archivos de programa \ HI-TECH Software \ PICC \ 9.83 \ include) < br> Tenga en cuenta que los paréntesis angulares, que no se incluyen en las citas anteriores, incluyen la ruta de inclusión de herramientas predeterminada, donde se almacenan todos estos archivos.

    
respondido por el Oli Glaser

Lea otras preguntas en las etiquetas