Forsøg med PIC16F84. |
På min arbejdsplads arbejdede jeg for flere år siden en del med processoren 8031 og programmeringssproget Pascal. Jeg har siden puslet med tanken om at lave noget til mig selv med de små processorer i PIC16F8xx-serien fra MicroChip. Nu her i efterløns-tiden (2003) blev det så endeligt til noget. Denne side beskriver, hvordan jeg greb det an. Jeg gjorde en fejl ved at købe et test- og programmeringssæt fra chip-leverandøren, uden at undersøge, om det kunne det, jeg skulle bruge. Jeg købte efter et "special price for You, my friend" - tilbud et PicStart-kit, som nemt skulle kunne "sætte vand over til kaffe" og "blinke under vand", og der medfulgte indtil flere processorer. Det viste sig desværre, at det var den mindste model, som ikke kan klare PIC16Fxxx. Men der medfulgte da en CD med mange nyttige programmer og tips (som man også kan hente gratis på nettet ...) Så næste fase blev at undersøge, hvad der var om emnet på det store net, og hvordan andre har gjort. Det var spændende. Og inden længe kom der strøm på loddejernet, og et forsøgsprint og et brænderprint blev lavet. For at gøre det fleksibelt og nemt blev det bygget på hulprint med rodekassekomponenter. På forsøgsprintet er alle porte ført ud til modulstik, hvor man kan tilkoble lysdioder, kontakter, displays m.m.m. Spændingsforsyningen er en simpel 12 volt trafo. Som processor valgte jeg PIC16F84, men hvis man skal begynde i dag, kan man lige så godt vælge for eksempel PIC16F628, der er PIN-kompatibel, billigere og har mere programhukommelse, RAM, EEPROM og I/O. Kode skrevet til 16F84 skal ændres lidt for at kunne køre på 16F628. Forsøgsprintet herunder. Øverst diagram, nederst hulprint. (reset-knappen var ikke monteret, da billedet blev taget.) Jeg havde besluttet, at overførsel af program fra PC til PIC skulle kunne ske med PIC'en monteret i forsøgsprintet, idet jeg forudså, at der skulle en del programmeringsforsøg til, før det opførte sig som ønsket. Og hvis PIC'en skulle ud af printet, i brænderen og tilbage i printet et par hundrede gange, så ville benene nok være slidt op eller knækket længe inden. Hvis man designer efterfølgende opstillinger til det, så kan programmeringsenheden bruges igen og igen, også med andre typer PIC-kredse, også SMD-udgaverne. Heldigvis har MicroChip designet PIC16Fxxx til In Circuit Serial Programming (ICSP), og diagrameksempler og programmeringssoftware er der meget af på nettet. Jeg fandt gratis software ProgPIC2 hos : Joachim Aichinger og mixede diagrammet sammen, så det passede til de komponenter, der var i skuffen. Programmeren kobles på computerens serielle port, og programmerens outputledninger kobles til PIC-kredsløbet med et lille 5-benet stik. Spændingsforsyning fra en 15 volt trafo. Programmeringsprintet herunder. Øverst diagram, nederst hulprint. Under programmeringen forsynes PIC fra programmeren, som også lægger 13,5 volt på PIC ben 4, MCLR. Herved omkobles PIC, så programmering kan ske på ben RB6 og RB7. Hvis der er tilkoblet hård belastning til RB6 og RB7 skal stikket i port RB fjernes under programmeringen. Jeg har senere (2006) købt et Velleman-kit K8076 med en dejlig ZIF-sokkel på, som gør kopiering nemmere, og det kan også fungere som ICSP-modul lige som min hjemmebyggede programmer. Der medfølger software og konnektor til com-port. (Der findes sikkert også version til USB-port) For at teste, at både software og hardware virkede, inden jeg selv kastede mig ud i programmeringsforsøgene, hentede jeg på nettet et simpelt program, som kan få en lysdiode til at blinke. Lysdioden er forbundet mellem port A0 og plus 5 volt, med en modstand på 330 ohm i serie. Testprogrammet b84a-1.hex er hentet hos Wouter van Ooijen : www.voti.nl Hex-filen er genereret med højniveausproget JAL, som er et Pascal-lignende sprog, skrevet af Wouter van Ooijen. Hex-filen lægges i samme mappe som ProgPIC2-programmet, og åbnes med dette program. Det skulle så gerne være muligt at skrive hexfilen til PIC-kredsen. Lysdioden skal blinke med 1 sekunds interval, hvis krystallet er 10 MHz. Til min store forundring virkede det i første forsøg. Og nu kom den spændende opgave : at skrive det første program. Man kan dertil købe/downloade Basic- ,Pascal- eller C- compilere, som omdanner højniveausprogets kode til PIC-kode. Men jeg besluttede at lære at bruge de 35 kommandoer, der bruges i PIC-sproget. Der findes masser af programmer på nettet, man kan lære af, og der er også en del sider med begynderkurser. Jeg har lært meget hos www.sprut.de De første forsøg gik ud på at læse fra tastatur, og skrive ud til 8 lysdioder eller 7 segment display. Man må også lære at initialisere og skrive til et 2 liniers display. Billede herunder. Når man så har fundet ud af at gange og lægge sammen kan man lave et forstudie til styring af en frekvenssyntese. Rutiner til regneoperationerne behøver man ikke selv at lave, de hentes for eksempel hos www.microchip.com. Herunder indtastes et 3-cifret kanalnummer, som bliver lagt til 11520 (144 MHz) og ganget med kanalafstand på 12,5 kHz. Deletal D og frekvens FKV udlæses på displayets linie 2. Når man har styr på disse grundlæggende ting er der basis for mange spændende forsøg og nyttige konstruktioner. Se nogle af mine ved at vælge i topmenuen. Til top af siden. |