Autor Tema: Bootloader USB para PIC18F4550 a full.  (Leído 142299 veces)

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

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3161
    • Automation Media Lab
Re: Bootloader USB para PIC18F4550 a full.
« Respuesta #60 en: 06 de Marzo de 2010, 03:14:18 »

Hay algún bootloader para el pic18f4550/2550 que  programe los bits de configuracion ???





Desconectado LABmouse

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3574
    • Juntos es mejor
Re: Bootloader USB para PIC18F4550 a full.
« Respuesta #61 en: 08 de Marzo de 2010, 09:42:58 »
No creo que lo encuentres. si cambian fusibles, ya deja de trabajar a la frecuencia que necesita el bootloader para comunicación USB.

A no ser que sea por RS232 y autobaudrate.

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3161
    • Automation Media Lab
Re: Bootloader USB para PIC18F4550 a full.
« Respuesta #62 en: 08 de Marzo de 2010, 14:04:07 »
>_<

Entonces si quiero cambiar el pin del PWM , o el BOR y algunos FUSES de esos , toca compilar el bootloader >_<.????


Desconectado LABmouse

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3574
    • Juntos es mejor
Re: Bootloader USB para PIC18F4550 a full.
« Respuesta #63 en: 08 de Marzo de 2010, 14:09:45 »
No le intente, pero si es ese fusible del BOR y no tocas el oscilador, deberia funcionar.

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3161
    • Automation Media Lab
Re: Bootloader USB para PIC18F4550 a full.
« Respuesta #64 en: 08 de Marzo de 2010, 14:45:37 »


Gracias!!


Desconectado thegame

  • PIC18
  • ****
  • Mensajes: 357
    • Mcu Tronics
Re: Bootloader USB para PIC18F4550 a full.
« Respuesta #65 en: 26 de Marzo de 2010, 12:56:54 »
Que tal, solo una pregunta, alguien a probado este bootloader en Windows 7??? y si es asi, Funciona????
Nunca se deja de aprender

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3161
    • Automation Media Lab
Re: Bootloader USB para PIC18F4550 a full.
« Respuesta #66 en: 27 de Marzo de 2010, 02:20:09 »
En que carpeta se encuentra el archivo donde se le cambian LOS FUSES?????

No lo encuentro en el boot.

Abri todas y no veo los PRAGMAS ni esas cosas para cambiar la Division del oscilador y esas cosas
--------------------------------------------------------------------------------------------------

Ya me fije en la carpeta boot y abri todos los archivos pero no veo ningun PRAGMA >__<

Ni alguna linea donde vea los bits de configuracion >_<



Gracias!!
« Última modificación: 27 de Marzo de 2010, 02:31:22 por AKENAFAB »

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3161
    • Automation Media Lab
Re: Bootloader USB para PIC18F4550 a full.
« Respuesta #67 en: 27 de Marzo de 2010, 05:24:52 »
Ya lo he resuelto

Encontre unos archivos donde si aparecian los bits de configuracion y ahi modifique el Cristal, los CCP2 , el PUT , desactive los pines analogos ,cambie el pin , etc...

No me sirvio el driver posteado aqui, por lo menos el que instala la herramienta del boot , me baje uno más nuevo , supongo no soporta los 64bits.

Baje el pic32_solution de microchip , el cual incluye el MCHPFUSB y varias herramientas , ese driver no me da problemas y me lo reconocio la pc a la primera. Windows vista 64 home premium.

Usnado el bootloader de Microchio ^^ exito! :P :D

http://ww1.microchip.com/downloads/en/devicedoc/MCHP_App_%20Lib%20v2010_02_09_Installer.zip
« Última modificación: 27 de Marzo de 2010, 16:57:08 por AKENAFAB »

Desconectado LABmouse

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3574
    • Juntos es mejor
Re: Bootloader USB para PIC18F4550 a full.
« Respuesta #68 en: 27 de Marzo de 2010, 11:17:55 »
AKENAFAB ,
Gracias por este reporte de actividad del bootloader en 64 bits.. Tengo en mano un PIC18F46J50 para ver como va el bootloader en el. YA les comentare.

SALUDOS!

Desconectado gbaldrich

  • PIC10
  • *
  • Mensajes: 2
Problema para cargar el programa residente en un Boot 4550
« Respuesta #69 en: 30 de Marzo de 2010, 21:01:25 »
Amigos del foro se me presenta el siguiente inconveniente.

Estoy intentando crear un Bootloader para una aplicacion de mi tesis, hasta el momento he logrado que lo detecte cargar el bootloader, conmutar Boot/Ejecucion con el picdemusb.hex de microchip.

Pero ahora quiero cargar mi propio programa he escrito varios pero todos escriben en el espacio de memoria del bootloader, decidi entonces compilar el proyecto "Demo" y carge el hex desde PDFUSB y me funciono correctamente.

Mi intension es ahora modificar el programa del proyecto "Demo" para hacer mi aplicacion pero no se que uitar y que dejar me podrian ayudar?...
 se los agradeceria....

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3161
    • Automation Media Lab
Re: Bootloader USB para PIC18F4550 a full.
« Respuesta #70 en: 30 de Marzo de 2010, 23:46:03 »
estas trabajando en c18 o en CCS ???

Porque de c18 :/ no he visto los ejemplos y en CCS C esta en este mismo hilo como proteger el bootloader de sobreescritura


Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6743
    • Micros-Designs
Re: Bootloader USB para PIC18F4550 a full.
« Respuesta #71 en: 31 de Marzo de 2010, 00:27:04 »
Como se hace en CCS en C18 hay que remapear los vectores:

Código: [Seleccionar]
/****** Remapped Vectors ********************
    *   _____________________
    *   |       RESET       |   0x000000
    *   |      LOW_INT      |   0x000008
    *   |      HIGH_INT     |   0x000018
    *   |       TRAP        |   0x000028
    *   |     Bootloader    |   0x00002E
    *   .                   .
    *   .                   .
    *   |     USER_RESET    |   0x000800
    *   |    USER_LOW_INT   |   0x000808
    *   |    USER_HIGH_INT  |   0x000818
    *   |      USER_TRAP    |   0x000828
    *   |                   |
    *   |   Program Memory  |
    *   .                   .
    *   |___________________|   0x0005FFF / 0x0007FFF
    */

Viendo unos de los ejemplos que utilizan bootloader, esta es la forma de re-mapearlos:

Código: C
  1. //On PIC18 devices, addresses 0x00, 0x08, and 0x18 are used for
  2.         //the reset, high priority interrupt, and low priority interrupt
  3.         //vectors.  However, the current Microchip USB bootloader
  4.         //examples are intended to occupy addresses 0x00-0x7FF or
  5.         //0x00-0xFFF depending on which bootloader is used.  Therefore,
  6.         //the bootloader code remaps these vectors to new locations
  7.         //as indicated below.  This remapping is only necessary if you
  8.         //wish to program the hex file generated from this project with
  9.         //the USB bootloader.  If no bootloader is used, edit the
  10.         //usb_config.h file and comment out the following defines:
  11.         //#define PROGRAMMABLE_WITH_USB_HID_BOOTLOADER
  12.         //#define PROGRAMMABLE_WITH_USB_LEGACY_CUSTOM_CLASS_BOOTLOADER
  13.        
  14.         #if defined(PROGRAMMABLE_WITH_USB_HID_BOOTLOADER)
  15.                 #define REMAPPED_RESET_VECTOR_ADDRESS                   0x1000
  16.                 #define REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS  0x1008
  17.                 #define REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS   0x1018
  18.         #elif defined(PROGRAMMABLE_WITH_USB_MCHPUSB_BOOTLOADER)
  19.                 #define REMAPPED_RESET_VECTOR_ADDRESS                   0x800
  20.                 #define REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS  0x808
  21.                 #define REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS   0x818
  22.         #else  
  23.                 #define REMAPPED_RESET_VECTOR_ADDRESS                   0x00
  24.                 #define REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS  0x08
  25.                 #define REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS   0x18
  26.         #endif
  27.        
  28.         #if defined(PROGRAMMABLE_WITH_USB_HID_BOOTLOADER)||defined(PROGRAMMABLE_WITH_USB_MCHPUSB_BOOTLOADER)
  29.         extern void _startup (void);        // See c018i.c in your C18 compiler dir
  30.         #pragma code REMAPPED_RESET_VECTOR = REMAPPED_RESET_VECTOR_ADDRESS
  31.         void _reset (void)
  32.         {
  33.             _asm goto _startup _endasm
  34.         }
  35.         #endif
  36.         #pragma code REMAPPED_HIGH_INTERRUPT_VECTOR = REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS
  37.         void Remapped_High_ISR (void)
  38.         {
  39.              _asm goto YourHighPriorityISRCode _endasm
  40.         }
  41.         #pragma code REMAPPED_LOW_INTERRUPT_VECTOR = REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS
  42.         void Remapped_Low_ISR (void)
  43.         {
  44.              _asm goto YourLowPriorityISRCode _endasm
  45.         }
  46.        
  47.         #if defined(PROGRAMMABLE_WITH_USB_HID_BOOTLOADER)||defined(PROGRAMMABLE_WITH_USB_MCHPUSB_BOOTLOADER)
  48.         //Note: If this project is built while one of the bootloaders has
  49.         //been defined, but then the output hex file is not programmed with
  50.         //the bootloader, addresses 0x08 and 0x18 would end up programmed with 0xFFFF.
  51.         //As a result, if an actual interrupt was enabled and occured, the PC would jump
  52.         //to 0x08 (or 0x18) and would begin executing "0xFFFF" (unprogrammed space).  This
  53.         //executes as nop instructions, but the PC would eventually reach the REMAPPED_RESET_VECTOR_ADDRESS
  54.         //(0x1000 or 0x800, depending upon bootloader), and would execute the "goto _startup".  This
  55.         //would effective reset the application.
  56.        
  57.         //To fix this situation, we should always deliberately place a
  58.         //"goto REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS" at address 0x08, and a
  59.         //"goto REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS" at address 0x18.  When the output
  60.         //hex file of this project is programmed with the bootloader, these sections do not
  61.         //get bootloaded (as they overlap the bootloader space).  If the output hex file is not
  62.         //programmed using the bootloader, then the below goto instructions do get programmed,
  63.         //and the hex file still works like normal.  The below section is only required to fix this
  64.         //scenario.
  65.         #pragma code HIGH_INTERRUPT_VECTOR = 0x08
  66.         void High_ISR (void)
  67.         {
  68.              _asm goto REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS _endasm
  69.         }
  70.         #pragma code LOW_INTERRUPT_VECTOR = 0x18
  71.         void Low_ISR (void)
  72.         {
  73.              _asm goto REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS _endasm
  74.         }
  75.         #endif  //end of "#if defined(PROGRAMMABLE_WITH_USB_HID_BOOTLOADER)||defined(PROGRAMMABLE_WITH_USB_LEGACY_CUSTOM_CLASS_BOOTLOADER)"
  76.  
  77.         #pragma code
  78.        
  79.        
  80.         //These are your actual interrupt handling routines.
  81.         #pragma interrupt YourHighPriorityISRCode
  82.         void YourHighPriorityISRCode()
  83.         {
  84.                 //Check which interrupt flag caused the interrupt.
  85.                 //Service the interrupt
  86.                 //Clear the interrupt flag
  87.                 //Etc.
  88.        
  89.         }       //This return will be a "retfie fast", since this is in a #pragma interrupt section
  90.         #pragma interruptlow YourLowPriorityISRCode
  91.         void YourLowPriorityISRCode()
  92.         {
  93.                 //Check which interrupt flag caused the interrupt.
  94.                 //Service the interrupt
  95.                 //Clear the interrupt flag
  96.                 //Etc.
  97.        
  98.         }       //This return will be a "retfie", since this is in a #pragma interruptlow section


Saludos!

No contesto mensajes privados, las consultas en el foro

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3161
    • Automation Media Lab
Re: Bootloader USB para PIC18F4550 a full.
« Respuesta #72 en: 31 de Marzo de 2010, 01:19:09 »
Suky

El código de usuario va hasta el final??
Después del la última llave o corchete??

Lo demás me queda claro


Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6743
    • Micros-Designs
Re: Bootloader USB para PIC18F4550 a full.
« Respuesta #73 en: 31 de Marzo de 2010, 08:06:13 »
Suky

El código de usuario va hasta el final??
Después del la última llave o corchete??

Lo demás me queda claro



El código de usuario va después del última llave:

Código: [Seleccionar]
#pragma code
void main(void)
{  
No contesto mensajes privados, las consultas en el foro

Desconectado campech

  • PIC10
  • *
  • Mensajes: 13
Re: Bootloader USB para PIC18F4550 a full.
« Respuesta #74 en: 31 de Marzo de 2010, 12:06:01 »
Hola a todos:

Hace un tiempo publique en este hilo un problema que se me presento al pasar de la version 4.084 a la 4.104 de CCS y despues al tratar de descargar el codigo hex con el bootloader por usb mchpdfusb de microchip.

Ahora estoy usando la apilcacion de usb bootloader tambien de microchip pero HID v2.6a, y ya tengo la version 4.105 de CCS, pero una vez más al compilar un programa de prueba muy sencillo con ambas versiones, ohhhhhh sorpresa ¡¡¡ sigo sin poder programar el pic con el archivo compilado con la version 4.105. Simplemente al darle un reset para ejecute el codigo descargado el PIC se queda muerto.

A continuacion pongo el codigo del programa de prueba y mas abajo las imagenes capturadas al momento de realizar la descarga del hex hacia el pic18f4550

Código: [Seleccionar]
//-------------------------------------------------------------------------------
#include "18f4550.h"
#fuses HSPLL,NOWDT,NOBROWNOUT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,MCLR,NOPBADEN,WRTB,CPB

#use delay(clock=48000000)

#build(reset=0x1000,interrupt=0x1008)
#org 0x0000,0x0FFF {}

//-------------------------------------------------------------------------------

#define LED PIN_B1

void main(void)
{
set_tris_b(0b11111101);

   do{
output_toggle(LED);
delay_ms(500);
        }while(true);
}

//-------------------------------------------------------------------------------

Programa compilado con la version 4.084 CCS


Programa compilado con la version 4.105 CCS


Como podran darse cuenta en la segunda imagen no aparecen los mensajes de "Erase complete" ni "Programming started", pero lo mas extraño es que si aparece  el mensaje de que el pic fue borrado, programado y verificado correctamente.
 
Espero que alguien pueda decirme si ha tenido alguna experiencia parecida y si pudo resolver el problema.
Saludos y gracias por atencion. :)


 

anything