Autor Tema: Problema xc8  (Leído 2396 veces)

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

Desconectado jose_lm

  • PIC10
  • *
  • Mensajes: 4
Problema xc8
« en: 01 de Enero de 2021, 19:11:47 »
Buenas tardes y feliz año nuevo! tengo un pequeño problema que quizás a alguno le puede haber pasado.
Tengo un pickit 3 y cuando grabo un programa en ccs compiler, funciona correctamente, ahora cuando grabo por medio de mplab con xc8 los códigos no funcionan, o funciona muy rara vez, asi sea el blink de un led. Pic 16f887
un simple codigo como este no funciona con xc8, pero en ccs si.
Algun comentario al respecto? muchas gracias!!!
 ANSELH=0;//ENTRADA O SALIDA DIG
   
    TRISBbits.TRISB0=0;
    PORTBbits.RB0=0;
    while(1){
        PORTBbits.RB0=1;
        __delay_ms(1000);
        PORTBbits.RB0=0;
        _delay_ms(1000);

    }

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Re:Problema xc8
« Respuesta #1 en: 01 de Enero de 2021, 20:22:04 »
Escrito tal cual en CCS te daría error de compilación salvo que tengas todas las macros declaradas para que CCS reconozca cosas como ANSELH y TRISBbits, etc.. 

  Habría que ver la cabecera que usas en xc8, sobre todo los fuses.
   

Desconectado jose_lm

  • PIC10
  • *
  • Mensajes: 4
Re:Problema xc8
« Respuesta #2 en: 01 de Enero de 2021, 21:56:53 »
Perdón quizás no me exprese bien, el blink del led con el formato para xc8 con mplabx, con sus fusibles y el código que puse anteriormente, en proteus anda bien, pero cuando lo programo por mplabX o el ipe no funciona, probé con distintos los puertos.
Luego hice el blink del led con ccs y funciona bien con el formato que usa ccs, lo mismo me paso con otros codigos, con el xc8 no lo graba o no funciona la ejecución en la realidad, si en proteus. Ahora si llevo la logica a ccs y lo programo desde ese compilador con su estructura y funciona adecuadamente entonces entro en la duda de que puede estar pasando... si es el pickit o el mplab, probe tambien con un 12f629 y paso lo mismo tenia programada una entrada digital y una salida digital, en xc8 con mplab no funciona y en ccs la logica funciona correctamente :/

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Problema xc8
« Respuesta #3 en: 02 de Enero de 2021, 10:04:10 »
Primero.

Que funcione en Proteus no significa que deba funcionar en la placa, Proteus no tiene en cuenta varias cosas.

Segundo.

Decís que puede estar fallando el compilador, entonces debido a que es un programa pequeño, podes subir el .hex generado. Ya que el MPLABX te genera un .hex y luego lo graba en el PIC.

Tercero.

Espero que especificaste correctamente la frecuencia con
 #define _XTAL_FREQ 20000000   

Cuarto

Sino sera un problema del compilador xD, proba crear otro proyecto y no usar el mismo. Pero que funcione el Proteus pero no en placa, y asumir que es un problema de compilador mmmmm generalmente Proteus tiene de malo que: No le importa el cristal que le pongas el esquematico, no tiene en cuenta los FUSES, y el tiempo de simulación es generalmente mucho mas lento que lo real.
« Última modificación: 02 de Enero de 2021, 10:09:01 por KILLERJC »

Desconectado jose_lm

  • PIC10
  • *
  • Mensajes: 4
Re:Problema xc8
« Respuesta #4 en: 02 de Enero de 2021, 20:31:14 »
Este es el codigo en mplab que use para el 16f887

#include <xc.h>
#define _XTAL_FREQ 20000000
// CONFIG1
#pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator: High-speed crystal/resonator on RA6/OSC2/CLKOUT and 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/PGM pin has PGM function, low voltage programming enabled)

// 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)

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



void main(void) {
    ANSELH=0;//ENTRADA O SALIDA DIG
   
    TRISBbits.TRISB0=0;
    PORTBbits.RB0=0;
   
    while(1){
        PORTBbits.RB0=1;
       
        __delay_ms(1000);
       
        PORTBbits.RB0=0;
       
        __delay_ms(1000);
   
    }
   
   return;
}

y este en CCS
#include<16f887.h>

#FUSES HS,NOPROTECT,NOWDT,NOBROWNOUT,NOPUT,NOLVP,MCLR
#USE DELAY(CLOCK=20000000)

void main(){
set_tris_b(0b00000000);
while(true){
  output_high(pin_b0);
  delay_ms(100);
  output_low(pin_b0);
  delay_ms(100);
 }
}

Cuando cargo el .hex por medio de la aplicacion pickit 3(configurando el pickit para ello):
 con MPLABX XC8 no funciona
 con CCS si funciona
Cuando cargo el .hex por medio del IPE de mplab (configurando el pickit para ello):
 con MPLABX XC8 no funciona
 con CCS si funciona

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Problema xc8
« Respuesta #5 en: 03 de Enero de 2021, 12:21:43 »
Como te digo, es raro... porque me decis que en prteus funciona y en la placa no, esto me dice que que el programa en si no es el problema.

Como Proteus no tiene en cuenta los FUSES, entonces buscaria por ese lado.

En los FUSES desactivale todo

#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 MCLRE = ON       // RE3/MCLR pin function select bit (RE3/MCLR pin function is MCLR)


Todo en OFF, es lo unico que me queda, ya que todo estas grabando ambos .hex con el mismo programador, por lo tanto el programador no deberia ser el problema.

MCLR tambien...

Desconectado jose_lm

  • PIC10
  • *
  • Mensajes: 4
Re:Problema xc8
« Respuesta #6 en: 09 de Enero de 2021, 22:30:22 »
Estimados! puse todos los fusibles q me dijiste en off menos el master clear ya que en el circuito lo tengo activo, y funciona correctamente!!! muchísimas gracias a todos por su pronta respuesta!!! El problema fue solucionado!  ((:-)) ((:-)) ((:-)) ((:-))

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Re:Problema xc8
« Respuesta #7 en: 10 de Enero de 2021, 16:21:25 »
Para mí eso no sería una solución, sino una senda para seguir indagando.

   Te funciona por que lo has puesto todo a OFF pero si sabes que con todo en ON debería funcionar y no lo hace yo seguiría hasta el fondo a ver que pasa. Al menos ve probando a activarlos uno por uno para ver cuál es el que te impide el arranque, por que puede pasar que por ejemplo sea BOREN y estés enmascarando un voltaje inadecuado de alimentación en la placa que luego te llevará a otros problemas más insufribles conforme avances en el proyecto.

  Es un consejo. Yo no me conformaría con esa solución por que por si sola no lo es.