Handleiding software USB PIC DEV. BOARD
V2.0 M.F. van Lieshout & J.G.W. Carpaij 21-03-2006
Handleiding software USB PIC DEV. BOARD Algemene informatie Hier volgt eerst wat algemene informatie over het systeem. Het gebouwde board bevat een grote chip, dit is de microcontroller. Een microcontroller is een soort computer welke zelf voorzien kan worden van een eigen gemaakt programma. Er wordt straks geprogrammeerd in een programmeeromgeving, dit is een soort texteditor met veel extra functies. Vervolgens wordt de gemaakte code omgezet met een compiler naar een bestandsformaat waar de microcontroller mee kan werken. Deze compiler is geïntegreerd in de programmeeromgeving. Dit omgezette bestand wordt met een programma in de microcontroller geprogrammeerd.
Hoe werkt het board? Het board kan op 2 manieren van stroom worden voorzien. De eerste manier is via USB: de stroom wordt afgetapt van de PC. Hiermee kun je maximaal 100mA aan het board onttrekken, daarna schakelt het zichzelf af d.m.v. een thermische zekering. De andere manier is een externe voeding aan connector X2. Let wel goed op de polariteit, deze staat op het PCB geprint. De externe spanning mag 7VDC – 9VDC zijn, en op deze manier kan er maximaal 1A aan het board onttrokken worden. Welke voeding er gebruikt moet worden kan ingesteld worden met JP1: de jumper op de middelste pin en de pin tegen de rand is voor de externe voeding, de andere optie is voor voeding voor USB. De microcontroller is voorzien van een bootloader. Dit is een klein stukje code in het het geheugen van de microcontroller. Hiermee kan de microcontroller extern toegevoerde data in het eigen geheugen opslaan, en zo dus een nieuw programma laden. Om de microcontroller in bootloader-mode te zetten zodat er een nieuw programma geladen kan worden, moeten de knoppen S1 (RESET) en S2 (PROGRAM) gebruikt worden. Houd PROGRAM ingedrukt en druk kort op RESET, nu staat de microcontroller in bootloader-mode. Wanneer er kort op RESET gedrukt wordt, gaat hij weer zijn geladen programma afdraaien in normale mode. Verder zijn er 2 LEDs aanwezig. De POWER-LED brandt zodra er voeding is, de TEST-LED kan met jumper JP2 aan pin A0 gekoppeld worden. De layout van de connectors staat geprint op het PCB: iedere connector bevat op dezelfde plaats +5 volt en Ground, de andere 8 pinnen zijn verbonden met de microcontroller of niet aangesloten (NC = not connected).
Installatie van de benodigde software Op de site van het E-Atelier een aantal files te downloaden voor alle benodigde software. Het gaat om onderstaande files: - MPLAB IDE Dit is de programmeeromgeving waarin programma’s geschreven gaan worden.
-
-
MPLAB MCC18 Dit is een plug-in voor MPLAB IDE. Om in de taal C te kunnen programmeren is deze plug-in nodig, het is een compiler die C-code omzet naar een formaat waarmee MPLAB IDE kan werken. USB PROGRAMMER Dit is een zip-bestand dat de volgende dingen bevat: o Linker file Dit is een speciaal bestand wat nodig is bij MCC18 om te zorgen dat er een bruikbare .hex-file gemaakt wordt, welke compatible is met de bootloader in de PIC. o MPLAB PDFSUSB Dit is het programma waarmee .hex-files in de microcontroller gezet kunnen worden. Ook kan de inhoud van de PIC hiermee uitgelezen worden. o USB drivers Deze zijn nodig om MS Windows met het board te laten communiceren.
Belangrijk: LEES GOED EN VOER ALLE INSTRUCTIES NAUWKEURIG UIT!! Eerst moet de programmeeromgeving MPLAB IDE geïnstalleerd worden. Download hiervoor MPLAB IDE vanaf de site van het E-Atelier. Start dit bestand. Kies tijdens de installatie voor ‘Complete install’, verder moet er een plaats aangegeven worden waar het programma geïnstalleerd moet worden. Er wordt na de installatie gevraagd de PC te restarten, doe dit en de installatie van MPLAB IDE is klaar. Vervolgens gaan we de C-compiler (de plug-in voor MPLAB IDE) installeren. Download de MPLAB MCC18 van de site van het E-Atelier. Start dit bestand (MPLAB-C18-Stud...... .exe). Tijdens de installatie wordt 2x gevraagd naar een aantal keuzes, vink beide keren alle opties aan:
Figuur 1: Installatie MCC18 keuzescherm 1
Figuur 2: Installatie MCC18 keuzescherm 2 Na enkele keren op next drukken is de compiler geïnstalleerd, het is niet nodig om de PC opnieuw op te starten. Als laatste moet het bestand USB programmer van de website van het E-Atelier gedownload worden. Pak het zip-bestand uit met de optie ‘Extract all...’. Er zijn nu drie verschillende directories met bestanden aangemaakt. De bestanden in de MPLAB PSFSUSB directory kunnen gewoon verplaatst/gekopieerd worden naar een eigen gekozen plaats op de harde schijf, dit programma hoeft niet geïnstalleerd te worden. Zorg wel dat alle bestanden verplaatst worden (4 stuks)! Het bestand in de Linker directory moet verplaatst/gekopieerd worden naar de directory waarin MPLAB MCC18 is geïnstalleerd. Kopieer ‘thijs18f4550.lkr’ naar de LKR directory van MCC18, bijvoorbeeld: C:\MCC18\LKR Als laatste dienen de USB drivers geïnstalleerd worden. Doe hiervoor het volgende: - Zet de jumper JP1 op het board op ‘USB’. Dit betekent dat de jumper over middelste pin en de pin die het dichtst bij de USB-connector geplaatst moet worden. Het board wordt zo voorzien van spanning door de USB-poort van de PC. - Plaats een jumper over JP2. - Sluit de USB-kabel aan tussen het board en de PC. - Wanneer het board goed in elkaar gezet is brandt de POWER-LED continu, en de TEST-LED knippert. Houd nu S2 (PROGRAM) ingedrukt, en druk kort op S1 (RESET) en wacht. De microcontroller staat nu in bootloader mode (dat betekent dat er een nieuw programma ingezet kan worden) en probeert te communiceren met de PC. De PC zal aangeven dat er een nieuw USB-device is gevonden: rechtsonder zal te zien zijn ‘Found new hardware (USB device)’. - Geef aan dat er niet gezocht hoeft te worden op de Windows Update site:
Figuur 3: Installatie USB-driver keuzescherm 1 -
Geef daarna aan dat er voor de USB-driver gezocht moet worden op een specifieke locatie:
Figuur 4: Installatie USB-driver keuzescherm 2 -
Geef nu de locatie waar de drivers uit de zip naar verplaatst/gekopieerd zijn aan:
Figuur 5: Installatie USB-driver keuzescherm 3 -
Windows zal zeggen dat de driver geen Windows kenmerk heeft. Klik op ‘Continue Anyway’.
Figuur 6: Installatie USB-driver keuzescherm 4 -
Nu worden de drivers geïnstalleerd, klik op Finish wanneer het installeren klaar is.
-
Druk nu op de RESET-knop en het USB-device wordt ontkoppeld. Het boardje zal het programma gaan draaien wat aanwezig is in zijn geheugen, in dit geval het laten knipperen van de TEST-LED.
Het gebruik van MPLAB IDE en MPLAB MCC18 Om te beginnen met het programmeren van een nieuw programma in MPLAB is het het makkelijkst om de Project Wizard te gebruiken. Dit gaat als volgt: - Start MPLAB IDE, dit kan met o.a. met de shortcut op de desktop. - Ga naar ‘Project’ ‘Project Wizard...’ - Selecteer het device waarvoor het programma geschreven gaat worden. In dit geval is dat de PIC18F4550.
Figuur 7: Project Wizard keuzescherm 1 -
Selecteer de goede toolsuite. Dit moet de ‘Microchip C18 Toolsuite’. Als er rode kruisjes voor sommige elementen van de toolsuite staan, is MCC18 niet goed geïnstalleerd!
Figuur 8: Project Wizard keuzescherm 2 -
Geef vervolgens het project een naam en selecteer de directory waar deze opgeslagen moet worden.
Figuur 9: Project Wizard keuzescherm 3 -
Als er al een bestaand bestand met code is kan dat ingevoegd worden:
Figuur 10: Project Wizard keuzescherm 4 -
MPLAB maakt nu de workspace. Er moeten nu nog een aantal bestanden aangewezen worden. Dit kan door rechts te klikken op een categorie en ‘Add files’ te kiezen. Toegevoegd moeten worden: Source Files: Header files: Object files: Library Files: Linker Scripts: Other Files:
.c bestand naar keuze \mcc18\h\p18f4550.h --\mcc18\lib\p18f4550.lib \mcc18\lkr\thijs18f45550.lkr ---
Figuur 11: De benodigde bestanden in de workspace. Het .c bestand kan een bestaand bestand zijn, of er kan een nieuw bestand gemaakt worden. Dit kan als volgt:
-
’File’ ‘New’ Nu kan er code ingevoegd worden en opgeslagen worden, of hij kan als leeg bestand opgeslagen worden: ’File’ ‘Save as...’ met extensie .c Nu is er een .c bestand wat toegevoegd kan worden aan de workspace. Door dubbel te klikken op de .c source file wordt deze geopend en kan deze bewerkt worden. De source-file moet beginnen met de volgende code, dit is nodig omdat er een bootloader gebruikt wordt. Na dit stuk code kan de eigen code geplaatst worden. Zie voor een voorbeeldprogramma om de TEST-LED te laten knipperen de bijlage:
#include
extern void _startup (void); #pragma code _RESET_INTERRUPT_VECTOR = 0x000800 void _reset (void) { _asm goto _startup _endasm } #pragma code #pragma code _HIGH_INTERRUPT_VECTOR = 0x000808 void _high_ISR (void) { ; } #pragma code #pragma code _LOW_INTERRUPT_VECTOR = 0x000818 void _low_ISR (void) { ; } #pragma code
-
-
Om het bestand te compileren naar een .hex-file kan op [CRTL]+[F10] gedrukt worden, of ‘Project’ ‘Build All’. De .hex-file staat nu in de directory van de workspace, bij de .c-file. De .hex-file kan in de microcontroller gezet worden op de manier die in het volgende hoofdstuk beschreven staat.
Programmeren van de microcontroller Het programmeren van de microcontroller gaat met het programma MPLAB PDFSUSB. Dit programma is speciaal ontwikkeld om microcontrollers met bootloaders te programmeren. Programmeren gaat als volgt: - Start PDFSUSB.exe. - Zet de microcontroller in bootloader-mode: Houd S2 (PROGRAM) ingedrukt en druk kort op S1 (RESET). - Selecteer het gewenste board in de drop-down-list midden in het schermpje. De naam is in de vorm van ‘PICDEM FS USB’.
-
Klik op ‘Load HEX File’ en selecteer een .hex-file die in de microcontroller gezet moet worden. Klik op ‘Program Device’. Wanneer het programmeren gelukt is, druk op S1 (RESET) op het board om het te programma te laten draaien.
Bijlage A: Voorbeeldprogramma usbpic_blink.c #include #include <delays.h>
//Laden van de benodigde bibliotheken //Bib. met standard delay-functies
//Code die altijd ingevoegd moet worden i.v.m. bootloader extern void _startup (void); #pragma code _RESET_INTERRUPT_VECTOR = 0x000800 void _reset (void) { _asm goto _startup _endasm } #pragma code #pragma code _HIGH_INTERRUPT_VECTOR = 0x000808 void _high_ISR (void) { ; } #pragma code #pragma code _LOW_INTERRUPT_VECTOR = 0x000818 void _low_ISR (void) { ; } #pragma code void main(void) { TRISA=0x00; ADCON1=0b00001111; while(1) { PORTAbits.RA0 = 1; Delay10KTCYx(200); PORTAbits.RA0 = 0; Delay10KTCYx(200); } }
//Start programma //Maak alle pinnen van poort A output //Zet AD-converters uit //Draai continu het volgende stuk code //Maak pin A0 hoog //Wacht 200x10000 clockcycles //Maak pin A0 laag //Wacht 200x10000 clockcycles