Autor Tema: PIC18F67J50 con bootloader (no funciona un programa sencillo)  (Leído 4993 veces)

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

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:PIC18F67J50 con bootloader (no funciona un programa sencillo)
« Respuesta #15 en: 05 de Enero de 2020, 22:11:43 »
Creo que esto resolveria toda duda:

Citar
Unlike previous PIC18 microcontrollers, devices of the PIC18F87J50 family do not use persistent memory registers to store configuration information. The configuration bytes are implemented as volatile memory, which means that configuration data must be programmed each time the device is powered up

En resumen el programa SI afecta en ese PIC los bits de configuracion.

Lo raro es que acabo de realizar un programa en el MPLAB con este PIC y no genera codigo para eso.... Que es lo raro... Y contradice lo que dice el datasheet.

Corrijo la declaracion de antes:

Al ser volatil, se guarda en las posiciones mas altas de memoria del PIC; por ejemplo el PIC18F67J50 tiene una memoria hasta 1FFFF , desde 1FFF8 hasta 1FFFF se reserva para los bits de configuracion, luego solo el micro lo carga.

Esto el bootloader deberia tenerlo en cuenta, si no lo hace podria borrar y cambiar los bits de configuracion. En resumen depende del bootloader.. Cambiar en ejecucion no veo que se pueda, pero de todas formas deberia ser omitido por el bootloader.
« Última modificación: 05 de Enero de 2020, 23:18:14 por KILLERJC »

Desconectado uZYNQ

  • PIC16
  • ***
  • Mensajes: 123
Re:PIC18F67J50 con bootloader (no funciona un programa sencillo)
« Respuesta #16 en: 05 de Enero de 2020, 23:21:46 »
Citar
Por ello, un bootloader por mucho que quiera no va a poner grabar nada en el config byte
El USB HID bootloader de microchip y muchos otros tienen esa opción de permitir la programación de los bits de configuración, Tal como se muestra en la imagen. Y revisando un poco el codigo fuente del firmware puedes ver la función que permite realizar la programación, utilizando los registros para el acceso a la flash.
Código: [Seleccionar]
void WriteConfigBits(void)  //Also used to write the Device ID
{
    static unsigned char i;

    #ifdef __XC8__
        TBLPTRU = 0x30;
        TBLPTRH = (uint8_t)((uint16_t)PacketFromPC.Address >> 8);
        TBLPTRH = (uint8_t)(PacketFromPC.Address);
    #else
        TBLPTR = (uint24_t)PacketFromPC.Address;
    #endif

    for(i = 0; i < PacketFromPC.Size; i++)
    {
        TABLAT = PacketFromPC.Data[i+(REQUEST_DATA_BLOCK_SIZE-PacketFromPC.Size)];
        #ifdef __XC8__
            #asm
                tblwt
            #endasm
        #else //must be C18 instead
            _asm tblwt _endasm
        #endif

        EECON1 = 0b11000100;    //Config bits programming mode
        UnlockAndActivate(CORRECT_UNLOCK_KEY);

        #ifdef __XC8__
            #asm
                tblrdpostinc
            #endasm
        #else //must be C18 instead
            _asm tblrdpostinc _endasm
        #endif
    }
}

Citar
Para cambiarlo va a necesitar si o si un pickit.
Ahora que el bootloader no esta operativo, si va a necesitar un programador para volver a grabarlo.

Citar
Esto lo digo desconociendo si en ese micro es escribible el config byte en tiempo de ejecución.
No solamente ese micro, esto se puede hacer en todos aquellos que permitan su autoprogramación. " Self-Programmable under Software Control".

Desconectado jcastillo227

  • PIC10
  • *
  • Mensajes: 12
Re:PIC18F67J50 con bootloader (no funciona un programa sencillo)
« Respuesta #17 en: 06 de Enero de 2020, 20:00:25 »
Muchas gracias, entonces pudiera ser por los bits de configuración que no se me cargará el programa? Que valores serian los adecuados cuando lo reprogramar copiando el código c que habéis puesto al respecto? Lo de los bits de configuración creo que fue lo primero que hice al generar el proyecto siguiendo un tutorial de youtube

Desconectado uZYNQ

  • PIC16
  • ***
  • Mensajes: 123
Re:PIC18F67J50 con bootloader (no funciona un programa sencillo)
« Respuesta #18 en: 06 de Enero de 2020, 20:25:42 »
Yo te recomiendo que despues de grabar nuevamente el bootloader con el programador!, no selecciones de nuevo la opción  "allow configuration word programming" cuando uses el bootloader. De esta manera tu programa trabaja con los bits de configuración que estan colocados en el bootloader. Si quieres tenerlos en tu programa de aplicación deberias copiar estos mismos desde el codigo fuente de tu bootloader que el fabricante te provee, asi serian los mismos al 100%. ( si presionas la opción "allow configuration word programming" nuevamente por alguna razon, tu bootloader deberia seguir trabajando)


 

anything