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

Java. Basissyllabus. Egon Pas

212 Generieke IO De generieke IO als ingang gebruiken

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 */ }

Javascript oefenblad 1

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

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

De Arduino-microcontroller in de motorvoertuigentechniek (4)

15.8 De generieke IO als ingang gebruiken

Een korte samenvatting van enkele FORTRAN opdrachten

Voorwoord Inleiding tot de microcontrollertechniek Toepassingsgebieden van microcontrollers 14

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

Wat is Arduino? Arduino = microprocessor (Atmel)

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

Tentamen Programmeren in C (EE1400)

Arduino. HCC Vlaanderen - Mechelen 7 februari Luc De Cock

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

Tentamen Programmeren in C (EE1400)

Debugging in embedded en native systemen met GDB

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

Microcontrollers Week 1 Introductie microcontroller Jesse op den Brouw INLMIC/

Programmeren in Java les 3

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

Programmeren in C++ (deel 1)

Digitale technieken Microprocessoren

Microcontrollers Introductie INLMIC Jesse op den Brouw INLMIC/

Index. Symbolen. , 108 _BV, bitvalue, 208

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

UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS

Arduino Zuid-Limburg Workshop 2

Peripheral Interface Controllers. BRAC clubavond PE2WDO

Index. Symbolen. , 151 versus ", 152

Projectwerk microcontrollers:

Hoofdstuk 19. Embedded systemen

Wat is een busverbinding?

18 Embedded systemen 1

, 80, 81, 107, 115, 125

MICPRG 15 januari Toets: Theorie:

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

Presentatie op bijeenkomst van EmSE: Embedded Systems Eindhoven

Vakgroep CW KAHO Sint-Lieven

Jörg R. Hörandel Afdeling Sterrenkunde

4 Invoer en uitvoer. 4.1 Toegang tot de standaardbibliotheek

De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (4)

Instructies en blokken

De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (3)

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

De Arduino-microcontroller in de motorvoertuigentechniek (3)

ES1 Project 1: Microcontrollers

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

De Arduino-microcontroller in de motorvoertuigentechniek (2)

Interface Technieken. Roggemans M. 2012

LabVIEW 8.5. Voor beginners. Adriaan Brebels

VAN HET PROGRAMMEREN. Inleiding

Tentamen Programmeren in C (EE1400)

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

Labo digitale technieken

De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (2)

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

SYNTRA-WEST. Initiatiecursus JAVA. Deel

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

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

Vogelaar Electronics DRAFT DelphiStamp VE08201

Hoofdstuk 4. Digitale techniek

Inductiemeter via de parallelle poort

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

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

2 Algemene opbouw van een computersysteem

Inhoud Auteurs IV Woord vooraf V

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

17 Operaties op bits Bitoperatoren en bitexpressies

Lab Webdesign: Javascript 3 maart 2008

Arduino Programmeer handleiding

Jörg R. Hörandel Afdeling Sterrenkunde

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

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Tweede workshop Arduino

PROS1E1 Gestructureerd programmeren in C Dd/Kf/Bd

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

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

Arduino. projecten voor gevorderden. Dr. Günter Spanner. Elektor International Media BV postbus ZG Susteren

Multiplexers en demultiplexers MULTIPLEXERS

9 Meer over datatypen

In- en uitgangssignalen van microprocessoren

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

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

Interfacetechnieken Studiehandleiding

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

Lab Webdesign: Javascript 11 februari 2008

Hoofdstuk 7: Werken met arrays

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

Programmeermethoden. Recursie. week 11: november kosterswa/pm/

Zelftest Inleiding Programmeren

Inleiding Digitale Techniek. Week 7 Schuifregisters Jesse op den Brouw INLDIG/

EM2 Microcontroller Project. LED cube

Programmeren en programmeertalen - 3

Vragen deel 0. Wat moet je kennen/kunnen na dit deel? Begrippen verklaren en uitleggen:

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 generieke IO van de Xmega..................... 201 15.3 De software voor Led Blink....................... 204 15.4 Led Blink met _delay_ms......................... 205 15.5 Bitbewerkingen............................... 207 15.6 Led Blink in de Xmega-stijl....................... 209 15.7 De generieke IO als ingang gebruiken................ 212 15.8 Het aan- en uitzetten van een led met een drukknop....... 213 15.9 Contactdender............................... 214 15.10 Hardwarematige antidendermaatregelen............... 215 15.11 Softwarematige antidendermaatregelen................ 216 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 TCC0.. 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 Analog-to-Digital Converter 291 19.1 Analoog-digitaalconversie........................ 292 19.2 De opbouw van de ADC bij de Xmega................ 295 19.3 De conversiemethoden.......................... 301 19.4 Fouten bij AD-conversie......................... 303 19.5 Toepassing: handmatige unsigned single ended conversie.... 305 19.6 Toepassing: handmatige signed single ended conversie...... 309 19.7 Toepassing: handmatige conversie met differentiële modus... 311 19.8 Toepassing: differentiële conversie met een interrupt....... 313 19.9 Toepassing: differentiële conversie op vaste tijdstippen...... 313 19.10 Toepassing: differentiële conversie in de freerunningmodus.. 316 19.11 Kalibratie van de ADC.......................... 318 19.12 Resumé ADC................................ 318 20 UART 321 20.1 Opbouw USART en het instellen van baudsnelheid....... 323 20.2 Instelling protocol............................. 326 20.3 Ontvangen en verzenden van data................... 327 20.4 Het versturen van karakters via de UART.............. 327 20.5 Het ontvangen, converteren en versturen van karakters..... 330 20.6 Toepassing met gebruik van een interrupt.............. 331 20.7 Het gebruik van een circulaire buffer................. 333 20.8 Circulaire buffers bij de communicatie met een UART..... 335 20.9 De USART-driver van Atmel en een bijbehorende wrapper.. 337 20.10 Het versturen van getallen via de UART............... 344 20.11 Het creëren van een stream voor printf en scanf.......... 344 21 Seriële communicatie 349 21.1 SPI....................................... 350 21.2 Toepassing: aansturing van een extern EEPROM via de SPI.. 353 21.3 Toepassing: aansturing van een schuifregister via een SPI.... 355 21.4 De USART als SPI............................. 358 21.5 I2C....................................... 360 21.6 I2C of TWI voor de Xmega....................... 362 21.7 Eenvoudige I2C-bibliotheek voor de Xmega in mastermodus. 363 21.8 Toepassing: eenvoudige I2C-bibliotheek bij een DS3232..... 366 21.9 Levelshifting voor I2C.......................... 370 21.10 De TWI-masterdriver van Atmel.................... 371 21.11 De TWI-slavedriver van Atmel..................... 374 21.12 Resumé TWI................................ 378 22 Pulsbreedtemodulatie 379 22.1 De timer/counters van de Xmega................... 381 22.2 Bespreking PWM-mogelijkheden................... 383 22.3 De single-slope-modus: intensiteitsregeling voor een led..... 390 22.4 De single-slope-modus: intensiteitsregeling voor een rgb-led.. 391 22.5 De dual-slope-modus: een robotwagen met DC-motoren.... 393 22.6 De dual-slope-modus: aansturing servomotor........... 397

x 22.7 AWeX: advanced waveform extension................ 399 22.8 De frequentiemodus: het afspelen van muziek........... 400 23 Nog meer Xmega 405 23.1 Digitaal-analoogconverter........................ 406 23.2 Analoge comparator............................ 410 23.3 Input capture................................ 417 23.4 Het kloksysteem van de Xmega.................... 425 23.5 De realtime-counter............................ 428 23.6 Het EEPROM................................ 430 23.7 De slaapstanden............................... 434 23.8 De mogelijkheden om de Xmega128a4u te herstarten...... 437 23.9 Watchdog................................... 438 23.10 Het atomic block.............................. 441 Bijlagen A Stroomdiagrammen 443 A.1 Symbolen voor een stroomdiagram.................. 444 A.2 Programmacode representeren met flowcharts........... 445 B RS232 449 C JTAG 455 D CMOS 459 D.1 De MOS-transistor als schakelaar................... 459 D.2 De CMOS-inverter............................. 460 D.3 CMOS-logica................................ 461 D.4 De D-latch.................................. 462 D.5 De D-flipflop................................. 464 D.6 De tristatebuffer en de tristate-inverter................ 466 D.7 De transmissiepoort............................ 468 D.8 De pulluptransistor en de pulldowntransistor........... 470 D.9 De schmitttrigger.............................. 471 E Headerbestanden 473 F Application notes 481 G ASCII 483 H Xmega-bord 485 Index 487