|
Ik ben weer eens wat aan het rommelen geweest,
Dit maal met de MicroChip PIC16F84 processor,
die erg populair is onder hobbyisten.
Hier mijn ervarigen
Inleiding
De MicroChip PIC16F84 is een microcontroller uit eenhele familie van single chip computers.
Deze uitvoering beschikt naast de razendsnelle RISC processor over :
Een eenvoudige maar krachtige instructieset van slechts 35 instructies !
1024 Words Flash ROM als programma geheugen.
68 bytes data RAM
64 bytes data Flash ROM
2 * 8bits I/O poorten per bit als In of Out in te stellen en per bit te adreseren.
Programeerbare timer
Interupt instelbaar naar keuze EXT-int, I/O-portB change of timer TimeOut
Watchdog timer
Verder is er voorzien in diverse mogelijkheden voor clock en reset
Daarnaast is een van de mooiste opties wel het feit dat het ding werkelijk met minimale middelen direct vanuit je seriele of parallele poort te programeren valt.
Kortom een ideale microcontroller voor hobbyisten die ook eens wat geavanceerde electronica willen maken.
Mijn eerste projectje was een Ambulance Sirene,
Maar ik heb er nog een aantal op stapel staan.
De instructieset
De wel heel eenvoudige instructieset van slechts 35 opdrachten maakt het ook voor de beginner niet al te lastig om met deze processor te leren werken.
Voor mensen met wat meer ervaring op andere procesoren is het welicht effe wennen.
Zo wordt er bij een conditionele opdracht niet afhangkelijk van het resultaat
naar een bepaald adres gesprongen, maar word de eerst volgende instructie al of niet overgeslagen.
Dit kan dan uiteraard een GOTO instructie zijn waardoor de code al weer aardig vertouwd uitziet.
De instructie DECFSZ verlaagt de inhoud van een register met 1 en slaat de eerst volgende instructie over waneer het register de waarde 0 krijgt.
Dat deze constructie ideaal voor loopjes is toont het volgende voorbeeld
wachtlus: NOP ; doe niets, maar verbruik wel rekentijd
DECFSZ 0x15 ; verlaag register 15 met 1, sla de volgende instructie over indien 0
GOTO wachtlus
; ga verder met de rest van het programma
Registers versus RAM
De PIC16F84 heeft slechts een echt register.
Dit is het Work register en vergelijkbaar met het Accumulator register op andere processors
Door het klein aantal RAM bytes is het mogelijk het hele RAM geheugen als een set van registers te zien
Een werkwijze die bij de MOS-6502 heel sucsesvol is gebleken.
Aansluiten
Zelfs voor de meest onhandige asperant electronicus is het aansluiten van de PIC16F84 geen probleem.
Het ding ziet graag ongeveer 5Volt op pin 14, en de Min op Pin 5
Er zijn diverse simpele oplossingen voor het verkrijgen van een clocksignaal,
maar veruit het meest simpele en favourite is gewoon een Xtal tussen pin 15 en 16.
Pin 4 is vervolgens de reset aansluiting maar die mag je eventueel (ook redelijk uniek) gewoon aan de 5V aansluiting hangen.
De overige aansluitingen zijn bedoeld om je projectje aan te sturen.
via een weerstand van pakweg 330Ohm kun je b.v. een LED aansluiten.
Zoals eerder gezegd, kunnen deze pinnen naar keuze als input of als output worden gebruikt.
Programmeren
Om de 16F84 te programeren heb je een programmer nodig.
Nu ja... dat zegt men althans.
De 16F84 is echter ontworpen om in circuit geprogrameerd te kunnen worden.
Een programmer bestaat eigenlijk uit niets anders dan een IC voetje waarvan 2 aansluitingen naar de seriele (COM) poort gaan.
Om te kunnen programeren wil de 16F84 +12V op de resetpin zien.
Die kun je ook uit de seriele poort halen.
Voorbeelden van programmers zijn er voldoende.
Ik heb er gewoon zelf een bedacht, maar als beginner kies je natuurlijk
voor een bestaand ontwerp.
Voor het programeren heb je ook een stukje software nodig.
Daar ben ik ook zelf aan begonnen maar uiteindelijk bedacht ik dat er al iets goeds bestaat en het weinig zin heeft daar nog iets voor te maken
Waneer je zelf programmaatjes wilt schijven heb je uiteraard ook een assembler programma nodig ik gebruik asmC84 (dat C slaat op 16C84, de Cmos versie van de F84)
Er zijn ook een aantal software emulators voor deze chip
Ook erg handig als je weet of je programma wel werkt
Ik gebruik F84
Documentatie
Programma's voor de PIC16F84
Open Source PIC16F84 Utilities die ik elders gevonden heb
Have fun ! (C) 2004 Pascal.
|