Inhoud. 1 De Microcontroller 1. 2 De taal C C in het kort Functies 31

Vergelijkbare documenten
Inhoud. 1 De Microcontroller 1. 2 De taal C C in het kort Functies 31

Inhoud. 1 De Microcontroller 1. 2 De taal C Declaraties Functies In- en uitvoer Voorwaardelijke opdrachten 41

Arduino CURSUS. door Willy - 09-juni-2017

212 Generieke IO De generieke IO als ingang gebruiken

De Arduino-microcontroller in de motorvoertuigentechniek (4)

Java. Basissyllabus. Egon Pas

continue in een for, while of do lus herhaalt de lus vroegtijdig. De volgende herhaling wordt onmiddellijk begonnen.

int main() { int m; m = power(2,3) /* berekent 2^3 en geeft de resultaat naar m terug */ }

Wat is Arduino? Arduino = microprocessor (Atmel)

Microcontrollers. en de taal C. Wim Dolman. vierde druk

Digitale technieken Microprocessoren

15.8 De generieke IO als ingang gebruiken

Javascript oefenblad 1

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,

Voorwoord Inleiding tot de microcontrollertechniek Toepassingsgebieden van microcontrollers 14

Een korte samenvatting van enkele FORTRAN opdrachten

Microcontrollers Introductie INLMIC Jesse op den Brouw INLMIC/

Arduino. HCC Vlaanderen - Mechelen 7 februari Luc De Cock

Wat is een busverbinding?

Debugging in embedded en native systemen met GDB

Tentamen Programmeren in C (EE1400)

Microcontrollers Week 1 Introductie microcontroller Jesse op den Brouw INLMIC/

Week 2 : Hoofdstukken 2 en 6; extra stof: inleiding pointers

Tentamen Programmeren in C (EE1400)

De Arduino-microcontroller in de motorvoertuigentechniek (2)

Objective-C Basis. 23 april 2005, Eindhoven Patrick Machielse

Programmeren in C++ (deel 1)

Syntax- (compile), runtime- en logische fouten Binaire operatoren

UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS

Arduino Zuid-Limburg Workshop 2

LabVIEW 8.5. Voor beginners. Adriaan Brebels

Programmeren in Java les 3

EmSE presentatie. Starten met de ATtiny2313: Een RGB powerled driver Kees Moerman, 13 juli 2010

Projectwerk microcontrollers:

MICPRG 15 januari Toets: Theorie:

Toets In2305-ii Embedded Programming Dinsdag 28 November 2006, 15:45-16:30

Vakgroep CW KAHO Sint-Lieven

ES1 Project 1: Microcontrollers

EE1400: Programmeren in C BSc. EE, 1e jaar, , 2e college

Hoofdstuk 19. Embedded systemen

Peripheral Interface Controllers. BRAC clubavond PE2WDO

18 Embedded systemen 1

Inleiding microcontrollers. Week 1 Introductie microcontroller Jesse op den Brouw (met dank aan Ben Kuiper) INLMIC/

4 Invoer en uitvoer. 4.1 Toegang tot de standaardbibliotheek

De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (4)

Presentatie op bijeenkomst van EmSE: Embedded Systems Eindhoven

De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (2)

De Arduino-microcontroller in de motorvoertuigentechniek (3)

Instructies en blokken

2 Algemene opbouw van een computersysteem

Jörg R. Hörandel Afdeling Sterrenkunde

Vogelaar Electronics DRAFT DelphiStamp VE08201

Index. Symbolen. , 151 versus ", 152

DDS chips. DDS = Direct Digital (frequency) Synthesis. Output = sinusvormig signaal. Maximum frequentie = ½ klokfrequentie

SYNTRA-WEST. Initiatiecursus JAVA. Deel

Accelerometer project 2010 Microcontroller printje op basis van de NXP-LPC2368

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:

De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (3)

Arrays. Complexe datastructuren. Waarom arrays. Geen stijlvol programma:

Microcontrollers. Robert Langenhuysen, PA0RYL

Inhoud Auteurs IV Woord vooraf V

Tweede workshop Arduino

Seriële bluetooth verbinding ATmega128

Microcontrollers Labo

Hoofdstuk 7. Computerarchitectuur

Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie

Interface Technieken. Roggemans M. 2012

Microcontrollers Week 2 Opbouw ATmega32 controller, instructies Jesse op den Brouw INLMIC/

6,1. Samenvatting door een scholier 1809 woorden 28 oktober keer beoordeeld. Informatica

INHOUD. Over de auteur... 5 Over de technisch beoordelaar... 5 DANKWOORD 13 INLEIDING 15

A Quick Start Guide: AVR programmeren

Microcontrollers. Bart Kardinaal E Verslag microcontrollers Rev 1.0 Status definitief.

Een typisch programma in C en C++ bestaat uit een aantal onderdelen:

, 80, 81, 107, 115, 125

Lab Webdesign: Javascript 3 maart 2008

Inhoud. VBA Excel 2010

Jörg R. Hörandel Afdeling Sterrenkunde

Inleiding microcontrollers. Week 2 Introductie microcontroller Jesse op den Brouw (met dank aan Ben Kuiper) INLMIC/

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

VAN HET PROGRAMMEREN. Inleiding

VAN HET PROGRAMMEREN. Inleiding. Het spiraalmodel. De programmeertaal. vervolgens de berekening van het totale bedrag, incl. BTW:

Tentamen Programmeren in C (EE1400)

Hoofdstuk 1 Inleiding PHP 7 of ouder Hoe dit boek werkt 2

PROS1E1 Gestructureerd programmeren in C Dd/Kf/Bd

Oefening 1 - Seriële communicatie via USB

Index. Symbolen. , 108 _BV, bitvalue, 208

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Microcontrollers based microcontroller ADuC832 from Analog Devices. 12/2011 Roggemans M. (MGM)

9 Meer over datatypen

EM2 Microcontroller Project. LED cube

4EE11 Project Programmeren voor W. College 2, , Blok D Tom Verhoeff, Software Engineering & Technology, TU/e

Interfacetechnieken Studiehandleiding

EE1400: Programmeren in C BSc. EE, 1e jaar, , 3e college

Jochen Mariën september 2013

1 Inleiding Installatie 21. WAMP met Apache Friends 23. XAMPP starten en controleren 26. LAMP 32 De installatie ongedaan maken 33

In- en uitgangssignalen van microprocessoren

Arduino : Morse Voltmeter

Blog-Het gebruik van variabelen in Excel VBA

delay(1000); // Eén seconde pauze digitalwrite(pin, LOW); // zet 'pin' uit delay(1000); // Eén seconde pauze }

Transcriptie:

Inhoud 1 De Microcontroller 1 1.1 Embedded Systemen............................ 1 1.2 De architectuur van de microprocessor en de microcontroller. 4 1.3 Geheugens en geheugenstructuur................... 6 1.4 Harvard-architectuur........................... 7 1.5 RISC en CISC................................ 8 1.6 De keuze voor een microcontroller.................. 9 2 De taal C 11 2.1 Hello World................................. 12 2.2 Het compilatietraject........................... 14 2.3 Compilers.................................. 16 2.4 Foutmeldingen............................... 17 3 C in het kort 19 3.1 Variabelen, declaraties en initialisatie................. 20 3.2 Datatypen.................................. 22 3.3 Samengestelde datatypen: arrays en strings............. 23 3.4 Rekenkundige bewerkingen....................... 24 3.5 Afdrukken.................................. 25 3.6 Voorwaardelijke opdrachten....................... 25 3.7 Herhalingsopdrachten........................... 27 3.8 Voorbeelden................................. 28 4 Functies 31 4.1 Verdeel en heers............................... 32 4.2 De opbouw van een functie....................... 34 4.3 Formele en actuele parameters..................... 38 4.4 De scope van functies en variabelen.................. 38 4.5 Call by reference.............................. 40 4.6 Blokschema s, stroomdiagrammen, pseudocode en algoritmes. 41 4.7 Voorbeeld: cijferprogramma....................... 44 4.8 Het verschil tussen == en =........................ 47 4.9 Functies en programmeervaardigheden................ 48

vi 5 In- en uitvoer 49 5.1 Geformatteerde uitvoer.......................... 50 5.2 Geformatteerde invoer.......................... 52 5.3 Voorbeeld: invoer gegevens cijferprogramma............ 54 5.4 Ongeformatteerde in- en uitvoer.................... 55 5.5 Alternatief voor het invoerprobleem................. 58 5.6 Argumenten doorgeven aan een programma............ 59 5.7 Declaratie en het gebruik van strings................. 62 6 Voorwaardelijke opdrachten 67 6.1 Het if-statement: de if-vorm....................... 68 6.2 De bloktoewijzing............................. 69 6.3 Het if-statement: de if-else vorm.................... 70 6.4 Het nesten van if-statements....................... 70 6.5 Het if-statement: de if-else-if vorm................... 72 6.6 Het switch-statement........................... 72 6.7 Definities en macro s........................... 77 6.8 De conditionele operator......................... 80 7 Herhalingsopdrachten 81 7.1 De for-lus................................... 81 7.2 De komma-operator............................ 84 7.3 De while-lus................................. 84 7.4 De do-while-lus of do-lus......................... 85 7.5 Het break-statement en het continue-statement.......... 86 8 Structuur en Opmaak 89 8.1 Commentaar................................. 90 8.2 Opmaak.................................... 91 8.3 Naamgeving................................. 93 9 Datatypen en Operatoren 95 9.1 Gehele getallen............................... 96 9.2 Typecasting bij gehele getallen..................... 97 9.3 Gebroken getallen............................. 100 9.4 Typecasting bij gebroken getallen................... 101 9.5 Constanten bij gebroken getallen................... 103 9.6 Hexadecimaal, octaal en binair..................... 104 9.7 Rekenkundige operatoren........................ 105 9.8 Het karaktertype char en de speciale karakters........... 106 9.9 Boolean.................................... 107 9.10 De relationele bewerkingen....................... 107 9.11 Logische operatoren............................ 108 9.12 Bitbewerkingen............................... 108 9.13 Verkorte schrijfwijze bij toekenningen................ 109 9.14 Bewerkingsvolgorde operatoren.................... 110 9.15 Voorbeeld: afdrukken binaire waarden................ 112 9.16 Meer over operatoren, datatypen en declaraties.......... 113

vii 10 Arrays 119 10.1 De getallen van Fibonacci en de Gulden Snede........... 119 10.2 Berekenen getallen van Fibonacci en de Gulden Snede...... 121 10.3 Declaraties van arrays........................... 122 10.4 Toewijzingen bij arrays.......................... 123 10.5 Lezen buiten het bereik van een array................ 123 10.6 Schrijven buiten het bereik van een array.............. 124 10.7 Meerdimensionale arrays......................... 124 10.8 De driehoek van Pascal.......................... 127 10.9 Berekening driehoek van Pascal en getallen van Fibonacci... 127 10.10 Dynamische geheugenallocatie..................... 130 11 Pointers 131 11.1 Declaraties van pointers......................... 132 11.2 Toewijzingen met pointers........................ 132 11.3 Rekenen met pointers........................... 133 11.4 Fouten met pointers............................ 134 11.5 Getallen van Fibonacci en Gulden Snede met pointers...... 135 11.6 Toepassingen pointers........................... 138 11.7 Voorbeelden met pointers........................ 139 11.8 Dynamische geheugenallocatie bij eendimensionale arrays... 141 11.9 VLA: variable length array........................ 142 11.10 Dynamische geheugenallocatie bij tweedimensionale arrays.. 144 12 Strings 151 12.1 Declaratie van en toekenningen aan strings............. 152 12.2 Op veilige wijze strings gebruiken................... 154 12.3 Stringfuncties................................ 155 12.4 Array van strings.............................. 157 13 Advanced C 159 13.1 Lezen en schrijven naar bestanden................... 159 13.2 Recursie.................................... 168 13.3 Pointers naar functies........................... 176 13.4 Samengestelde datatypes......................... 177 13.5 Datastructuren............................... 181 13.6 Functies met een variabele argumentenlijst............. 185 13.7 Preprocessoropdrachten of compiler directives........... 186 14 De Xmega 189 14.1 De opbouw van de Xmega........................ 190 14.2 De behuizing van de Xmega....................... 193 14.3 De geheugenorganisatie bij de Xmega................. 194 14.4 De systeemklok en klokopties..................... 196 14.5 Het programmeren van de Xmega................... 197 14.6 De ontwikkelomgeving voor de Xmega............... 198

viii 15 Generieke IO 199 15.1 De schakeling voor Led Blink...................... 201 15.2 De software voor Led Blink....................... 201 15.3 De generieke IO van de Xmega..................... 202 15.4 De organisatie van de registers bij de Xmega: de Xmega-stijl.. 205 15.5 De registers bij de verouderde ATmega-stijl............. 207 15.6 Bitbewerkingen en de read-write-modify-methode......... 208 15.7 Vertragingstijden en de macrodefinitie F_CPU............ 212 15.8 De generieke IO als ingang gebruiken................ 213 15.9 Het aan- en uitzetten van een led met een drukknop....... 214 15.10 Contactdender............................... 215 15.11 Hardwarematige antidendermaatregelen............... 216 15.12 Softwarematige antidendermaatregelen................ 217 16 Interrupts 221 16.1 Het interruptmechanisme........................ 222 16.2 De interrupts en het interruptmechanisme bij de Xmega.... 223 16.3 Een voorbeeld met externe interrupt 0................ 224 16.4 Timer/counters............................... 229 16.5 Een tijdvertraging maken met een timer/counter......... 232 16.6 Een antidenderalgoritme met een externe interrupt en TCE0.. 237 16.7 Groepsconfiguratie, groepsmasker, groepspositie, bitmasker en bitpositie................................... 239 17 Displays 243 17.1 De ledbar................................... 244 17.2 Aansturing leds............................... 250 17.3 Een tweedimensionale ledarray of dotmatrix............ 251 17.4 Cijfers afbeelden op een dotmatrix.................. 253 17.5 Cijfers afbeelden op een dotmatrix met interrupt en timer... 255 17.6 Cijfers afbeelden op een dotmatrix met de gegevens in flash.. 258 17.7 Een 4-digit 7-segmentdisplay aansturen................ 260 17.8 Het uitlezen van zes drukknoppen.................. 263 17.9 Conclusie................................... 266 18 Liquid Crystal Display 267 18.1 Het aansluiten van een HD44780 op de Xmega.......... 268 18.2 Het karaktergeoriënteerde display op basis van HD44780.... 270 18.3 Toepassing LCD met 8-bit modus en tijdvertraging........ 277 18.4 Toepassing met bewegende tekst.................... 279 18.5 Toepassing LCD met 4-bit modus en busy flag........... 280 18.6 Toepassing met een LCD-bibliotheek................. 283 18.7 Geformatteerd afdrukken op een LCD................ 286 18.8 Het weergeven van gebroken getallen op een LCD........ 287

ix 19 UART 291 19.1 Opbouw USART en het instellen van baudsnelheid....... 293 19.2 Instelling protocol............................. 296 19.3 Ontvangen en verzenden van data................... 297 19.4 Het versturen van karakters via USART1 van poort D..... 298 19.5 Het ontvangen, converteren en versturen van karakters..... 300 19.6 Toepassing met gebruik van een interrupt.............. 301 19.7 Het gebruik van een circulaire buffer................. 303 19.8 Circulaire buffers bij de communicatie met een UART..... 305 19.9 De USART-driver van Atmel en een bijbehorende wrapper.. 307 19.10 Het versturen van getallen via de UART............... 314 19.11 Het creëren van een stream voor printf en scanf.......... 314 19.12 Een vaste stream voor USART0 van poort F............ 319 20 Analog-to-Digital Converter 323 20.1 Analoog-digitaalconversie........................ 324 20.2 De opbouw van de ADC bij de Xmega................ 327 20.3 De conversiemethoden.......................... 333 20.4 Fouten bij AD-conversie......................... 335 20.5 Toepassing: handmatige unsigned single-ended conversie.... 337 20.6 Toepassing: handmatige signed single-ended conversie....... 341 20.7 Toepassing: handmatige conversie met differentiële modus... 344 20.8 Toepassing: differentiële conversie met behulp van een interrupt 345 20.9 Toepassing: differentiële conversie op vaste tijdstippen...... 347 20.10 Toepassing: differentiële conversie in de freerunningmodus.. 351 20.11 Kalibratie van de ADC.......................... 351 20.12 Resumé ADC................................ 352 21 Seriële communicatie 353 21.1 SPI....................................... 354 21.2 Toepassing: aansturing van een extern EEPROM via de SPI.. 357 21.3 Toepassing: aansturing van een schuifregister via een SPI.... 359 21.4 De USART als SPI............................. 362 21.5 I2C....................................... 364 21.6 I2C of TWI voor de Xmega....................... 366 21.7 Eenvoudige I2C-bibliotheek voor de Xmega in mastermodus. 367 21.8 Toepassing: eenvoudige I2C-bibliotheek bij een DS3232..... 370 21.9 Levelshifting voor I2C.......................... 374 21.10 De TWI-masterdriver van Atmel.................... 375 21.11 De TWI-slavedriver van Atmel..................... 378 21.12 Resumé TWI................................ 382 22 Pulsbreedtemodulatie 383 22.1 De timer/counters van de Xmega................... 385 22.2 Bespreking PWM-mogelijkheden................... 387 22.3 De single-slope-modus: intensiteitsregeling voor een led..... 394 22.4 De single-slope-modus: intensiteitsregeling voor een rgb-led.. 395 22.5 De dual-slope-modus: een robotwagen met DC-motoren.... 397

x 22.6 De dual-slope-modus: aansturing servomotor........... 401 22.7 AWeX: advanced waveform extension................ 403 22.8 De frequentiemodus: het afspelen van muziek........... 404 23 Nog meer Xmega 409 23.1 Digitaal-analoogconverter........................ 410 23.2 Direct Memory Access.......................... 415 23.3 Analoge comparator............................ 420 23.4 Input capture................................ 427 23.5 Het kloksysteem van de Xmega.................... 435 23.6 De realtime-counter............................ 439 23.7 Het EEPROM................................ 441 23.8 Flash...................................... 445 23.9 De slaapstanden............................... 448 23.10 De mogelijkheden om de Xmega256a3u te herstarten...... 451 23.11 Watchdog................................... 452 23.12 Het atomic block.............................. 455 Bijlagen A Stroomdiagrammen 457 B RS232 463 C JTAG 469 D SD-kaart 473 E Draadloze module 479 F CMOS 489 G Headerbestanden 503 H Application notes 511 I ASCII 513 J Xmega-bord 515 Index 519