Hola a todos buen dia, solucionados algunas dudas y errores que tenia me surgen otras mas:
estoy usando windows 7 64 bit, compilador mplab C18, pic18f2550, HIDLoader, pickit2; linker modificado para pic18f2550,
Sin el Bootloader grabo un archivo en el pic y este ejecuta lo programado; grabo el bootloader y compilo em programa usando la proteccion de memoria del bootloader, con el HIDloader grabo el pic, pero al dar reset, el pic parece no hacer nada; si doy reset manteniendo activado el switch del boot, los led RC0 y RC1 comienzan a parpadear y el HIDloader reconoce el pic, debo tener algun error en la programacion. adjunto el codigo del ejemplo usado. es un ejemplo simple, pero sulucionar este inconveniente me permite avanzar en nuevos retos.
#ifndef MAIN_C
#define MAIN_C
#include <p18F2550.h>
#include <delays.h>
#pragma config PLLDIV = 5 // (20 MHz crystal on PICDEM FS USB 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
#pragma config CP0 = OFF
#pragma config CP1 = OFF
#pragma config CPB = OFF
#pragma config WRT0 = OFF
#pragma config WRT1 = OFF
#pragma config WRTB = ON
#pragma config WRTC = OFF
//.......................................................
#pragma config EBTR0 = OFF
#pragma config EBTR1 = OFF
#pragma config EBTRB = ON
#define REMAPPED_RESET_VECTOR_ADDRESS 0x1000
#define REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS 0x1008
#define REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS 0x1018
void YourHighPriorityISRCode();
void YourLowPriorityISRCode();
extern void _startup (void); // See c018i.c in your C18 compiler dir
#pragma code REMAPPED_RESET_VECTOR = REMAPPED_RESET_VECTOR_ADDRESS
void _reset (void){
_asm goto _startup _endasm
}
#pragma code REMAPPED_HIGH_INTERRUPT_VECTOR = REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS
void Remapped_High_ISR (void) {
_asm goto YourHighPriorityISRCode _endasm
}
#pragma code REMAPPED_LOW_INTERRUPT_VECTOR = REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS
void Remapped_Low_ISR (void){
_asm goto YourLowPriorityISRCode _endasm
}
#pragma code HIGH_INTERRUPT_VECTOR = 0x08
void High_ISR (void) {
_asm goto REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS _endasm
}
#pragma code LOW_INTERRUPT_VECTOR = 0x18
void Low_ISR (void){
_asm goto REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS _endasm
}
#pragma code
#pragma interrupt YourHighPriorityISRCode
void YourHighPriorityISRCode() {
} //This return will be a "retfie fast", since this is in a #pragma interrupt section
#pragma interruptlow YourLowPriorityISRCode
void YourLowPriorityISRCode() {
} //This return will be a "retfie", since this is in a #pragma interruptlow section
/** DECLARATIONS ***************************************************/
#pragma code
unsigned char K;
void main(void){
TRISA=0xF0;
LATA=0;
TRISB=0xF0;
LATB=0;
TRISC=0xF0;
LATC=0;
while(1){
LATCbits.LATC0=~PORTCbits.RC0;
for(K=1; K<10;K++){
Delay10KTCYx(250);
LATAbits.LATA5=~PORTAbits.RA5;
LATBbits.LATB3=~PORTBbits.RB3;
LATCbits.LATC1=~PORTCbits.RC1;
}
}
}