I was working with this given code. I configure this code for my pic18f67k40 microcontroller.
It is giving time out error when I upload .hex file of my application code.
Code: Select all
#pragma orgall 0x1C000
#define BOOTLOADER_START_ADDR 0x1C000
#define START_PROGRAM_ADDR 0x1C300
static char block[64];
void Start_Program() org START_PROGRAM_ADDR{}
unsigned short UART_Write_Loop(char send, char receive) {
unsigned int rslt = 0;
while(1){
Delay_5ms();
UART1_Write(send);
Delay_5ms();
rslt++;
if (rslt == 512){
return 0;
}
if (UART1_Read() == receive){
return 1;
}
}
}
void Write_Begin(){
FLASH_Write(START_PROGRAM_ADDR, block);
//FLASH_Erase_Write_64(START_PROGRAM_ADDR, block);
block[0] = 0x60;
block[1] = 0xEF;
block[2] = 0x3E;
block[3] = 0xF0;
}
void Start_Bootload() {
char i = 0, xx, yy;
long j = 0;
while (1) {
if (i == 64) {
//--- If 32 words (64 bytes) recieved then write to flash
if (!j)
Write_Begin();
if (j<BOOTLOADER_START_ADDR){
FLASH_Write(j, block);
//FLASH_Erase_Write_64(j, block);
}
i = 0;
j += 0x40;
}
UART1_Write('y');
while (!UART1_Data_Ready());
yy = UART1_Read();
UART1_Write('x');
while (!UART1_Data_Ready());
xx = UART1_Read();
block[i++] = yy;
block[i++] = xx;
}
}
void main() org BOOTLOADER_START_ADDR{
UART1_Init(9600);
if (UART_Write_Loop('g','r')) {
Start_Bootload();
}
else {
Start_Program();
}
}
If this code is wrong, suggest new code for pic18f67k40 microcontroller.
Regards,
Kumar