books books
books
Microcontrollers Programmeren In dit boek gebruiken we JAL (Just Another Language) om de PIC-microcontroller te programmeren in 60 oefeningen. JAL is makkelijk in gebruik en is een goede basis om programmeren in andere talen snel te leren. Na het lezen en toepassen van de voorbeelden in dit boek kan iedereen die zich hierin serieus heeft verdiept met behulp van JAL zelf de microcontroller aansturen. Je leert onder meer het programmeren van timers, analoog/digitaal omzetters, comparators, pulsbreedte regeling voor motoren en geluid, LED- en LCD-scherm aansturing, USB-connectie en communicatiemogelijkheden met computers of andere microcontrollers. Ook weet je aan het eind van het boek wat je moet doen om nu nog onbekende mogelijkheden te gaan toepassen. Met deze kennis kan iedereen van beginner tot meer gevorderde zijn creativiteit vorm geven in projecten met microcontrollers. Wil je verder met leren programmeren dan legt dit boek ook een zeer goede basis. Wie goed met JAL overweg kan en zich de gestructureerde wijze van denken heeft aangeleerd, zal de stap naar andere programmeertalen zoals Python, C++ enz. kunnen maken. Ook het programmeren van minicomputers zoals de Raspberry Pi en Arduino zijn mogelijkheden.
Peter Zwart is een gepensioneerd leraar van een school voor kinderen met leer- en opvoedingsmoeilijkheden. Na de opheffing van dit onderwijs volgde hij een managementopleiding en vervolgde zijn loopbaan als interim-directeur. Al heel jong was hij geïnteresseerd in elektronica en bouwde versterkers. Bij het aanleren van de programmeertaal JAL was zijn conclusie dat weinig documentatie compleet is. Met zijn didactische kennis probeert hij met dit boek hier verandering in te brengen.
Elektor International Media BV www.elektor.com
Microcontrollers Programmeren Leer PIC-microcontrollers programmeren met JAL in 60 lessen
• Peter Zwart
Om te starten is geen kennis van elektronica nodig. Wie niets weet van elektronica, krijgt overal in het boek de noodzakelijke kennis aangereikt. Alle belangrijke en benodigde informatie staat in de tekst
Microcontrollers Programmeren
Leer PIC-microcontrollers programmeren met JAL in 60 lessen
Peter Zwart
Zwart.indd All Pages
23/03/2021 09:59:47
Microcontrollers Programmeren ●
Leer PIC-microcontrollers programmeren met JAL in 60 lessen Peter Zwart
an Elektor Publication
LEARN DESIGN SHARE
●
Niets uit deze uitgave mag worden verveelvoudigd, opgeslagen in een geautomatiseerd
gegevensbestand, of openbaar gemaakt, in enige vorm of op enige wijze, hetzij elektronisch, mechanisch, door middel van druk, fotokopie, microfilm of op welke andere wijze dan ook, zonder voorafgaande schriftelijke toestemming van de uitgever. Alle rechten voorbehouden.
●
Ondanks alle aan de samenstelling van dit boek bestede zorg kunnen noch de auteur, noch de redactie,
noch de uitgever aansprakelijkheid aanvaarden voor eventuele schade die zou kunnen voortvloeien uit enige fout die in deze uitgave zou kunnen voorkomen.
●
Voor zover het maken van reprografische verveelvoudiging uit deze uitgave is toegestaan op grond van
artikel 16h Auteurswet 1912 dient men de daarvoor wettelijk verschuldigde vergoedingen te voldoen aan de Stichting Reprorecht (Postbus 3051, 2130 KB Hoofddorp, www.reprorecht.nl)
●
Voor zover het maken van reprografische verveelvoudiging uit deze uitgave is toegestaan op grond van
artikel 16h Auteurswet 1912 dient men de daarvoor wettelijk verschuldigde vergoedingen te voldoen aan de Stichting Reprorecht (Postbus 3051, 2130 KB Hoofddorp, www.reprorecht.nl)
●
Voor het overnemen van gedeelte(n) uit deze uitgave in bloemlezingen, readers en andere
compilatiewerken (artikel 16 Auteurswet 1912) kan men zich wenden tot de Stichting PRO (Stichting Publicatie- en Reproductierechten Organisatie, Postbus 3060, 2130 KB Hoofddorp, www.stichting-pro.nl).
●
ISBN: 978-90-5381-307-2
Grafische vormgeving & productie: DMC ¦ daverid.com Druk: Ipskamp Printing, Enschede
Elektor is part of EIM, the world’s leading source of essential technical information and electronics products for pro engineers, electronics designers, and the companies seeking to engage them. Each day, our international team develops and delivers high-quality content - via a variety of media channels (e.g., magazines, video, digital media, and social media) in several languages - relating to electronics design and DIY electronics. www.elektor.com
LEARN DESIGN SHARE
De leercurve van JAL was steil in het begin. Veel antwoorden op vragen vond ik in het Forum. En voor alle antwoorden op de vragen die ik op het forum stelde, bedank ik de forumleden. Ik noem geen namen, want dan vergeet ik er vast een.
Microcontrollers Programmeren
● VOORWOORD Toen de microcontroller in de tweede helft van de twintigste eeuw in de hobby-elektronica zijn intrede deed, werd dit voor veel hobbyisten het einde van hun liefhebberij. Je kocht wat onderdelen, een geprogrammeerde chip en een bijbehorend printbordje en monteerde alles op de juiste plek en het werkte. Het werd een elektronisch Ikea-kunstje. Wat er in de chip was geprogrammeerd, was onduidelijk en hoe het werkte nog veel onduidelijker. Een groot verschil met de jaren hiervoor toen een project nog werd opgebouwd met losse onderdelen zodat de werking altijd stap voor stap te volgen was in het schema. Gelukkig zijn er altijd mensen die veel kennis van zaken hebben en in staat zijn situaties te veranderen. Er kwamen steeds hogere (meer toegankelijke) programmeertalen om de microcontroller als gebruiker te besturen. En daarmee werd de microcontroller een chip die niet alleen veel losse onderdelen vervangt en veel mogelijkheden heeft, maar ook de gebruiker zelf laat bepalen welke mogelijkheden te gebruiken. In dit boek gebruiken we JAL (Just Another Language) om de microcontroller te programmeren. JAL is makkelijk in gebruik en is daar mede een goede basis om programmeren in andere talen snel te leren. Dit boek heeft geen downloadsite. Programmeren is zelf bedenken wat je wil en uitzoeken hoe je dat moet programmeren en vervolgens foutzoeken. Een vergeten komma, een opdracht niet sluiten, een typefout enz. kan je programma danig verstoren. Programmeren leer je door te doen en niet door te downloaden. In de datasheet van de leverancier van de microcontroller krijg je een prima overzicht van wat de chip kan. Voor minder dan 10 euro koop je een microcontroller met timers, analoog/digitaal omzetters, comparators, pulsbreedte regeling voor motortjes en geluid, LCD-schermpjes aansturing, led display aansturing, USB-aansluitmogelijkheden en communicatiemogelijkheden met computers of andere microcontrollers enz. enz. Na het lezen en toepassen van de voorbeelden in dit boek kan iedereen die zich hierin serieus heeft verdiept met behulp van JAL zelf de microcontroller aansturen. Ook weet je aan het eind van het boek wat je moet doen om nu nog onbekende mogelijkheden te gaan toepassen. Met deze kennis kan elke hobbyist zijn creativiteit vorm gevent met deze microcontrollers zoals voor het maken van een Kerstlandschap, een modeltrein-maquette of aanpassingen in speelgoed (poppenhuis) enz. Wil je verder met leren programmeren dan legt dit boek ook een goede basis. Wie goed met JAL overweg kan, zal de stap naar andere programmeertalen zoals Python, C++ en kunnen maken. Ook het programmeren van minicomputers zoals de Raspberry (kan worden geprogrammeerd met Python) en Arduino zijn mogelijkheden. Als de gestructureerde wijze van denken is aangeleerd, zijn hierdoor deze andere programmeertalen snel aan te leren. Om te starten is geen kennis van elektronica nodig. Wie niets weet van elektronica, krijgt overal in het boek de noodzakelijke kennis aangereikt. Alle belangrijke en benodigde informatie staat in de tekst. Er zijn dan ook geen voetnoten mede, omdat dit het lezen van de tekst verstoort. Wie meer wil weten kan op Internet gaan zoeken en wie al over de basiskennis beschikt, kan eventueel sommige delen overslaan.
●6
VOORWOORD
Velen zijn minder vertrouwd met Technisch Engels dan met conversatie Engels. Daarom worden in het begin zoveel mogelijk Nederlands termen gebruikt. Gaandeweg worden steeds meer de Engelse termen gebruikt, want de basistaal voor en van de microcontroller is uiteindelijk Engels. Ook op forums gaat de conversatie in het Engels.
●7
Microcontrollers Programmeren
● INLEIDING Toen ik mij een paar jaar geleden in JAL ging verdiepen, liep ik tegen een aantal problemen op. De boeken die er waren gebruikten bijvoorbeeld nog JAL-opdrachten die niet meer ondersteund werden of werkten met communicatie-hardware (de Wisp628) die al een aantal jaren niet meer te koop was. Als je als nieuweling met JAL wil gaan werken, worden dit hele grote problemen die in het begin niet eenvoudig te doorgronden zijn. Na drie weken worstelen met JAL en een flink aantal vragen op het JAL-forum, besloot ik opnieuw te beginnen op een totaal andere manier. Het betekende wel dat ik van alles wat ik deed aantekeningen ging maken. Deze aantekeningen zijn de basis voor dit boek geworden. Het bleek ook dat een flinke portie geduld nodig was voordat ik het eerste programmeerwerk in de microcontroller geladen kreeg. Op verschillende websites staat informatie en word je doorverwezen. Ergens staat in een tutorial: je hebt een Programmer nodig en dan drie plaatjes. En dan maar zoeken hoe die Programmers heten en waar je ze kan kopen enz. En dat is jammer, want de ontwikkelaars van JAL hebben een uiterst veelzijdige programmeertaal ontwikkelt. Ik hoop met dit boek een bijdrage te leveren om JAL toegankelijk te maken. Ik behoor niet tot de groep ontwikkelaars van JAL en ben van beroep ook geen elektronicus, maar weet wel veel van didactiek: hoe leg ik een stuk leerstof begrijpelijk uit. Ik hoop dat ik erin slaag deze boeiende materie op een begrijpelijke wijze uit te leggen, zodat de lezer net zo veel plezier beleeft aan dit boek als ik tijdens het schrijven. Met JAL kunnen heel veel microcontrolleren worden aangestuurd. JAL beschikt ook over een aparte map met voorbeelden van toepassingen voor allerlei microcontrolleren. Aan het eind van dit boek ben je in staat om die voorbeelden aan te passen en te bepalen welke microchip bij jouw planning past. Op deze manier kun je dus allerlei onbekende mogelijkheden van de microcontroller zelf gaan uitzoeken Op dit moment beleeft JAL een soort revival. Er worden libraries ontwikkeld die andere microchipchips en randapparatuur ondersteunen. Hierdoor wordt JAL nog universeler en breder toepasbaar. Donaties voor de verdere ontwikkeling zijn dan ook zeer welkom. Rest nog te vermelden dat alle software die in dit boek wordt gebruikt, freeware is en voor iedere gebruiker zonder commerciële doeleinden vrij toegankelijk en te downloaden is.
●8
INHOUDSOPGAVE
● INHOUDSOPGAVE ● VOORWOORD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 ● INLEIDING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
VOORBEREIDINGEN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 ● ONDERDELENLIJST EN PROGRAMMA’S . . . . . . . . . . . . . . . . . . . . . . . . . . 01 ● Onderdelenlijst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● Basisonderdelen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DEEL 1
25 25
●
Programmer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
●
Voeding: adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
●
Voor de ‘alles-in-een-werkplek’ (als je die wilt gaan toepassen) . . . . . . . . . . 26
●
Ingangsversterker voor WinOscillo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
●
Onderdelenlijst voor de opdrachten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
● In het algemeen is nodig: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 02 ● Programma JAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● Windows installatie van JAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
03
25
28 29 29
●
Instellingen JALEditor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
●
Instellingen JALEditor 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
● Linux installatie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● De Programmer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● Mogelijkheid 1: de PICkit3 van Microchip . . . . . . . . . . . . . . . . . . . . . . . . .
32 32 32
●
Mogelijkheid 2: de PICkit4 en de SNAP van . . . . . . . . . . . . . . . . . . . . . . . . 36
●
Mogelijkheid 3: De Wisp648 en XWisp (de software) . . . . . . . . . . . . . . . . . . 36
● Mogelijkheid 4: van eenvoudig tot uitgebreid . . . . . . . . . . . . . . . . . . . . . . . 04 ● De voeding van de Microcontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 05 ● De alles-in-een-werkplek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● Het insteekbordje aansluiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 06 ● Terminal programma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● Terminal programma: RealTerm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
●
38 39 44 46 48 49
Batchprogramma voor RealTerm en PICKit3 . . . . . . . . . . . . . . . . . . . . . . . 49
● Batchprogramma voor RealTerm en Wisp648 (in Pass-through-mode) . . . . . . 07 ● Voltmeter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 08 ● Oscilloscoop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 09 ● Frequentiemeter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51 54 54 56
●9
Microcontrollers Programmeren 10 11 12
● ● ●
Datasheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Simulatieprogramma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
DEEL 2 ● KENNIS HEBBEN VAN ELEKTRONICA, REKENKUNDIGE BEWERKINGEN . . 59
●
Algemeen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 01 ● Printplaat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
● Alternatieve methode zonder PCB en met een microcontroller . . . . . . . . . . . 02 ● Statische elektriciteit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 03 ● Weerstanden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● Kleurcodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
● Rekenen met weerstanden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 04 ● Condensatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 05 ● Wet van Ohm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 06 ● Talstelsels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● Andere talstelsels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 07 ● Rekenkundige bewerkingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
60 60 60
61 62 63 63 66
DEEL 3 ● FOUTZOEKEN (DEBUGGING) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 01 02
● ●
Programmeer problemen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Hardware problemen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
DEEL 4 ● WERKEN MET JAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
● JAL – taal afspraken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● JAL – standaard opdrachten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● Commentaar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● 1. Variabelen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 01 02
● 10
●
●
69 69 69 69 72
●
Count (Binnen array) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
●
Constanten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
●
Long table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
2. Manipulatoren en getal generatoren . . . . . . . . . . . . . . . . . . . . . . . . 74
●
Delay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
●
Dice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
●
Enable_digital_io() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
●
Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
●
Random . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3. Voorwaarden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
●
If then else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
●
Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
INHOUDSOPGAVE
●
03
●
●
Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
●
Interrupt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
●
Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
4. Herhaal commando’s (lussen) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
●
For loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
●
using . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
●
exit loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
●
Forever loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
●
Repeat until . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
●
Loop while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
5. Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
●
Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
●
Functie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
●
In-line assembler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
● Pragma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● Een aantal overige JAL opdrachten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ● Opdrachten voor de microcontroller . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
●
84 84 84
Pragma: instellen microcontroller Fuses . . . . . . . . . . . . . . . . . . . . . . . . . . 84
● Registers instellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 04 ● Handige opdrachten bij het programmeren . . . . . . . . . . . . . . . . . . . . . . . ● Led aan en uit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85 86 86
●
Nibble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
●
Pin aanwijzing per nibble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
●
Pinstatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
●
Poorten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
●
Spatie op een LCD display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
●
Tussenvariabele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
●
Verkorte notering pinstatus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
●
Wachten op een signaal van buiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
●
Word naar byte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
●
Word naar byte(2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
● Byte naar word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 05 ● ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 06 ● Opbouw van een JAL-programmeeropdracht . . . . . . . . . . . . . . . . . . . . . .
89 90 90
● 11
Microcontrollers Programmeren 07 08
● ●
Programmeren met duidelijk commentaar . . . . . . . . . . . . . . . . . . . . . . . . 92 Algemene aanwijzingen en ‘denk eraan’ –herinneringen . . . . . . . . . . . . . 93
HET PROGRAMMEREN MET JAL . . . . . . . . . . . . . . . . . . . . . . . . 95 ● SPELEN MET LEDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Opdracht 1 ● Twee leds om de beurt aan en uit . . . . . . . . . . . . . . . . . . . . . . . . ● De software: opdracht nr. 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DEEL 1
●
Programmeren met de PICKit3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
●
De Wisp648 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
● 12
●
Economischer programmeren bij de ledbalk . . . . . . . . . . . . . . . 104
De software: opdracht nr. 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
●
De software opdracht nr. 3a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
●
Toelichting op opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
●
Ledbalk met gebruik van ‘case’ en een counter . . . . . . . . . . . . . 120
De software: opdracht nr. 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
●
Ledbalk met gebruik van ‘case’ en een drukknop . . . . . . . . . . . 127
De software: opdracht nr. 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Opdracht 6
●
Ledbalk oplopend aan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
●
Opdracht 5
●
●
De software: opdracht nr. 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Opdracht 4
●
95
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Opdracht 3
●
95
●
Opdracht 2
●
95
●
Twee kleuren led wordt driekleuren led . . . . . . . . . . . . . . . . . . 137
De software: opdracht nr. 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
INHOUDSOPGAVE
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
DEEL 2 ● PROGRAMMEREN MET ANDERE LIBRARIES . . . . . . . . . . . . . . . . . . . . . . 140 Opdracht 7
●
●
Hexadecimale counter naar terminal (RealTerm) . . . . . . . . . . . 140
De software: opdracht nr. 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
●
De programmeeropdracht voor de PICkit3 . . . . . . . . . . . . . . . . . . . . . . . 141
●
De programmeeropdracht voor de Wisp648 . . . . . . . . . . . . . . . . . . . . . . . 143
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Opdracht 8
●
Een zin naar de Terminal van RealTerm . . . . . . . . . . . . . . . . . . 146
●
De print library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
●
De software: opdracht nr. 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Opdracht 9
●
●
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Opdracht 10
●
Tekst van Terminal naar microcontroller en terug (1) . . . . . . . 155
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
●
Tekst van Terminal naar microcontroller en terug (2) . . . . . . 158
De software: opdracht nr. 11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Opdracht 12
●
●
De software: opdracht nr. 10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Opdracht 11
●
Tekens van Terminal naar microcontroller en terug . . . . . . . . . . 150
De software: opdracht nr. 9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
●
Alleen cijfers van Terminal naar microcontroller en weer terug 162
De software: opdracht nr. 12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
● 13
Microcontrollers Programmeren
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Opdracht 13
●
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
●
Aansturen met cijferkeuzemenu in RealTerm . . . . . . . . . . . . . 172
De software: opdracht nr. 14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Opdracht 15
●
Alleen tekst van Terminal naar microcontroller en weer terug . 167
De software: opdracht nr. 13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Opdracht 14
●
●
●
Aansturen met letterkeuzemenu in RealTerm . . . . . . . . . . . . . 181
De software: opdracht nr. 15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
DEEL 3 ● ANALOOG NAAR DIGITAAL CONVERSIE (ADC) . . . . . . . . . . . . . . . . . . . 189 Opdracht 16
●
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
●
Verder met de toelichting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
●
Truncate oplossen met printen/formatteren . . . . . . . . . . . . . . 199
De software: opdracht nr. 17 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Opdracht 18
●
● 14
Knippertijd van een led regelen met ADC . . . . . . . . . . . . . . . . 189
De software: opdracht nr. 16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Opdracht 17
●
●
●
ADC hoge en lage resolutie en de library bijwerken . . . . . . . . 206
De software: opdracht nr. 18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
INHOUDSOPGAVE
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Opdracht 19
●
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
●
Function en ADC en delay . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
De software: opdracht nr. 22 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
●
Shift operator (bits verschuiven) en ADC en delay . . . . . . . . . 237
De software: opdracht nr. 23 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
●
5 drukknoppen op één pin en ADC met lage resolutie . . . . . . . 243
De software: opdracht nr. 24 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Opdracht 25
●
Procedure-out en ADC en delay . . . . . . . . . . . . . . . . . . . . . . . 228
●
Opdracht 24
●
●
De software: opdracht nr. 21 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Opdracht 23
●
De delay opdrachten bij ADC inkorten . . . . . . . . . . . . . . . . . . 225
●
Opdracht 22
●
●
De software: opdracht nr. 20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Opdracht 21
●
ADC en delaytijden op 5 niveaus met 5 druknoppen . . . . . . . . 216
De software: opdracht nr. 19 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Opdracht 20
●
●
●
ADC met hoge resolutie en 5 drukknoppen op één pin . . . . . . . 259
De software: opdracht nr. 25 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
● 15
Microcontrollers Programmeren
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
Opdracht 26
●
●
ADC met potmeter (of random) en niveau-indicator . . . . . . . . 268
De software: opdracht nr. 26 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
DEEL 4 ● HET 7-SEGMENT-DISPLAY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 Opdracht 27
●
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
●
Twee led displays met teller tot 100 . . . . . . . . . . . . . . . . . . . . 281
De software: opdracht nr. 28 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
Opdracht 29
●
Het zeven segment led-display . . . . . . . . . . . . . . . . . . . . . . . . 277
De software: opdracht nr. 27 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Opdracht 28
●
●
●
Twee led displays met scoreteller en reset . . . . . . . . . . . . . . . 296
De software: opdracht nr. 29 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
DEEL 5 ● LIQUID CRISTAL DISPLAY (LCD) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 Opdracht 30
●
● 16
LCD-scherm aansturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
De software: opdracht nr. 30 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Opdracht 31
●
●
●
Looptekst naar links en rechts op het LCD-scherm . . . . . . . . . 312
De software: opdracht nr. 31 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
●
Opdracht 31a Looptekst naar links op de 2e regel . . . . . . . . . . . . . . . . . . 315
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
INHOUDSOPGAVE
●
●
●
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
●
Opdracht 31b Looptekst naar links op 1e regel . . . . . . . . . . . . . . . . . . . . 317
De software: opdracht nr. 31b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
●
Opdracht 31c Looptekst naar rechts op de 1e regel . . . . . . . . . . . . . . . . . 319
De software: opdracht nr. 31c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
●
Opdracht 31d Looptekst naar rechts op de 2e regel . . . . . . . . . . . . . . . . . 322
De software: opdracht nr. 31d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
Opdracht 32
●
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
●
De Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
●
LCD met ADC en een progress balk . . . . . . . . . . . . . . . . . . . . . 326
De software: opdracht nr. 33 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Opdracht 34
●
LCD met teller en progress balk . . . . . . . . . . . . . . . . . . . . . . . 323
De software: opdracht nr. 32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
Opdracht 33
●
●
●
LCD met ADC, LDR en een progress balk . . . . . . . . . . . . . . . . . 329
De software: opdracht nr. 34. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
DEEL 6 ● PULS BREEDTE MODULATIE (PWM) . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
●
Inleiding PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
● 17
Microcontrollers Programmeren Opdracht 35
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
● 18
●
Motortje met ADC en PWM aansturing . . . . . . . . . . . . . . . . . . 349
De software: opdracht nr. 38 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
●
PWM en geluid: een pieptoon . . . . . . . . . . . . . . . . . . . . . . . . 356
De software: opdracht nr. 39 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
●
PWM en geluid met drukknop . . . . . . . . . . . . . . . . . . . . . . . . . 359
De software: opdracht nr. 40 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
Opdracht 41
●
Een motortje aansturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
●
Opdracht 40
●
●
De software: opdracht nr. 37 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Opdracht 39
●
PWM1 en PWM2 (met ADC) . . . . . . . . . . . . . . . . . . . . . . . . . . 338
●
Opdracht 38
●
●
De software: opdracht nr. 36 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
Opdracht 37
●
PWM en procentueel een led dimmen (= lage resolutie) . . . . . 335
●
Opdracht 36
●
●
De software: opdracht nr. 35 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
●
PWM: een lichtgevoelige schakelaar met led en geluid . . . . . . 361
De software: opdracht nr. 41 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
INHOUDSOPGAVE
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
DEEL 7 ● REGISTERS VAN DE DATASHEET GEBRUIKEN . . . . . . . . . . . . . . . . . . . . 365 Opdracht 42
●
PWM2 op pin_b3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
●
Het CONFIG3H register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
●
De software: opdracht nr. 42 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
Opdracht 43
●
PWM en Timer 0 interrupt . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
●
Het T0CON register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
●
Het INTCON register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
●
De software: opdracht nr. 43 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
Opdracht 44
●
Poort B interrupt on change . . . . . . . . . . . . . . . . . . . . . . . . . . 376
●
Het INTCON register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
●
Het INTCON2 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
●
De software: opdracht nr. 44 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
Opdracht 45
●
Poort B external interrupt op B0, B1 en B2 . . . . . . . . . . . . . . . 383
●
Het INTCON register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
●
Het INTCON2 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
●
Het INTCON3 register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386
●
De software: opdracht nr. 45 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
Opdracht 46
●
De microcontroller op 48.000.000 Hz . . . . . . . . . . . . . . . . . . . 390
●
Inleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
●
De software: opdracht nr. 46 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
● 19
Microcontrollers Programmeren
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
DEEL 8 ● GEHEUGENCHIPS EN GEGEVENS OPSLAAN MET I2C . . . . . . . . . . . . . . . . 394
● ● ● ● ●
Geheugenopbouw . . . . . . . . . . . . . . . . . . . . . . . . . . . . Extern geheugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . I2C verbinding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Geheugen aansturen . . . . . . . . . . . . . . . . . . . . . . . . . . De opdrachten voor de geheugenchip . . . . . . . . . . . . . . . Opdracht 47 ● De geheugenchip 24LC1025-DIP vullen .
●
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
394 395 395 396 398 400
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
●
Controle van de opslag op de geheugenchip . . . . . . . . . . . . . . 406
De software: opdracht nr. 48 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
●
De geheugenchip vullen met een array . . . . . . . . . . . . . . . . . . 410
De software: opdracht nr. 49 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
●
Controle van de array-opslag op de geheugenchip . . . . . . . . . 414
De software: opdracht nr. 50 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
●
De geheugenchip vullen met een getallen array . . . . . . . . . . . 418
De software: opdracht nr. 51 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
●
De Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
Opdracht 52
● 20
. . . . . .
●
Opdracht 51
●
. . . . . .
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
Opdracht 50
●
. . . . . .
●
Opdracht 49
●
. . . . . .
De software: opdracht nr. 47 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400
Opdracht 48
●
. . . . . .
●
Controle van de array opslag op de geheugenchip . . . . . . . . . 426
INHOUDSOPGAVE
●
De software: opdracht nr. 52 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
●
De Hardware: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
Opdracht 53
●
De geheugenchip vullen vanuit een bestand . . . . . . . . . . . . . . 431
●
Gegevensbestand . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
●
Van word naar 2 bytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432
●
Van 2 bytes naar word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433
●
De software: opdracht nr. 53 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438
●
De Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
Opdracht 54
●
●
Controle van het opgeslagen bestand in de geheugenchip . . . . 445
De software: opdracht nr. 54 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
DEEL 9 ● EEN SERIËLE HARDWARE VERBINDING . . . . . . . . . . . . . . . . . . . . . . . . 450
● ● ●
Een hardware RS232-verbinding met de MAX232 De opdrachten voor een RS232 verbinding . . . . . Voorbereidingen in RealTerm . . . . . . . . . . . . . . Opdracht 55 ● Een RS232 verbinding maken . .
●
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
450 453 454 454
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
●
De Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
●
Lezen en schrijven met een RS232 verbinding . . . . . . . . . . . . 457
De software: opdracht nr. 56 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
Opdracht 57
●
. . . .
De software: opdracht nr. 55 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
Opdracht 56
●
. . . .
●
De geheugenchip schrijven en lezen met RS232_hw . . . . . . . . 460
De software: opdracht nr. 57 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
● 21
Microcontrollers Programmeren
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
Opdracht 58
●
●
De geheugenchip alleen lezen met RS232_hw . . . . . . . . . . . . 464
De software: opdracht nr. 58 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
DEEL 10 ● COMMUNICATIE VIA USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
● ●
Inleiding USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468 De opdrachten voor USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468 Opdracht 59 ● USB en RealTerm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
●
De software: opdracht nr. 59 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
Opdracht 60
●
●
USB: met toetsenbord opdrachten geven . . . . . . . . . . . . . . . . 474
De software: opdracht nr. 60 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
●
Toelichting op de opdracht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
●
De hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
●
Tot slot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
● AFSLUITING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
● 22
VOORBEREIDINGEN
● VOORBEREIDINGEN Met een microcontroller kun je allerlei handelingen automatiseren. Deze handelingen maak je met de editor van JAL. Na het maken moet het programma vervolgens in de microcontroller worden geladen. Hiervoor is software nodig en communicatie-hardware. Welke microcontroller? In de voorbeelden wordt overal de microcontroller PIC 18f4455 van Microchip gebruikt. Dit is een microcontroller met veel pinnen en dus veel ingebouwde mogelijkheden. Dit geeft de mogelijkheid veel te experimenteren zonder andere microcontrolleren aan te schaffen. Ook is er de mogelijkheid om in-circuit te communiceren met behulp van een terminalprogramma op de computer via ‘serial software’ (d.w.z. er zijn mogelijkheden om met de processor te communiceren terwijl het programma in de processor aanstaat), terwijl via de hardware seriële verbinding (RS232) de mogelijkheid om 2 microcontrollers te koppelen ook aanwezig is. Na het programmeren van de microcontroller kan deze worden losgekoppeld en zelfstandig gebruikt. Het programma blijft in de processor ook als de voeding wordt uitgezet. Een andere belangrijke reden om voor de 18f4455 te kiezen is de mogelijkheid om via USB met een computer te communiceren. Dit is van belang als je een geprogrammeerde microcontroller ergens hebt ingebouwd en toch over de mogelijkheid wil beschikken om de microcontroller met een computer te laten communiceren. De ‘serial software aansluiting’ is in die situatie namelijk vaak niet meer te gebruiken. Communicatie via de COM-poort van de computer is (bijna) geen optie meer omdat die poort op de meeste computers/laptops niet meer aanwezig is. De kenmerken van de 18f4455 De 18f4455 heeft 40 pinnen. De meeste pinnen hebben meerdere namen die aangeven waarvoor de pin is te gebruiken. Met de software beslis je welke mogelijkheid van de pin je gebruikt. De 18f4455 heeft de volgende mogelijkheden (tijdens het gebruik krijgen de namen betekenis): • • • • • • •
13 analoge ingangen RS232 hardware-communicatie USB communicatie - Hierdoor bestaat pin c3 niet. I2C communicatie (Inter-IC bus; informatie uitwisselen door een microcontroller (de master) en andere chips (de slaves)). 2 PWM aansluitingen een snelheid van 12 Mb/s Geheugen o Geheugenflash geheugen (programmageheugen) 12288 words (wat in dit geheugen staat blijft bewaard als de microcontroller uit staat)
● 23
Microcontrollers Programmeren
•
o RAM geheugen (geheugen voor de variabelen) 2048 bytes o EEPROM geheugen (wat in dit geheugen staat blijft bewaard als de microcontroller uit staat) 256 bytes Er zijn dus 35 pinnen voor invoer of uitvoer te gebruiken; de overige 5 pinnen zijn voor de voeding en resetten
Pingebruik Het gebruik van sommige pinnen ligt vast. Dit betekent dat we niet alle 40 pinnen zo maar kunnen gebruiken. Deze pinnen worden gebruikt voor specifieke functies: • • • • • • • • • • •
pin pin pin pin pin pin pin pin pin pin pin
● 24
1 11, 12, 31 en 32 13 en 14 16 17 18 23 24 25 = c6 26 = c7 38, 39 en 40
gebruikt door MCLR en reset gebruikt door de voeding gebruikt door het kristal pwm 2 pwm 1 gebruikt door USB alleen input alleen input RS232 TX hardware RS232 RX hardware gebruikt door de Programmer
DEEL 1 ● ONDERDELENLIJST EN PROGRAMMA’S
DEEL 1 ● ONDERDELENLIJST EN PROGRAMMA’S 01
●
Onderdelenlijst
Voor de experimenten in de rest van het boek is een boodschappenlijstje samengesteld. Het lijkt een grote lijst maar de kosten vallen mee. Afhankelijk van wat je al hebt, ben je ongeveer 100 euro kwijt of minder. Alle onderdelen zijn standaard-onderdelen, goed verkrijgbaar en vaker te gebruiken. Ga je een schakeling echt toepassen dan zal de voorraad onderdelen natuurlijk moeten worden aangevuld. Er wordt vanuit gegaan dat je over een computer beschikt. Basisgereedschap zoals een soldeerbout, striptang, schroevendraaiers e.d. wordt ook verondersteld aanwezig te zijn. Let wel op: de soldeerbout moet een elektronica-exemplaar zijn, want anders worden de onderdelen te heet.
●
Basisonderdelen
• • •
Microcontroller 18f4455 Insteek bord (Breadboard) 3 ontstoringscondensatoren van 100 nF (Nano Farad)op elke hoek van het insteekbordje en 22 µF afvlak (stabilisatie) condensator rechtsonder Een kristal van 20 MHz met de twee bijbehorende condensatoren van 20 pF (pico Farad) Twee weerstanden van 33 K ohm en 10 K ohm en de condensator van 100 nF aan pen 1 (MCLR) Een set aansluitdraden voor een insteekbordje
• • •
●
Programmer
•
●
Lees eerst het hoofdstuk ‘Programmer’ om een keuze te maken Voeding: adapter
• •
Kant en klare 5 Volt adapter: bijvoorbeeld de standaard voeding voor de Raspberry PI een standaard 12 Volt gelijkstroom adapter
Of • • • • • • •
je wilt zelf aan de slag: Adapter 15V ⎓ en 0.8 A gelijkstroom of adapter 25 V ~ en 1 A wisselstroom Koelpasta TOOL-HEAT-PASTE-01 Spanningsregelaar 7805 en 7812 met koelplaat TO220 13.5 K/W HEATSINK-08 C1, C4, C5, C8 = 2200 µF/35 V (zie tekst) Bij wisselstroom is ook nodig: Bruggelijkrichter 100 V / 1 A - DIODE-BRIDGE-500-DIP Printplaat C2, C3, C6, C7 = 100 nF
● 25
Microcontrollers Programmeren
●
Voor de ‘alles-in-een-werkplek’ (als je die wilt gaan toepassen)
een behuizing (kastje) van ongeveer 25 cm x 15 cm bijvoorbeeld de ‘Fibox TA241911 Wandbehuizing 240 x 191 x 107 ABS Grijs (RAL 7035)’ • • • • • • • • •
•
● • • • • • • • • • •
●
voor noodgevallen: de resetknop: o drukknop-maak miniatuur schakelaar aan/uit potmeter 10K en knop potmeter 1K en knop miniatuur schakelaar-om chassisdeel-ingang voor de adapter een kroonsteentje, waarin je de 12 V draden vastzet om kortsluiting te voorkomen (als je de aansluiting niet gebruikt) montagedraad die in het insteekbord past o kleur zwart (geeft de ‘-‘ aan) o kleur rood (geeft de ‘+’ aan) o en nog minimaal 2 andere kleuren om de draden door te voeren naar buiten zijn led houdertjes prima geschikt: je plakt hem vast en de draden schuren niet meer langs scherpe randen. Geschikt is bijvoorbeeld de ‘LED-5MM-MOUNT-(10)’ van Voti weerstand van 180 ohm Ingangsversterker voor WinOscillo
2x weerstand 10K 1 weerstand van 1K 2x condensator 1µF 1 condensator tantaal 2x 1N4148 Potentiometer met draaiknop 220K (voor grof afstelling) Potentiometer met draaiknop 1K (voor fijn afstelling) IC µA741 of LM312 met voetje Plug aan “UI’ voor de ingang van het geluid van de computer (groene aansluitbus) Twee testpennen of mini test-clips met bijbehorende aansluitingen Onderdelenlijst voor de opdrachten
Opdracht 1 • 2 leds • 2 weerstanden 330 ohm Opdracht 2 en 3 • Een ledbalk van 12 leds • 12 weerstanden van 330 ohm
● 26
DEEL 1 ● ONDERDELENLIJST EN PROGRAMMA’S
Opdracht 3a • Buzzer van 5 V Opdracht 4 en 5, 7 t/m 15 • 5 miniatuur drukknoppen • 5 weerstanden van 10K Opdracht 6 • Een twee kleuren led (of meer) Opdracht 7 • Een com-poort kabel (recht(straight – niet gekruist) of een ‘Prolific USB to Serial port kabel’ (lees hiervoor eerst het hoofdstuk ‘Programmer’) • In ieder geval heb je een D-sub9 chassisdeel male zoals afgebeeld nodig. Dit chassisdeel moet male zijn vanwege de eventuele Prolific aansluiting. De adapter is onder andere te koop bij www.microkloon.nl. Deze website verkoopt alleen aan particulieren.
Afbeelding 1 D-SUB Female 9 pin com-poort
Opdracht 16 t/m 26 • Potmeter 10K (zit in kastje) • Schakelaar met middenstand (zit in kastje) • 6 weerstanden van 10K • 6 weerstanden van 100K • 6 weerstanden van 1K Opdracht 27 • 7 segment display uno common anode • 7 weerstanden van 180 ohm Opdracht 28 en 29 • Duo 7 segment display common anode • 2 transistors BC327-25 • 2 weerstanden 1K • 3 miniatuur drukknoppen • 3 weerstanden 10K • 7 weerstanden 120 Ω
● 27
Microcontrollers Programmeren
Opdracht 30 t/m 33 • Hd44780 lcd-display 2 rijen 16 karakters (zichtbaar van de 32) • Weerstand 10 ohm • een keramische ontstoringscondensator van 0.1 µF of 0.01 µF • een stuk lintkabel of installatiekabel met 4 draden en massieve kern en niet gevlochten en de juiste dikte voor het insteekbordje • een instelpotentiometer van 5K zit in kastje Opdracht 34 • LDR Opdracht 35 en 36 • Al aanwezig Opdracht 37 en 38 • TC4427A • Gelijkstroommotortje Max 18 Volt Opdracht 39 t/m 41 • Luidspeaker • Weerstand 100 ohm Opdracht 42 t/m 46 • Buzzer al aanwezig Opdracht 47 t/m 54 • Memory chip 245LC 1025 • 2 weerstanden 10 K Opdracht 55 t/m 58 • Chip MAXIM MAX232 • 5 elektrolytische condensatoren van 1 µf • Stukje printplaat met gaatjes • als de computer geen D-Sub 9 pins aansluiting heeft: PCI Express kaart – Serieel 9 pins + RS232 kabel (let op female of male zie tekst) of • chassis deel Seriële D-Sub 9pins female of male (zie tekst) en • Prolific PL2303, USB-A naar RS232 kabel Opdracht 59 en 60 • Condensator 220 nF
● • •
In het algemeen is nodig:
Een kleurcode tabel: Kleurcodesleutel PM-01 Vitrometer. krimpkous (dit wordt verkocht in verschillende diktes; je schuift het over de
● 28
DEEL 1 ● ONDERDELENLIJST EN PROGRAMMA’S
soldeerverbinding en maakt het warm met een aansteker waardoor het krimpt en de verbinding verstevigd wordt en tegelijk goed is geïsoleerd) gaatjesbord, 2.54 mm raster, soldeerstrips aan 1 kant van 10 x 16 cm) en een kraspen in plaats van een print etsen o.a. bij Voti
•
Een andere manier om goedkoop aan leuke onderdelen te komen is de plaatselijke rommelmarkt. Op de elektronica afdelingen zijn vaak voor weinig geld usb-uitbreidingsinsteekkaarten te koop waar je de connectoren inclusief bedrading af kunt slopen. Verjaardagskaarten met een muziekchip zijn ook te (her)gebruiken. 02
●
Programma JAL
JAL is een Nederlands programma en ontwikkeld door Wouter van Ooijen en de afkorting staat voor Just Another Language. Deze programmeertaal lijkt in geen enkel opzicht op de machinetaal die een microcontroller kan lezen. De opdrachten in JAL worden door een compiler omgezet naar de machinetaal. Hoe groter het verschil tussen de opdrachten in de programmeertaal en de voor een leek moeilijk leesbare machinetaal des te makkelijker is die programmeertaal te begrijpen. Bij JAL is het verschil heel groot en daarom wordt JAL een hogere programmeertaal genoemd. Het programma JAL bestaat dus uit een editor (tekstverwerker) en een compiler. JAL zelf is geschreven in de programmeertaal Python, maar dat is voor de gebruiker niet belangrijk. De compiler van JAL zet opdrachten om naar een .hex file. Om de .hex file in de microcontroller te laden is een ‘Programmer’ nodig. De ‘Programmer’ bestaat uit een print die de gegevens uit de .hex file in de microcontroller laadt. In dit boek wordt de PICkit hiervoor gebruikt. De compiler maakt van de ingevoerde programmeer-opdracht ook een assembler-file die kan worden gebruikt in andere programmeer-opdrachten. JAL kan deze assembler-files namelijk ook inlezen en dat scheelt dus typewerk. Hierdoor is JAL een breed in te zetten programma. Een asm-file kun je openen met ‘Notepad’ (Kladblok) en dan kun je zien wat de compiler van JAL gedaan heeft: de ingetypte JAL-opdrachten zijn omgezet in assembler-taal. Interessant om te weten maar we doen er verder niets mee in dit boek. Ook de gemaakte hex-file kan in Notepad worden bekeken. Ook deze is interessant om te bekijken, maar ook hiermee doen we verder niets. Deze file is alleen belangrijk voor de Programmer.
●
Windows installatie van JAL
Het makkelijkst is het om JAL als een geheel pakket te downloaden van http://www.justanotherlanguage.org/downloads Je kiest nu jallib_full-1.5.0.exe. Dit is de laatste versie voor publicatie van dit boek. De naam van dit bestand lijkt over libraries te gaan, maar het is een volledige installatie van de editor, de compiler en de libraries.
● 29
Microcontrollers Programmeren
Na het downloaden dubbelklik je op het exe-bestand. Kies voor de installatie van de Jallib Libraries + Compiler en JalEdit. Op het volgende scherm wordt de installatie directory ‘JallibWorkpalace’ gekozen en dat is niet zo duidelijk: er vindt een volledige installatie plaats. Verander daarom de installatieplek in C:\JALProgram. De map wordt automatisch aangemaakt en alle verwijzingen aangepast. Verder zijn geen veranderingen nodig en de installatie verloopt vanaf nu automatisch. Kies aan het eind van de installatie ervoor om een desktop icon te maken. De installatiebestanden worden dus niet zoals bij andere installaties in Program Files gezet. Tijdens de installatie werd op de C-schijf een map ‘JALProgram’ gemaakt. In deze map staan de sub mappen met o.a. de JAL editor, libraries, de compiler en een map met voorbeelden ‘samples’. De snelkoppeling op het bureaublad start de JALEditor op vanuit C: \JALProgram\JalEdit. Als je op de hoogte wilt blijven van de nieuwste versies van de libraries ga je naar de eerder genoemde website.
●
Instellingen JALEditor
Als de JALEditor is gestart, worden een paar instellingen aangepast. • Ga naar Tools – Editor Preferences o 1e tab: General – vak: Editor Special Options - Zet Tab Width ingesteld op 0 - Smart Tabs - uitvinken - Auto Indent Lines – blijft aangevinkt - Sluit het scherm af met OK - Open ‘Editor Preferences’ opnieuw en zet Tab Width = 3 o 3e tab Backup – Backup files on Save - Vink aan ‘Date Time stamp + Filename’ - Kies ‘Date Time Format’: yyyy-mmm-dd-hh.nn= o Oké o Continue application Om de programmeercode overzichtelijk te houden, wordt tekst regelmatig ingesprongen. Het is standaard om dan 3 spaties in te springen. Om dit inspringen tijdens typen makkelijker te maken is de tabsprong op 3 spaties ingesteld. Ook worden er nu automatisch back-ups gemaakt van het programmeerwerk. De datum-instellingen van JALEditor is de Amerikaanse schrijfwijze. Dit is veranderd in de Nederlandse notatie. De notatie ‘yyyy’ geeft aan dat het jaartal in 4 cijfers wordt weergegeven. De notatie ‘mmm’ geeft aan dat de eerste drie letters van de maand worden weergegeven. Er komt een foutmelding na ‘Oké’. Als je klikt op ‘continue application’ gaat het programma gewoon door.
● 30
DEEL 1 ● ONDERDELENLIJST EN PROGRAMMA’S
●
Instellingen JALEditor 2
Controleer de instellingen voor de bijbehorende programma’s. Ga naar: • Tools – Environment Options • In de tab “General’ staan de verwijzingen die JAL nodig heeft. Je hoeft niets te veranderen als je geen wijzigingen hebt aangebracht. Pas dit anders aan.
Afbeelding 2 Instellingen Tab ‘General’
•
Tab ‘JAL’ Hier hoef je niets aan te passen. Er staat slechts 1 vinkje en dat is meestal standaard al ingevuld.
Afbeelding 3 Instellingen Tab ‘JAL’
● 31
Microcontrollers Programmeren
•
●
Tab ‘Programmer’ Deze tab wordt alleen ingevuld als de Wisp648 is gekozen. Linux installatie
De installatie op een Linux-computer gaat op een andere manier. Ga voor een Linux installatie als volgt te werk: • • • •
Ga naar de website http://www.justanotherlanguage.org/content/jallib/tutorials/tutorial_installation Scrol een stukje naar beneden Volg de instructies op
03
●
De Programmer
Voor de communicatie tussen JAL en de microcontroller heb je een Programmer nodig. Er zijn verschillende Programmers te koop. Het makkelijkst werkt een ICSP (In Circuit Serial Programmer). De Programmer kan de PIC programmeren, terwijl deze in de opgebouwde schakeling blijft. De microcontroller hoeft dus niet uit de schakeling en in een andere programmeerschakeling geplaatst om te worden geprogrammeerd. Dit werkt snel en zorgvuldig en de kans op beschadigen van de microcontroller is nihil. De keuze van de Programmer hangt onder andere af van de laptop of computer die je gebruikt. De Programmer PICkit heeft een USB aansluiting. De Wisp648 heeft een aansluiting voor een Com-poort. Veel computers hebben de Com-poort aansluiting niet meer; laptops hebben ze bij hoge uitzondering. Gebruik je een computer dan kun je overwegen een insteekkaart met twee com-poorten te kopen als de computer nog een leeg PCI-slot heeft. Gebruik je een computer, die je niet wilt open maken dan kun je een ‘USB to RS-232 converter’ kabel kopen. In de kabel is een Prolific chip ingebouwd die voor de aanpassing naar een USB-poort van de computer zorgt. Gebruik je een laptop dan kun je geen insteekkaarten inbouwen en heb je altijd een Prolific-kabel nodig.
Afbeelding 4 Com poort
●
Mogelijkheid 1: de PICkit3 van Microchip
Microchip levert een goede Programmer. Het is een ICSP (In Circuit Serial P. De PICkitof 3 werkt met eigen software en kan niet worden aangestuurd vanuit de JALEditor zoals de Wisp648.
● 32
DEEL 1 ● ONDERDELENLIJST EN PROGRAMMA’S
De PICkit3 heeft een USB mini-B connector en moet naar USB 2.0 van de computer. Dit is een standaard kabel en wordt bijna altijd meegeleverd bij de bestelling. Ondanks de benodigde eigen software is dit de meest gebruiksvriendelijke oplossing.
Afbeelding 5 PICkit 3
De voeding kan door de USB-aansluiting worden verzorgd maar het aantal mA is dan beperkt. Beter is de PICkit3 op de voeding van de microcontroller aan te sluiten. De aansluitingen van de PICkit 3 1 2 3 4 5 6
= = = = = =
MCLR/VPP VDD Target VSS (ground Target) PGD (ICSPDAT) PGC (ICSPCLK) PGM – wordt niet aangesloten
De software voor de PICkit 3 De PICkit 3 heeft eigen software die je kunt downloaden van de website van MicroChip: De ’Through PICkit 3 Programmer Application’. De bijbehorende handleiding ‘Programmer Application User’s Guide’ kun je ook downloaden van de website. Na de introductie van de PICkit 4 is de software voor de PICkit 3 verplaatst naar het archief van Microchip en vanaf daar te downloaden. De compiler in de JALEditor maakt een hex-file. Deze hex-file moet worden ingelezen in de software van de PICkit 3 en vervolgens in de microcontroller geladen. Er zijn zoals eerder aangegeven wat extra handelingen nodig. Als de software is geopend, zijn de volgende instellingen belangrijk: • Menu o o
File - Met ‘Import Hex’ kies je de hex-file die je wilt laden. - De laatste vier files die je hebt geopend, worden zichtbaar en kun je snel herladen met Control + 1, 2, 3 of 4. Device family Met ‘Baseline’ zie je microcontrollers die niet automatisch kunnen worden herkend. De overige microcontrollers worden automatisch herkend.
● 33
Microcontrollers Programmeren
o Programmer Alleen aanvinken: - Verify on Write - Clear Memory Buffers on Erase Leuk om te weten: - Write on PIC button – als je de button op de PICkit 3 indrukt, wordt de hex-file geladen. Dit is alleen handig als je meer processors met dezelfde hex-file moet laden. - Alert sound Je kunt geluiden instellen bij bepaalde handelingen van de software als auditieve feedback. o Tools - Target Vdd Source • Auto-Detect - Check communications De communicatie tussen de PICkit3 en de microcontroller wordt gecontroleerd. Bij de 16F505 krijg je de mededeling: PICkit3 connected (Parts in this family are not auto-detected). Dit betekent dat je via ‘Device Family – Baseline’ de 16F505 handmatig moet kiezen. Op het scherm staat halverwege aan de rechterkant: • Vdd Target – check. Hiermee controleer je de spanning van de microcontroller. Dit gebruik je als je de PICkit3 even hebt losgekoppeld. Dit voorkomt een foutmelding bij het laden van de hex-file. • Eronder staat een snelbutton ‘Auto Import Hex + Write Device. Je krijgt hetzelfde scherm als bij ‘File – Import Hex’. De hex-file wordt nu ook meteen geladen in de microcontroller. Bij sommige processors wordt een update van de hex-file automatisch direct geladen. De werkwijze van de PICkit3 is nu heel simpel: je laadt een hex-file en kiest: ‘Write’ of gebruikt de snelbutton. Het is mogelijk om ook de data en/of clock pin te programmeren. Dit wordt pas uitgevoerd door de microcontroller als de PICkit3 wordt losgekoppeld. Ben je niet tevreden en verander je je programma dan moet je na het aansluiten van de PICkit3 eerst ‘Vdd Target – Check’ toepassen om een foutmelding te voorkomen. Wil je later ook andere programmeertalen gebruiken dan maakt die bijbehorende editor en compiler ook een hex-file. De PICkit3 kan deze hex-file ook lezen en is hierdoor veelzijdig. Microchip heeft de standalone software al in het archief gezet. Daarom leg ik ook uit hoe de eigen ontwikkelomgeving: MPLAB X van Microchip te gebruiken is. Als je deze software installeert, kun je kiezen de programmeer-unit MPLAB IDE te installeren (MPLAB IDE) of de Programmer software MPLAB IPE. De PICkit 3 kan niet zonder aanpassingen gebruikt worden in de software van MPLAB IPE. De standaardinstelling van de PICkit 3 is voor de PICkit 3 standalone software zoals hierboven beschreven. In de MPLAB IPE geeft de software daarom de foutmelding dat de
● 34
DEEL 1 ● ONDERDELENLIJST EN PROGRAMMA’S
‘connection’ niet gelukt is. De PICkit3 moet worden aangepast. Aanpassen voor MPLAB IPE: • • • • • • • • • • •
Start de PICkit 3 in de PICkit 3 software Zorg dat de PICkit 3 is aangesloten Open het menu ‘Tools’ Kies ‘Revert to MPLAB mode’ OK In het venster komt de melding dat de PICkit 3 is ‘converted’ OK en sluit af Open MPLAB IPE o Sluit de PICkit 3 niet aan Kies ‘Advanced’ Kies ‘Power settings’ o 5 Volt o Vink uit: ‘Power target circuit from MP3’ Sluit de PICkit 3 aan
Instelling in software: • •
LVP disabled – de microcontroller werkt goed en zelfstandig LVP enabled – de microcontroller werkt alleen als de PICkit 3 is aangesloten en de computer aan is
Terugzetten naar PICkit 3 software: • • • • • • • •
Start de PICkit 3 software Sluit de Picket 3 aan De PICkit 3 wordt herkend maar geeft een foutmelding (PICkit 3 is in MPLAB mode) Open het menu ‘Tools’ Kies ‘Download PICkit Operating System’ Kies in het scherm ‘Open PK 3 OS file’: o C:\Program Files (x86) – Microchip – PICkit 3 o Kies ‘PK3OSVO20005.hex’ o ‘Openen’ In het scherm wordt de voortgang beschreven: o Download PICkit 3 Operating System’ o Download succesfull o Reconnected o PICkit 3 connected o PIC Device found Sluit programma af en open het programma opnieuw
● 35
Microcontrollers Programmeren
●
Mogelijkheid 2: de PICkit4 en de SNAP van
In 2020 is de PICkit 4 door MicroChip vrijgegeven. Deze versie vereist de MPLAB IPE software, die onderdeel is van de MPLAB X IDE software. Een paar maanden later kwam de volgende upgrade: de SNAP. De SNAP-Programmer werkt alleen met Low Voltage microchips en is daardoor niet te gebruiken met de PIC 18F4455.
●
Mogelijkheid 3: De Wisp648 en XWisp (de software)
De grondlegger van JAL levert ook een Programmer: de Wisp648. Het is ook een ICSP (In Circuit Serial Programmer). De Programmer kan vanuit JAL worden aangestuurd met een menu icoon en dat werkt heel snel. De aansluiting kan zowel op de com-poort van de computer of laptop en met een ‘USB to RS-232 converter’ kabel op een USB-aansluiting. Zoek voor de kabel op Internet op: ‘Prolific USB to Serial port kabel’ of ’usb to rs232 serial port adapter with Prolific’. WISP is een afkorting van: Wouters In System flash PIC Programmer. Dit is dus ook een Nederlands product en ontwikkeld door Wouter van Ooijen. Op zijn website ‘www.voti.nl’ kun je kiezen tussen een gemonteerde versie van de Wisp648 of een bouwpakket. De ‘Wisp648 Programmer’ verricht dezelfde handelingen als de PICkit 3 maar kan vanuit de JALEditor worden aangestuurd: • • •
nadat een programmeeropdracht is gegeven in JAL zet de Wisp648 de microcontroller in de programmeerstand hierna laadt de Wisp648 het programma in de microcontroller en zet na afloop de programmeerstand van de microcontroller weer uit.
Zelf afbouwen van de Wisp648 is geen probleem, want op de website is een zeer uitgebreide handleiding voor zelfbouwers te vinden. Als je kiest voor zelfbouwen, monteer dan een stukje zwart montage draad (de min-aansluiting) en een stukje rood montagedraad (de plus-aansluiting) op de plek van de led als je de ‘alles-in-een-werkplek’ gaat gebruiken (zie verderop). De stekker en bedrading naar de microcontroller worden meegeleverd in het Voti-pakket. De COM-poort voor de Wisp648 Voordat we de instellingen van de Programmer kunnen aanpassen in de JALEditor moeten we weten welke COM-poort van de computer door de USB-aansluiting van de Wisp648 gebruikt wordt. De beschrijving hieronder is voor Windows. • •
Sluit eerst de Wisp648 op de voedingsspanning aan Ga in Windows naar o Configuratiescherm – Apparaat beheer – Poorten (COM & LTP) o Sluit de Wisp648 aan op de computer met de ‘USB to RS-232 converter’ kabel en kijk welke poort erbij komt
● 36
DEEL 1 ● ONDERDELENLIJST EN PROGRAMMA’S
o Er komt een vermelding met Prolific en het nummer van de communicatie poort bijvoorbeeld COM3. o De verbinding gaat dan dus via COM3
Afbeelding 6 Vaststellen welke COM-poort wordt gebruikt
Wijzigen van het nummer van een COM-poort Soms heeft de microcontroller of een programma een bepaald nummer nodig. Natuurlijk geeft de automatische toewijzing niet altijd het nummer dat je nodig hebt. Je kunt het nummer van de COM-poort handmatig wijzigen. Dit gaat als volgt: 1. 2. 3. 4. 5. 6. 7. 8.
Ga naar ‘Apparaatbeheer’ Ga naar ‘Poorten (COM & LPT) Kies de poort die je wilt veranderen en klik hierop met rechts Klik op ‘Eigenschappen’ In de tab ‘Algemeen’ kies je ‘Instellingen wijzigen’ Vul je ‘Administrator-wachtwoord’ in Ga naar de tab ‘Poortinstellingen’ en kies ‘Geavanceerd’ In het volgende scherm kun je linksonder de Com-poort veranderen
Op deze manier kun je een poort-toewijzing ook eerst veranderen zodat de poort vrijkomt voor jouw toepassing. De XWisp software De ‘XWisp’ software op de website www.voti.nl is oorspronkelijk de software voor de eerdere hardware Wisp628 van de Programmer, maar werkt ook prima bij de Wisp648. Let wel op want er is ook de software ‘Wisp’ en die is alleen in DOS te gebruiken. De software ‘XWisp’ versie 1.41 maakt gebruik van de programmeertaal Python en wordt in de download meegeleverd. Download de software en maak in ‘JALProgram’ een map ‘XWisp’. Start het gedownloade bestand en kies als bestemming de map C:\JALProgram\XWisp. De JALEditor en de Wisp648 moeten nu worden ingesteld om te kunnen samenwerken. Ga hiervoor in de JALEditor in de menubalk naar:
● 37
Microcontrollers Programmeren
Tools – Environment Options • Tab ‘Programmer’ Verander de opdrachten zoals in de afbeelding aangegeven. Pas indien nodig het nummer van de Com-poort aan. o 1e vak: C:\JALProgram\XWisp\xwisp.exe m.b.v. het map-icon o 2e vak: port com3 wait err go %F
Afbeelding 7 Programmer bij het gebruik van XWisp
Nu weet JAL waar de software van de Wisp648 staat en ook onder welke condities de programmeer-instructies naar de microcontroller moeten worden gestuurd. De aansluitingen van de Wisp648 naar de microcontroller 18f4455 Aansluitingen Wisp648 voor de microcontroller 18f4455 Pin Kenmerk Wit 38 PGM Groen 39 PGC Blauw 40 PGD Geel 1 MCLR Zwart - GND 0 Volt Vss Rood + Spanning 5 Volt VDD
●
of VCC
Mogelijkheid 4: van eenvoudig tot uitgebreid
Op de website van http://www.justanotherlanguage.org/ is ook een zelfbouw Programmer te vinden. Op Internet kunnen ervaren hobbyisten andere kant en klare Programmers en schema’s voor zelfbouw Programmers vinden. Kijk goed of er een link wordt gemaakt naar bijbehorende software en of het een ICSP Programmer (In Circuit Serial Programmer) is.
● 38
books books
books
Microcontrollers Programmeren In dit boek gebruiken we JAL (Just Another Language) om de PIC-microcontroller te programmeren in 60 oefeningen. JAL is makkelijk in gebruik en is een goede basis om programmeren in andere talen snel te leren. Na het lezen en toepassen van de voorbeelden in dit boek kan iedereen die zich hierin serieus heeft verdiept met behulp van JAL zelf de microcontroller aansturen. Je leert onder meer het programmeren van timers, analoog/digitaal omzetters, comparators, pulsbreedte regeling voor motoren en geluid, LED- en LCD-scherm aansturing, USB-connectie en communicatiemogelijkheden met computers of andere microcontrollers. Ook weet je aan het eind van het boek wat je moet doen om nu nog onbekende mogelijkheden te gaan toepassen. Met deze kennis kan iedereen van beginner tot meer gevorderde zijn creativiteit vorm geven in projecten met microcontrollers. Wil je verder met leren programmeren dan legt dit boek ook een zeer goede basis. Wie goed met JAL overweg kan en zich de gestructureerde wijze van denken heeft aangeleerd, zal de stap naar andere programmeertalen zoals Python, C++ enz. kunnen maken. Ook het programmeren van minicomputers zoals de Raspberry Pi en Arduino zijn mogelijkheden.
Peter Zwart is een gepensioneerd leraar van een school voor kinderen met leer- en opvoedingsmoeilijkheden. Na de opheffing van dit onderwijs volgde hij een managementopleiding en vervolgde zijn loopbaan als interim-directeur. Al heel jong was hij geïnteresseerd in elektronica en bouwde versterkers. Bij het aanleren van de programmeertaal JAL was zijn conclusie dat weinig documentatie compleet is. Met zijn didactische kennis probeert hij met dit boek hier verandering in te brengen.
Elektor International Media BV www.elektor.com
Microcontrollers Programmeren Leer PIC-microcontrollers programmeren met JAL in 60 lessen
• Peter Zwart
Om te starten is geen kennis van elektronica nodig. Wie niets weet van elektronica, krijgt overal in het boek de noodzakelijke kennis aangereikt. Alle belangrijke en benodigde informatie staat in de tekst
Microcontrollers Programmeren
Leer PIC-microcontrollers programmeren met JAL in 60 lessen
Peter Zwart
Zwart.indd All Pages
23/03/2021 09:59:47