WebElektronika

A PIC18F mikrovezerlő programozása II.

person access_time 2013.12.23.
Ebben a cikkben egy konkrét példát nézünk meg, amely a bootloader használatát mutatja be. Lépésről lépésre kerül bemutatásra ennek a programozási módnak a bemutatása. A cikkben a méltán népszerű Microchip-es fejlesztőpanelt, a "Low Pin Count USB Development Kit" használjuk fel.


Legyen egy egyszerű példa, villogjon a "C" port 1. bitjére kötött LED. Ha nem használunk "bootloader"-t, hanem egy programozókészüléket (pl.: PicKit2), akkor a következő C nyelvben megírt program végezheti el ezt a feladatot.

#include <p18f14k50.h>
#include "delays.h"

main()
{
    TRISC= 0x00;

    LATC = 0x00;

    while(1)
    {
        LATCbits.LATC0 = 1;
        LATCbits.LATC1 = ~LATCbits.LATC1;
        Delay10KTCYx(500);
    }
}

Mielőtt félretennénk a programozókészüléket, és összekötnénk egy USB kábellel a mikrovezérlőt tartalmazó fejlesztőpanelt és a számítógépet, még pár feladatot el kell végeznünk.

  1. Töltsük le a bootloader-t, az rm18f14k50.lkr-t és az "HIDBootLoader.exe" programot. Ezt megtaláljuk "Microchip Libraries for Applications"-ban.
  2. A "USB Device - HID - HID Bootloader - C18 - PIC18F14K50.hex" file-t (ez a bootloader) töltsük le egy programozó (pl.: PicKit2) segítségével a mikrovezérlőbe. A sikeres letöltés után a programozókészülékre már nem lesz szükségünk.

Ha ezekkel a feladatokkal végeztünk, akkor módosítsuk a cikk elején közölt mintpéldánkat a következőképpen :

#include <p18f14k50.h>
#include "delays.h"

#define PROGRAMMABLE_WITH_USB_HID_BOOTLOADER
#define REMAPPED_RESET_VECTOR_ADDRESS            0x1000
#define REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS    0x1008
#define REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS    0x1018
    
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
}

main()
{
    TRISC= 0x00;
    LATC = 0x00;
    while(1)
    {
        LATCbits.LATC0 = 1;
        LATCbits.LATC1 = ~LATCbits.LATC1;
        Delay10KTCYx(500);
    }
}

Az MpLab-ban a projektfile-ok közé fel kell vennünk az "rm18f14k50.lkr" file-t. Ha ezekkel készen vagyunk, fordítsuk le a projektünket (pl.: CTRL - F10). A kapott hex file-t tudjuk letölteni a mikrovezérlőbe a "HIDBootLoader.exe" progammal a mikrovezérlőbe (amely már tartalmazza a bootloader hex file-t).