TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: zoom en 22 de Abril de 2008, 15:47:37
-
Hola, estoy con una picdem FS de microchip con un 18f4550
El pic viene programado de fabrica con un bootloader desde la direccion 000h hasta la 07ffh tengo que tener el vector de reset en la 0800h interrupcion alta prioridad en 0808h y baja en 0818h el codigo mio desde la 08019h
programo el pic con ccsc y quiero encender dos leds, no funciona, aqui va el codigo a ver si sabeis donde la estoy liando
#include <18F4550.h>
//~~~ 20MHZ OSCILLATOR CONFIGS ~~~//
//// FULL SPEED
#fuses WRTB, HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,MCLR,STVREN
#use delay(clock=48000000)
#build (reset=0x800,interrupt=0x808)
#build (nosleep)
void main() {
SET_TRIS_D(0x00);
setup_adc_ports(NO_ANALOGS); // all pins digital
while(1){
output_bit(PIN_D2,1);
output_bit(PIN_D3,1);
}
si necesitais mas informacion para detectar el problema pedidme-lo
un saludo
-
al final he conseguido resolverlo, hay que poner
#build (reset=0x800:0x800,interrupt=0x808:0x808)
#org 0x000, 0x07FF{}
al principio para reservar la memoria para el bootloader
y
#org 0x0819, 0x0919 al principio del main para indicar que empieza aqui
ahora estoy probando con transmision usb per me da errores. si coloco estas lineas no vuelve a compilar:
#DEFINE USB_HID_DEVICE FALSE
#define USB_EP1_TX_ENABLE USB_ENABLE_BULK // turn on EP1(EndPoint1) for IN bulk/interrupt transfers
#define USB_EP1_RX_ENABLE USB_ENABLE_BULK // turn on EP1(EndPoint1) for OUT bulk/interrupt transfers
#define USB_EP1_TX_SIZE 32 // size to allocate for the tx endpoint 1 buffer
#define USB_EP1_RX_SIZE 32 // size to allocate for the rx endpoint 1 buffer
#if __USB_PIC_PERIF__ && defined(__PCH__)
#define USB_CON_SENSE_PIN PIN_B2
#endif
#if __USB_PIC_PERIF__
#include <pic18_usb.h> //Microchip PIC18Fxx5x hardware layer for usb.c
#else
#include <usbn960x.c> //National 960x hardware layer for usb.c
#endif
#include "C:\Documents and Settings\David\Escritorio\firmaware\descriptorsusb.h" //USB Configuration and Device descriptors for this UBS device
#include <usb.c> //handles usb setup tokens and get descriptor reports
me dice invalid org range
alguien sabe porque?
-
Ya esta solucionado, hay que poner el codigo de usuario mas abajo en memoria, los endpoinds declarados en ccsc estaban casualmente donde intetntava poner el codigo de usuario
Al final me he tenido que contestar yo mismo als dos veces :mrgreen:
-
HOLAA!!
OYE EL ERROR QUE OBTUBISTE INVALID ORG RANGE
TAMBIEN LO TENGO
COMO LO CORREGISTEE.
ENSEÑAME EL CODIGOO COMO LO CORREGISTE
DE ANTEMANO GRACIAS
-
Eh logrado grabar todos mis programa con dos lineas de codigo , sin estas lineas de codigo el modo bootloader no puede funcionar correctamente marcando errores de grabacion.
Estas dos lineas de codigo tienes que ponerlo antes del main()
#build (reset=0x800:0x800,interrupt=0x808:0x808)
#org 0x000, 0x07FF{}
obviamente este codigo es para el pic18f4550
saludos a todos espero que les sirva
-
Eh logrado grabar todos mis programa con dos lineas de codigo , sin estas lineas de codigo el modo bootloader no puede funcionar correctamente marcando errores de grabacion.
Estas dos lineas de codigo tienes que ponerlo antes del main()
#build (reset=0x800:0x800,interrupt=0x808:0x808)
#org 0x000, 0x07FF{}
obviamente este codigo es para el pic18f4550
saludos a todos espero que les sirva
Hola adrianjpc!, no se si puedas hecharme una mano con eso del HID Bootloader, aun no capto muy bien como debe ser la estructura del programa hacerca de la configración y qué depencias necesitas para correrlo, por decir algo si es un HID se requiere de cierto protocolo en la comunicación dependiedo el tipo de HID que descriptores necesitaste para que funcione?, si pudieras poner tu código para darle un vistazo xD! Saludos..!