Opbygning af Hardware og
Software
Hardware-delen
En af de krav jeg havde, var at
overførslen af HEX-filer skulle foregå via USB. Derfor fandt jeg
en USB-controller (CP2101)
fra CYGNAL. Denne controller laver en virtuel COM-port (serielport).
Derved har jeg mulighed for at anvende alle de samme faciliteter,
som jeg ville have, hvis der var tale om en traditionel seriel port.
Til at styrer timingen i selve brændeprocessen har jeg valgt en
PIC16F84A fra
Microchip.
På den måde er jeg ikke afhængig at den timing, der måtte være på
selve overførslen fra computeren.
De fleste nye microcontrollerer
i PIC16Fxxx serien understøtter både low-voltage og high-voltage
programmering, men da en del ældre PIC-typer kun understøtter
high-voltage programmering, så har jeg valgt at min brænder skal
understøtte high-voltage programmering, således dækker jeg alle
microcontrollere i PIC16Fxxx serien.
Der er dog et problem ved dette valg... USB porten leverer kun 5
volt og high-voltage programmeringen kræver 13,5 volt. Da jeg ikke
ønsker også at skulle have en ekstern strømforsyning, så må jeg selv
lave de 13,5 volt ud fra USB portens forsyning. Dette gør jeg med en
DC-DC konverter af typen
LM2703 fra
National Semiconductor.
Så denne brænder består
groft sagt at 3 hovedkomponenter:
-
CP2101 som står for
kommunikation mellem brænder og computer (på signalniveau)
-
PIC16F84A som står for
timing af programmeringsprocessen og kommunikation
-
LM2703 som leverer 13,5 volt
til high-voltage programmeringen ud fra USB'ens 5 volt.
Derudover er der selvfølgelig en
del passive komponenter, men de sørger stort set kun for
signalomsætningen mellem de 3 hovedkomponenter.
Selve diagrammet kan du se her:
USB_PIC.pdf (findes
også i download sektionen)
Herunder kan du se mit færdige
printlayout, som det ser ud i Eagle. Eagle er et fantastisk
printudlægningsprogram som gratis kan hentes hos
CadSoft.
Den færdige brænder (mål: 2,55 x 6,35 cm). Som det kan ses, så er
denne brænder lavet med SMD komponenter. Det er kun for størrelsens
skyld. Det er ikke noget der forhindre at man laver en brænder med
traditionelle komponenter, man skal blot være klar over at LM2703 og
CP2101 kun fås i SMD.
Software-delen
Når man skal lave software til sådan en
brænder, så er man lige nød til at skabe sig et overblik over hvilke
hovedelementer eller funktionaliteter den skal indeholde.
Der skal være noget RS232C
kommunikation, da C2101 modtager USB kommunikation og omsætter det
til RS232C kommunikation. Til dette formål anvender jeg et RS232C
bibliotek som jeg i tidernes morgen har brugt i anden forbindelse.
Biblioteket kan du se her.
Så er man nød til at undersøge
programmerings specifikationerne for PIC16Fxxx serien. Her vil jeg
henvise til dokumentet
In-Circuit Serial Programming fra Microchip. Men hvis man ikke
gider at læse den specifikation igennem, så kommer pointen her...
For alle microcontroller i denne
serie finder man følgende instruktioner, som kan anvendes når man
befinder sig i programmerings-tilstanden.
-
Load Configuration
-
Load Data for Program Memory
-
Read Data from Program
Memory
-
Increment Address
-
Begin Erase Programming
Cycle
-
Load Data for Data Memory
-
Read Data from Data Memory
For nogle varianter i serien
findes også et par andre instruktioner, som ikke er i de mindre
typer. Men da man kan klare sig med de instruktioner som er vist
ovenfor. Så anvender jeg princippet om "laveste fællesnævner". Nu
bygges disse instruktioner sammen til nogle funktioner, de er som
følger:
-
Overfør en HEX-fil fra
computeren til den PIC-kreds, som skal programmeres.
-
Læs programmet i en
PIC-kreds og send det som HEX-fil til computeren.
-
Slet programmet i en
PIC-kreds.
-
Læs ID fra en PIC-kreds.
Det færdige program til
brænderen kan du se
her.
På PC-siden er der også lavet et
program, som netop anvender de 4 ovennævnte funktioner, og desuden
har et par ekstra... nemlig til at åbne og gemme HEX-filer.
Programmet har et stort vindue i
midten som indeholder HEX-filen. Det kan være resultatet af en
læsning som vist, eller en HEX-fil fra computeren. I bunden vises
hvilken PIC-kreds som er tilkoblet brænderen (i dette tilfælde en
PIC16F877A). Man kan også se hvilken virtuel COM-port brænderen er
tilsluttet.
Du finder en lille introduktion til programmet
her.
Nu skal vi bare have afprøvet om
det virker! Du kan læse om afprøvningen her.
|