#define LOADER_END 0x7FF
#define LOADER_SIZE 0x6FF
#build(reset=LOADER_END+1, interrupt=LOADER_END+9)
#org 0, LOADER_END {} // nothing will replace the bootloader memory space
// END OF bootloader definition
#include <18F2550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)
#include <usb_cdc.h>
#define LOADER_END 0x7FF
#define LOADER_SIZE 0x6FF
#build(reset=LOADER_END+1, interrupt=LOADER_END+9)
#org 0, LOADER_END {} // nothing will replace the bootloader memory space
// END OF bootloader definition
void main() {
usb_cdc_init();
usb_init(); //inicializamos el USB
while (!usb_cdc_connected()) {}
while (true)
{
usb_task();
if(usb_enumerated())
{
usb_cdc_putc(0x41);
}
}
}
NOTA: solo una aclaracion, al parecer con el metodo que menciono, no podemos configurar los FUSES, se quedarian como el programa del bootloader lo tiene
hola picmouse, ya logre hacer lo que queremos, hacerlo con ccs ahora,lo unico que tenemos que hacer, es no grabar nada de nuestro programa en las direcciones de la 0x00 hasta la 0x7FF, ya probe varios programas y funcionan que dan miedo.
"Device is data protected! Data memory may be invalid.
Device is code protected! Program memory may be invalid."
y no podemos borrar lo que hay en el pic por medio de la herramienta eraser flash device
no conocen algun lugar en Bogotá donde alguien nos pueda ayudar personalmente.
gracias
AKENAFAB te comento que lo utilize muchisimas veces y nunca tuve un pantallazo azul. Imagino que los pantallazos se deberan a que el driver para el puerto debe tener algun error.
Saludos
hay forma de mover el interuptor de Bot del puerto B al puerto C y que este funcione con CCS???
hay forma de mover el interuptor de Bot del puerto B al puerto C y que este funcione con CCS???
Si, de hecho yo los movi a los pulsadores que tenia en mi placa. Fijate en mis mensajes anteriores.
hay forma de mover el interuptor de Bot del puerto B al puerto C y que este funcione con CCS???
Si, de hecho yo los movi a los pulsadores que tenia en mi placa. Fijate en mis mensajes anteriores.
Por lo que Lei moviste al b2 y b3, pero me gustaria mover el modo Boot al RC3 ya para tener libres los a,b,d y e
Hola, estoy intentando recompilar el código original del bootloader para que se ajuste a las caracteristicas de mi PIC 18f2550 (Clock 12 Mhz, etc..) pero no encuentro los CONFIGURATION BITS a modificar en los archivos originales, ¿alguien sabe en que archivo concreto se encuentran y que forma tienen?
Yo esperaba encontrarme algo del tipo:
#pragma config PLLDIV=5,CPUDIV=OSC1_PLL2,USBDIV=2,FOSC=HSPLL_HS,F CMEN=OFF,IESO=OFF
pero no lo encuentro.
Gracias
#pragma config PLLDIV = 5 // (20 MHz crystal on board)
#pragma config CPUDIV = OSC1_PLL2
#pragma config USBDIV = 2 // Clock source from 96MHz PLL/2
#pragma config FOSC = HSPLL_HS
#pragma config FCMEN = OFF
#pragma config IESO = OFF
#pragma config PWRT = OFF
#pragma config BOR = ON
#pragma config BORV = 3
#pragma config VREGEN = ON //USB Voltage Regulator
#pragma config WDT = OFF
#pragma config WDTPS = 32768
#pragma config MCLRE = ON
#pragma config LPT1OSC = OFF
#pragma config PBADEN = OFF
#pragma config STVREN = ON
#pragma config LVP = OFF
#pragma config XINST = OFF // Extended Instruction Set
#pragma config CP0 = OFF
#pragma config CP1 = OFF
#pragma config CPB = OFF
#pragma config WRT0 = OFF
#pragma config WRT1 = OFF
#pragma config WRTB = OFF // Boot Block Write Protection
#pragma config WRTC = OFF
#pragma config EBTR0 = OFF
#pragma config EBTR1 = OFF
#pragma config EBTRB = OFF
/*********************************************************************
*
* Microchip USB Bootloader Version 1.0
*
*********************************************************************
* FileName: main.c
* Dependencies: See INCLUDES section below
* Processor: PIC18
* Compiler: C18 2.30.01+
* Company: Microchip Technology, Inc.
*
* Software License Agreement
*
* The software supplied herewith by Microchip Technology Incorporated
* (the “Company”) for its PICmicro® Microcontroller is intended and
* supplied to you, the Company’s customer, for use solely and
* exclusively on Microchip PICmicro Microcontroller products. The
* software is owned by the Company and/or its supplier, and is
* protected under applicable copyright laws. All rights are reserved.
* Any use in violation of the foregoing restrictions may subject the
* user to criminal sanctions under applicable laws, as well as to
* civil liability for the breach of the terms and conditions of this
* license.
*
* THIS SOFTWARE IS PROVIDED IN AN “AS IS” CONDITION. NO WARRANTIES,
* WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED
* TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
* PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT,
* IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR
* CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
*
* Author Date Comment
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* Rawin Rojvanit 11/19/04 Original.
********************************************************************/
/** I N C L U D E S **********************************************************/
#include <p18cxxx.h>
#include "system\typedefs.h" // Required
#include "system\usb\usb.h" // Required
#include "io_cfg.h" // Required
#include "system\usb\usb_compile_time_validation.h" // Optional
/** V A R I A B L E S ********************************************************/
#pragma udata
/** P R I V A T E P R O T O T Y P E S ***************************************/
/** V E C T O R R E M A P P I N G *******************************************/
#pragma code _HIGH_INTERRUPT_VECTOR = 0x000008
void _high_ISR (void)
{
_asm goto RM_HIGH_INTERRUPT_VECTOR _endasm
}
#pragma code _LOW_INTERRUPT_VECTOR = 0x000018
void _low_ISR (void)
{
_asm goto RM_LOW_INTERRUPT_VECTOR _endasm
}
#pragma code
/** D E C L A R A T I O N S **************************************************/
#pragma code
/******************************************************************************
* Function: void main(void)
*
* PreCondition: None
*
* Input: None
*
* Output: None
*
* Side Effects: None
*
* Overview: Main program entry point.
*
* Note: None
*****************************************************************************/
void main(void)
{
byte temp;
temp = ADCON1;
ADCON1 |= 0x0F;
//TRISBbits.TRISB4 = 1; // Reset value is already '1'
//Check Bootload Mode Entry Condition
if(PORTBbits.RB4 == 1) // If not pressed, User Mode
{
ADCON1 = temp; // Restore reset value
_asm goto RM_RESET_VECTOR _endasm
}//end if
//Bootload Mode
mInitAllLEDs();
mInitializeUSBDriver(); // See usbdrv.h
USBCheckBusStatus(); // Modified to always enable USB module
while(1)
{
USBDriverService(); // See usbdrv.c
BootService(); // See boot.c
}//end while
}//end main
#pragma code user = RM_RESET_VECTOR
/** EOF main.c ***************************************************************/
/****** 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
*/Suky
El código de usuario va hasta el final??
Después del la última llave o corchete??
Lo demás me queda claro
#pragma code
void main(void)
{
//-------------------------------------------------------------------------------
#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);
}
//-------------------------------------------------------------------------------
0000:
L0000 ANDLW 0x24
SUBWF 1,W
0800:
0804: ANDLW 7
ANDLW 0xF
ANDLW 0x8F
NOP
GOTO L00C0
CALL L000F
ANDLW 7
ANDLW 0xFD
ANDLW 2
ANDLW 0xFA
SLEEP
0800:
0804: ANDLW 6
ANDLW 0xF
ANDLW 0x8F
NOP
GOTO L00C0
CALL L000F
ANDLW 7
ANDLW 0xFD
ANDLW 2
ANDLW 0xFA
SLEEP
#org 0x0000,0x0FFF {}#org 0x0000,0x0FFF void Bootloader(void){}0000 RETLW 00
0002 NOP
0004 NOP
0006 NOP
0008 NOP
000A NOP
.
.
.
.
0FF8 NOP
0FFA NOP
0FFC NOP
0FFE NOP
1000
1002 GOTO 1032
1004 NOP
1006 NOP
1008 CLRF FEA
100A MOVLW 07 <---------------------
100C MOVWF FE9
100E MOVF FEF,W
1010 BZ 102E
1012 MOVLW 0F
1014 MOVWF 01
1016 CLRF 00
1018 DECFSZ 00,F
101A BRA 1018
101C DECFSZ 01,F
101E BRA 1016
1020 MOVLW 8F
1022 MOVWF 00
1024 DECFSZ 00,F
1026 BRA 1024
1028 NOP
102A DECFSZ FEF,F
102C BRA 1012
102E
1030 GOTO 105C
1032 CLRF FF8
1034 BCF FD0.7
1036 CLRF FEA
1038 CLRF FE9
103A MOVF FC1,W
103C ANDLW C0
103E IORLW 0F
1040 MOVWF FC1
1042 MOVLW 07
1044 MOVWF FB4
1046 MOVLW FD
1048 MOVWF F93
104A BCF F93.1
104C BCF F8A.1
104E BCF F93.1
1050 BTG F8A.1
1052 MOVLW 02
1054 MOVWF 06
1056 MOVLW FA
1058 MOVWF 07 <----------------------
105A BRA 1008
105C DECFSZ 06,F <---------------------
105E BRA 1056
1060 BRA 104E
1062 SLEEP
1064 NOP
0000 RETLW 00
0002 NOP
0004 NOP
0006 NOP
0008 NOP
000A NOP
.
.
.
.
0FF8 NOP
0FFA NOP
0FFC NOP
0FFE NOP
1000
1002 GOTO 1032
1004 NOP
1006 NOP
1008 CLRF FEA
100A MOVLW 06 <-----------------------
100C MOVWF FE9
100E MOVF FEF,W
1010 BZ 102E
1012 MOVLW 0F
1014 MOVWF 01
1016 CLRF 00
1018 DECFSZ 00,F
101A BRA 1018
101C DECFSZ 01,F
101E BRA 1016
1020 MOVLW 8F
1022 MOVWF 00
1024 DECFSZ 00,F
1026 BRA 1024
1028 NOP
102A DECFSZ FEF,F
102C BRA 1012
102E
1030 GOTO 105C
1032 CLRF FF8
1034 BCF FD0.7
1036 CLRF FEA
1038 CLRF FE9
103A MOVF FC1,W
103C ANDLW C0
103E IORLW 0F
1040 MOVWF FC1
1042 MOVLW 07
1044 MOVWF FB4
1046 MOVLW FD
1048 MOVWF F93
104A BCF F93.1
104C BCF F8A.1
104E BCF F93.1
1050 BTG F8A.1
1052 MOVLW 02
1054 MOVWF 05
1056 MOVLW FA
1058 MOVWF 06 <-----------------------
105A BRA 1008
105C DECFSZ 05,F <---------------------
105E BRA 1056
1060 BRA 104E
1062 SLEEP
1064 NOP
:020000040000FA
:0410000019EF08F0EC
:08100800EA6A070EE96EEF50E1
:101010000EE00F0E016E006A002EFED7012EFBD7E8
:101020008F0E006E002EFED70000EF2EF2D72EEFAF
:1010300008F0F86AD09EEA6AE96AC150C00B0F094D
:10104000C16E070EB46EFD0E936E93928A929392C8
:101050008A72020E066EFA0E076ED6D7062EFBD7E0
:04106000F6D70300BC
:020000040030CA
:0E000000240E381E008181000F800FA00F001B
:00000001FF
;PIC18F4550
;CRC=3A18 CREATED="31-Mar-10 12:56"
:0410000019EF08F0EC
:08100800EA6A060EE96EEF50E2
:101010000EE00F0E016E006A002EFED7012EFBD7E8
:101020008F0E006E002EFED70000EF2EF2D72EEFAF
:1010300008F0F86AD09EEA6AE96AC150C00B0F094D
:10104000C16E070EB46EFD0E936E93928A929392C8
:101050008A72020E056EFA0E066ED6D7052EFBD7E3
:04106000F6D70300BC
:020000040030CA
:0E00000024CE381E008581000F800FA00F0057
:00000001FF
;PIC18F4550
;CRC=31B7 CREATED="31-Mar-10 13:01"
Buenos dias!!! Hice todos los pasos del primir post!
El pic entre bien en modo bootloader!! pero a la hora de grabar o leer lo q tiene el pic adentro me da error!
Aqui Adjunto la imagen del error!!!
Bájate la ultima versión de las librerías desde Microchip, estas ya tienen soporte Seven.hola podrias indicarme donde bajar esas librerias , me recorri todo , y tal vez por mi escaso ingles , no encontre nada , cuando lo conecto en w7 no reconoce nada , en xp anda bien , un saludo
Bájate la ultima versión de las librerías desde Microchip, estas ya tienen soporte Seven.hola podrias indicarme donde bajar esas librerias , me recorri todo , y tal vez por mi escaso ingles , no encontre nada , cuando lo conecto en w7 no reconoce nada , en xp anda bien , un saludo
Hola, a todos soy nuevo en el foro, y quiseira saber si me pueden ayudar, arme un clon del arduino pero en pic, que se llama pinguino, adjunto informacion.
http://www.hackinglab.org/pinguino/
La pregunta es la siguiente, el proyecto esta muy verde, muy poco desarrollado y sin documentacion, por lo tanto quiero utilizar esa placa y modificar mi propio bootloader, esta placa tiene un solo pulsador, que cuando se lo preciona entra en reset y queda por 5 segundos esperando que se cargue por bootloader el soft, si no se cargo nada, entra en el vector del programa del usuario. El problema es que no se como hacer porque el boton esta en el puerto MCLR y con este mismo boton hace todo.
Estimado Dark cronos, si, ya lo se que es de microchip. Con respecto a los 2 botonos, no es correcto, porque existe una version (dentro de esa pagina) que tiene un solo boton conectado al MCLR con el cual se resetea y entra a esperar que se cargue el bootloader si en 5 seg no se cargo nada, ejecuta el programa que tenga en memoria, quisiera que me ayuden para poder adaptar un bootloader a esta placa, gracias.Hola, a todos soy nuevo en el foro, y quiseira saber si me pueden ayudar, arme un clon del arduino pero en pic, que se llama pinguino, adjunto informacion.
http://www.hackinglab.org/pinguino/
La pregunta es la siguiente, el proyecto esta muy verde, muy poco desarrollado y sin documentacion, por lo tanto quiero utilizar esa placa y modificar mi propio bootloader, esta placa tiene un solo pulsador, que cuando se lo preciona entra en reset y queda por 5 segundos esperando que se cargue por bootloader el soft, si no se cargo nada, entra en el vector del programa del usuario. El problema es que no se como hacer porque el boton esta en el puerto MCLR y con este mismo boton hace todo.
Tendrias que estudiar C18 para poder modificar el bootloader y hacerlo a tu gusto, el clon que hisiste es para la compañia microchip, no es de atmel, y para que funcione devez precionar el boton de MCLR y el que esta en el RB4 al mismo tiempo, sueltas el MCLR dejando precionado el boton de RB4 y entrara en modo boot
Hola LABmouse no se si me podrias explicar la manera en que entras al bootloader y la manera de free corregime si me equivoco
antes de conectar el cable usb debo mantener precionado el boton del bootloader para ingresar un nuevo programa o debo precionar ese boton junto con el de reset y cuando ya tengo el nuevo programa como salgo del bootloader perdona solo que no comprendo muy bien esa parte, y muchisimas gracias por el aporte.
Hola que tal disculpen la molestia ya he armado el circuito he ingresado el bootloader para el pic 18F4550, ahora bien la interfaz HID se comunica bien todo funciona muy bien pero al tengo el inconveniente de grabar un archivo .hex aparentemente lo graba pero al momento de dar reset ya sea en el pic o en el programa ya no funciona el nuevo .hex no ejecuta el programa, aunque el bootloader funciona perfectamente no lo borra y siempre puedo entrar de nuevo al modo bootloader, alguien puede ayudarme. he probado con Windows XP y 7 con ninguno de los dos funciona con los nuevos softwares que he podido encontrar en el foro. este es el circuito que realice.
Hola, una pregunta...
No importa cuanta configuracion haga en los fusibles en el programa que quiero enviar por bootloader, pues ninguna tendra efecto mas que con la que se ha grabado el bootloader al inicio verdad?
holaaa labmouse y a todos los del foro eh armado este circuito le eh instaladoo el bootloader al momento de hacer pruebas con la aplicacion demo me aparece un error que dice
usb read failed
failed with error 997: se esta ejecutando la operacion de e/s superpuesta.
alguien podria ayudarme a corregir este error porfavor de antemano gracias a todos
ya eh logrado resolver mis problemas con el programa de ccs era la version tube que utilizar una mas antigua para que me permitiera trabajar... por otro lado qusiera realizar una aplicacion similar a la pdfsubs alguien pudiera guiarme con eso porfavor =)
gracias y saludos a todos por su ayuda
Buenas!
Ese paquete ya lo descargué. Dentro de este esta la plantilla esta¿?
Hola que tal?
Realice la tarjeta pero cuando lo conecto bajo windows 7 64 bits me dice que no reconoce la tarjeta, "aparato desconocido". Pregunto si han tenido este mismo problema con windows 7 pues el ejemplo que veo esta bajo windows xp y me imagino que los drivers ya no deben funcionar. Que solución han buscado?.
Gracias
Armando Blanco C.
fr4n
Re: Bootloader USB para PIC18F4550 a full.
« Respuesta #99 : 04 de Octubre de 2010, 07:47:57 »
Hola a todos, he conseguido hacer funcionar el bootloader, uso WinXP y el PIC18F4550.
Metí el programa residente (booloader) que se encuentra en C:\MCHPFSUSB\fw\_factory_hex mediante un programador externo.
Éste archivo picdemfsusb.hex ocupa 23KB y con él, el bootloader me funciona perfectamente.
Mi problema es que quiero modificarlo para agregarle mis fuses (#pragma) y modificar el Pin que hace entrar en modo bootloader, quiero que entre a nivel alto en lugar de a nivel bajo como viene por defecto.
Abro el proyecto que contiene el codigo fuente que se encuentra en C:\MCHPFSUSB\fw\Boot y lo modifico a mi gusto, después de compilarlo, el archivo resultante es de solo 6-7KB y al meterlo en mi PIC mediante programador externo también, ya deja de funcionar el modo bootloader, nunca entra en dicho modo. Si lo programo mediante el bootloader, también deja de funcionar. Creo que ese .hex que creo, poco tiene que ver con el bootloader original...
¿Alguien podría ayudarme?
Saludos y gracias a todos.
ya eh logrado resolver mis problemas con el programa de ccs era la version tube que utilizar una mas antigua para que me permitiera trabajar... por otro lado qusiera realizar una aplicacion similar a la pdfsubs alguien pudiera guiarme con eso porfavor =)
gracias y saludos a todos por su ayuda
Se puede usar cualquier versión de CCS, busca en el foro, también está explicado como realizarlo. Y sobre una aplicación pdfsubs, también utiliza el buscador. Hay ejemplos en VB, VC#, VC++, Delphi, ect.....
Saludos!
Bueno primero antes de moficar algo pueba que funcione el orginal, consejo de un conejo.
Yo utilize este bootloader para el pic18f4550 y funciono todo ok, puedes subir fotos y esquema de tu placa donde estas implemtando el boot?
Bueno primero antes de moficar algo pueba que funcione el orginal, consejo de un conejo.
Yo utilize este bootloader para el pic18f4550 y funciono todo ok, puedes subir fotos y esquema de tu placa donde estas implemtando el boot?
trate de compilar el que tu me pasaste y me da el mismo error sera que tengo mal el compilador?? es el mplab c18 descargado directamente de michochip esta instalado en C:\Program Files\Microchip y se me habia olvidado mencionar estoy trabajando en win7
saludos!!
ya pude hacer que el pc me reconosca el pic (tuve que buscar un pc de escritorio con winXP) pero no puedo grabar, este es el error que sale cuando trato de grabar el demo o cualquier otro .hex
el mismo circuito del post original, la unica diferencia es el cambio de pic
- alimentación toda a travez del puerto usb (el terminal 1 del terminal) que llega a los pines 32 y 11
- un led y una resistencia de 1k conectado entre al pin 20 que es el RD1/SPP1 y referencia
- los pines 31 y 12 a referencia
- un pulsador de punto central normalmente conectado a un alto a travez de una resistencia de 10k, en el pin 37 que es el RB4/AN11/KBIO/CSSP
- el pin 1 que es el MCLR/vpp/RE3 lo envio a un alto
- un resonador de 20 Mhz conectado entre los pines 13 y 14. En cada pin va conectado un capacitor de 20 pF que va a referencia
Si por favor pasame todo el material para el hardware y el software (compilador y bootloader) que tengas, a ver si puedo hallar el error
interesante tema, aunque me suena demasiado a PICAXE... :-/
Hola, alguien q pudiera orientarme en la pregunta anterior¿ Solamente q me comente como tengo q ponerlo en asm, saludos.
UFF...
me perdi por completo durante un tiempo y ahora regreso pero veo este tema nuevo y por supuesto de mi interes pero entre tantos linck no se por cual irme ¿cual es el bueno? todos
bueno tengo el ccs 4.134
proteus 7.9
labview 2012
pic 18f4550
y quiero hacer el bootloader con ccs y labview
alguien tiene informacion que me puedan pasar para trabajar con ccs???
Después de renegar un poco ( como siempre ) pude hacer funcionar el bootloader en mi pic 18f4550. Comento los inconvenientes que tuve para que otros se ahorren el mal trago :x
1) Empecé a probar con el bootloader del ccs para puerto serie ( se debe usar el programa Soiw.exe )... no me funcionó, me salió el error "Timeout while downloading" tooodasss las veces , probando de diferentes formas y configuraciones. Aclaro que probé en Win764 ( con adaptador usb serie), WinXP 64 y 32 ( con adaptador usb serie, y sin adapatador(directo puerto serie) ), en otra PC y siempre lo mismo) :(
2) Seguí probando con el usb_bootloader que ofrece microchip (con el cual se inicia este hilo) y funcionó utilizando el PDFSUSB.exe pero no pude hacer correr el demo de ninguna manera :(, directamente no me da opción a elegir PICDEM FS USB BOARD.
3) Proseguí a probar la opción de utilizar el bootloader de microchip y cargar luego un programa de ccs mediante el PDFSUSB.exe respetando las indicaciones ya dadas ( agregar las líneas en nuestro programa para no pisar el bootloader ) y funcionó a la perfección. Solo en WinXP, ni intenten en Win7 o vista porque el driver del USB no funciona.
Muchas gracias a todos los que comentaron y espero les sirva mi aporte.