Index [] · ADC, zie Analog-to-Digital Converter, en ook Xmega ADC conversietijd,332 opbouw...

16
Index Symbolen !, 108 !=, 26, 103, 107 ", 13, 37, 151 " versus ´, 152 #, flag, 51, 105, 288, zie ook format specifier #, operator, 187 ##, operator, 187 %, format specifier, zie format specifier %, modulus, 24, 28, 261, zie ook rekenkundige bewerking %=, 110 &, adres, 41, 54, 131, 132, 315, 316, 318, 396 &, bitsgewijze EN, 41, 108, 113, 241 &&, 108 &=, 110 ´, 151 ´ versus ", 152 * , dereferentie pointer, 41, 133–135, 137, 138, 208 * , plaatsvervanger in format string, 51 * , typedeclaratie pointer, 41, 133 * , vermenigvuldigen, 24, 41 * /, einde commentaarblok, 90 * =, 110, 170 +, flag, 51 +, optellen, 20, 24 ++, 93, 109 +=, 84, 110 ff _ conf.h, 476 ,, zie operator, komma- -, aftrekken, 24 -, flag, 51 --, 109, 170 -=, 110 ->, veld bij pointer naar structuur, 182, 183, 220 ., veld bij structuur, 177, 183 ..., 185 /, delen, 24 / * , start commentaarblok, 90 //, commentaarregel, 90 /=, 110 :, zie ?: ;, 13, 35 <, 26, 107 <<, 109, 113 <<=, 110, 113, 254 <=, 26, 107 =, 20, 47, 63 ==, 25, 26, 103, 107 == versus =, 26 >, 26, 107 >=, 26, 107 >>, 109 >>=, 110 ?:, 80, 87, 106 [], 122, 152, 157, 254, 256, 258 [][], 149 _ BV(), zie bitbewerking \, 50, 79, 106, 360 \", 106 \’, 106 \0, 63, 76, 93, 106, 138, 151, 152, 155, 163, zie ook end-of-string \\, 106 \f, 106 \n, 21, 106, 162, 163, 165, zie ook end-of-line \r, 106 \t, 106 ^, bitsgewijze XOR, 108 ^=, 110 |, bitsgewijze OF, 108, 241 |=, 110 ||, 108 _ BV, bitvalue, 208 __ , 188 __ CYGWIN __ , 465 __ DATE __ , 188 __ FILE __ , 188 __ GNUC __ , 188 __ LINE __ , 188 __ STDC __ , 188 __ TIME __ , 188 __ USE _ MINGW _ ANSI _ STDIO, 52 __ flash, 258, 259, 445, 446 __ progmem __ , 259, 445 _ bp, bitmasker, 210, 239, 240 _ bp, bitpositie, 210, 239 _ gc, groepsconfiguratie, 239, 240 _ gm, groepsmasker, 239, 240 _ gp, groepspositie, 239, 242 ˜, bitsgewijs inverteren, 109, 209, 241, 254 0, flag, 51 0, prefix octaal, 104 0X, prefix hexadecimaal, 104 0x, prefix hexadecimaal, 104 5x7 dotmatrix, zie dotmatrix 7-segmentdisplay, 243, 260–263 74HC595, schuifregister, 355 74hc595, 359 A aansturing DC-motoren, 397–401 aansturing servomotor, 401–403 abs(), zie stdlib-bibliotheek AC-motor, 401 achtergrondverlichting, 270 acos(), zie math-bibliotheek actuator, 323 ADC, zie Analog-to-Digital Converter, en ook Xmega ADC conversietijd, 332 opbouw pipelined, 327 principe pipelined, 326–327 successieve approximatie, 325–326 adres, 41, 54, 135, 137, 206, 208, zie ook geheugenadres adresbus, 7, 497 adresoperator, 41, 54, 131, 132 Advanced Encryption Standard, 192 Advanced RISC Machine, 16 afdrukken conditioneel, 80, 87 geformatteerd, 52, 286–290 afrondingsfout berekening baud rate, 294 afsluitteken, 30 alfanumerieke string omzetten in hexadecimaal getal, 314 omzetten in integer, 60, 286 omzetten in long, 286

Transcript of Index [] · ADC, zie Analog-to-Digital Converter, en ook Xmega ADC conversietijd,332 opbouw...

Page 1: Index [] · ADC, zie Analog-to-Digital Converter, en ook Xmega ADC conversietijd,332 opbouw pipelined,327 principe pipelined,326–327 successieve approximatie,325–326

Index

Symbolen!, 108!=, 26, 103, 107", 13, 37, 151" versus ´, 152#, flag, 51, 105, 288, zie ook format specifier#, operator, 187##, operator, 187%, format specifier, zie format specifier%, modulus, 24, 28, 261, zie ook

rekenkundige bewerking%=, 110&, adres, 41, 54, 131, 132, 315, 316, 318, 396&, bitsgewijze EN, 41, 108, 113, 241&&, 108&=, 110´, 151´ versus ", 152*, dereferentie pointer, 41, 133–135, 137,

138, 208*, plaatsvervanger in format string, 51*, typedeclaratie pointer, 41, 133*, vermenigvuldigen, 24, 41*/, einde commentaarblok, 90*=, 110, 170+, flag, 51+, optellen, 20, 24++, 93, 109+=, 84, 110ff_conf.h, 476,, zie operator, komma--, aftrekken, 24-, flag, 51--, 109, 170-=, 110->, veld bij pointer naar structuur, 182,

183, 220., veld bij structuur, 177, 183..., 185/, delen, 24/*, start commentaarblok, 90//, commentaarregel, 90/=, 110:, zie ?:;, 13, 35

<, 26, 107<<, 109, 113<<=, 110, 113, 254<=, 26, 107=, 20, 47, 63==, 25, 26, 103, 107== versus =, 26>, 26, 107>=, 26, 107>>, 109>>=, 110?:, 80, 87, 106[], 122, 152, 157, 254, 256, 258[][], 149_BV(), zie bitbewerking\, 50, 79, 106, 360\", 106\’, 106\0, 63, 76, 93, 106, 138, 151, 152, 155, 163,

zie ook end-of-string\\, 106\f, 106\n, 21, 106, 162, 163, 165, zie ook

end-of-line\r, 106\t, 106^, bitsgewijze XOR, 108^=, 110|, bitsgewijze OF, 108, 241|=, 110||, 108_BV, bitvalue, 208__, 188__CYGWIN__, 465__DATE__, 188__FILE__, 188__GNUC__, 188__LINE__, 188__STDC__, 188__TIME__, 188__USE_MINGW_ANSI_STDIO, 52__flash, 258, 259, 445, 446__progmem__, 259, 445_bp, bitmasker, 210, 239, 240_bp, bitpositie, 210, 239

_gc, groepsconfiguratie, 239, 240_gm, groepsmasker, 239, 240_gp, groepspositie, 239, 242˜, bitsgewijs inverteren, 109, 209, 241, 2540, flag, 510, prefix octaal, 1040X, prefix hexadecimaal, 1040x, prefix hexadecimaal, 1045x7 dotmatrix, zie dotmatrix7-segmentdisplay, 243, 260–26374HC595, schuifregister, 35574hc595, 359

Aaansturing DC-motoren, 397–401aansturing servomotor, 401–403abs(), zie stdlib-bibliotheekAC-motor, 401achtergrondverlichting, 270acos(), zie math-bibliotheekactuator, 323ADC, zie Analog-to-Digital Converter, en

ook Xmega ADCconversietijd, 332opbouw pipelined, 327principe pipelined, 326–327successieve approximatie, 325–326

adres, 41, 54, 135, 137, 206, 208, zie ookgeheugenadres

adresbus, 7, 497adresoperator, 41, 54, 131, 132Advanced Encryption Standard, 192Advanced RISC Machine, 16afdrukken

conditioneel, 80, 87geformatteerd, 52, 286–290

afrondingsfoutberekening baud rate, 294

afsluitteken, 30alfanumerieke string

omzetten in hexadecimaal getal, 314omzetten in integer, 60, 286omzetten in long, 286

Page 2: Index [] · ADC, zie Analog-to-Digital Converter, en ook Xmega ADC conversietijd,332 opbouw pipelined,327 principe pipelined,326–327 successieve approximatie,325–326

520 Index

omzetten in unsigned integer, 283, 286,289

omzetten in unsigned long, 286, 289algoritme, 41–43

antidender, 217, 237initialisatie LCD, 283quicksort, 171successieve approximatie, 325voor 7-segmentsdisplay, 261voor dotmatrix, 253voor het afspelen van beltonen, 405voor sorteren, 171

ALU, zie Arithmetic Logic UnitAnalog-to-Digital Converter, 5, 192,

323–352, 357, 364, zie Xmega ADC enook analoog-digitaalconversie

analoge comparator, 420–426, zie ookXmega analoge comparatorblokschema, 420principe, 417, 420

analoog-digitaalconversie, 324–326comparator, 325, 332conversietijd, 326, 332DAC, 325differentieel, 329handmatig, single-ended, 337referentiespanning, 325, 331–332sample-and-hold, 332signed single-ended, 329unsigned single-ended, 329

analoog-digitaalconverterconversiemethoden, 333

anode, 252, 270ANSI, 12, 490ANSI C, 12

GNU89, 14, 83, 90GNU99, 83ISO C90, 12–14

appendStud(), 183application notes, 511–512Application Specific Integrated Circuit, 3architectuur

AVR-microcontroller, 7Harvard-, 7, 189microcontroller, 5microprocessor, 4Princeton-, 7von Neumann-, 7Xmega, 191

argc, zie hoofdroutineargument, 25, 68, 77, 78, 157, 161, 177, 185argumentenlijst, 51, 157, 176, 185

variabele, 185–186argv, zie hoofdroutineargv[0], zie hoofdroutineArithmetic Logic Unit, 5ARM, zie Advanced RISC Machinearray, 23–24, 28–30, 66, 119–131, 151

[][], 149[], 122, 152, 157, 254, 256, 258declaratie, 23, 122

dynamisch, 136dynamische declaratie, 141–150gebruik pointers bij, 138index, 123, 125, 126, 129, 138indices bij meerdimensionaal, 125, 126initialisatie, 122lezen buiten bereik van, 123–124meer dimensionale, 124–130schrijven buiten bereik van, 124toewijzing, 23, 123tweedimensionaal, 124, 126, 128, 144,

146–148, 253tweedimensionaal array op basis van

een eendimensionaal array, 146–147tweedimensionaal met pointers,

146–147tweedimensionaal met VLA, 148–150van pointers, 157van strings, 124, 157, 171variable declaratie, 141–150

ASCII, 513ASCII-tabel, 514ASCII-waarde, 22, 87, 96, 124, 275, 314,

513ASIC, zie Application Specific Integrated

Circuitasin(), zie math-bibliotheekasm, 224–226, 264assembler, 3

asm, 224–226, 264nop, 224–226, 264, 274

assembly, 3, 228, 229assert.h, zie standaardbibliotheekassociativiteit, zie voorrangsregelsasynchroon, 292, 463, 496AT25128, serieel EEPROM, 357, 358Atmel AVR, 17, 189Atmel Studio, 9, 17, 198atoi(), zie stdlib-bibliotheekatomic block, 455–456atomic-bibliotheek

ATOMIC_FORCEON, 456ATOMIC_RESTORESTATE, 456ATOMIC_BLOCK(), 456NONATOMIC_FORCEOFF, 456NONATOMIC_RESTORESTATE, 456NONATOMIC_BLOCK(), 456

atomische bewerking, 455attribuut, 259, 445auto, 118register, 118AutoCalibration2M(), 299, 437AutoCalibration32M(), 437AutoCalibrationTosc32M(), 437average((), 185AVR, zie Atmel AVRAVR GNU C-Compiler, 9AVR-bibliotheek

avr/interrupt.h, 224, 257avr/io.h, 114, 205, 239avr/iox256a3u.h, 179, 205, 226, 239

avr/pgmspace.h, 351, 413, 445avr/sleep.h, 449avr/wdt.h, 453util/atomic.h, 455, 456wdt.h, 452

AVR-gcc, 104, 198avr-gcc, zie GNU C-Compiler voor AVRavr-libc bibliotheek, 287, zie ook

AVR-bibliotheek

Bbandgap-referentie, 331, 412, 420basisweerstand, 250baud, 293baud rate, zie RS232Baudot, Emile, 464baudsnelheid, 301, 362BCD, zie Binary Coded Decimalbeeldscherm, 2, 49, 199, 243, 244behuizing, 193

Thin profile plastic Quad Flat Package,193

Very thin Quad Flat No-lead, 193beltoon, 404berekenen faculteit met recursie, 169bestand

einde van, 38, 161, 166–168lezen uit en schrijven naar, 159–168

bestandsgrootte bepalen, 166bestandssysteem, 474–477besturingsopdracht, 67bewerking, 95–110

logische, 5, zie ook logische bewerkingrekenkundige, 5, zie ook rekenkundige

bewerkingrelationele, zie relationele bewerking

Binary Coded Decimal, 370binomium van Newton, 127bipolaire transistor, 251bit banging, 355, 476bit clear, zie bitbewerkingbit set, zie bitbewerkingbit test, zie bitbewerkingbit toggle, zie bitbewerkingbit_is_clear, zie bitbewerkingbit_is_set, zie bitbewerkingbitbewerking, 108–110, 208–211, 254

_BV(), 237bit clear, 205bit set, 205bit toggle, 205bit_is_clear(), 218, 237, 394, 396bit_is_set(), 218, 423, 453bitsgewijs inverteren, 109bitsgewijze EN, 41, 108, 113bitsgewijze OF, 108bitsgewijze XOR, 108loop_until_bit_is_clear(), 220

Page 3: Index [] · ADC, zie Analog-to-Digital Converter, en ook Xmega ADC conversietijd,332 opbouw pipelined,327 principe pipelined,326–327 successieve approximatie,325–326

Index 521

loop_until_bit_is_set(), 220, 394,396

meerdere bits wijzigen, 210naar links schuiven, 109, 113naar rechts schuiven, 109

bitmanipulatie, zie bitbewerkingbitmasker, 210, 239, 240bitmaskeren, 113, 241, 254bitnotatie, zie ook bitbewerkingbitoperator, zie bitbewerkingbitpositie, 210, 239bitsgewijs inverteren, zie bitbewerkingbitsgewijze EN, zie bitbewerkingbitsgewijze OF, zie bitbewerkingbitsgewijze XOR, zie bitbewerkingbitwise, zie bitbewerkingblok, 39, 69blokschema, 41–43bloktoewijzing, 69, 86bloktransfer, 415Bogen, Alf-Egil, 9, 189boolean, 107

FALSE, 107TRUE, 107

boom, 34, 138gebruik pointers bij, 138

boot-loader, 194, 198bootsector, 194bouncing, zie denderboundary scan, zie test, boundary scanbounded-buffer problem, 304broncode, 14, 94brownout, 192brushless DC, 403buffer, 160, 163, 287

circulaire, 303–307fifo-, 304, 479tristate, zie tristatebuffer

build_array(), 144, 146bursttransfer, 415busy flag, 284button_pressed(), 217, 219, 220, 263, 266

met parameters, 219buzzer, 404

magnetische, 404piëzo-elektrische, 404

byte, 22, 272, 297, 304

Ccalc_bscale(), 312calc_bsel(), 312call by reference, 40–41, 54, 131callbackfunctie, 176calloc(), zie geheugenfunctiecapaciteit voor onderdrukken

stoorsignalen, 201car_backward(), 400car_forward(), 400car_left(), 400

car_left_curve(), 400car_stop(), 400case, zie voorwaardelijke opdrachtcat, zie Unix-commandoCCP, zie configuration change protectionceil(), zie math-bibliotheekChan, 475change_case(), 300char, zie datatypecirculaire buffer, zie buffer, circulaireCISC, zie Complex Instruction Set

Computerclassificatie, 118clear_screen(), 319, 373CloseComm(), 466CMOS, 489–502

D-flipflop, 492, 494–496, 499D-latch, 492–496, 499inverter, 490–491logica, 491–492NAND, 491–492NOR, 491–492pulldowntransistor, 500pulluptransistor, 500schmitttrigger, 423, 501–502transmissiepoort, 493–494, 498–500tristate-inverter, 496–498tristatebuffer, 496–499

CMOS-technologie, 489, 491, 502commentaar, 89–90, 94commentaarblok, 90

einde */, 90start /*, 90

commentaarregel, //, 90communicatiefunctie

CreateFile(), 464GetCommState(), 465ReadFile(), 467SetCommState(), 465SetupComm(), 464WriteFile(), 465

comparator, 420compare/capture-blok, 385compilatie, 14compilatietraject, 14–15compiler, 14, 198

cross-, 17, 106, 200native compiler, 16

compiler directive, 186–188, zie ookpreprocessoropdracht

compiler-optie-D, 52-DF_CPU, 212-DF_CPU, 436-Wall, 14, 29, 48, 103-Wl,--stack, 150-Wl,-u,vprintf, 289, 415-c, 15, 37-lm, 106-lprintf_flt, 289, 415-lprintf_min, 289

-o, 12, 15, 28, 29-std, 83

Complementair Metal OxideSemiconductor, 489–502, zie ookCMOS

Complex Instruction Set Computer, 8Complex Programmable Logical Device, 3conditionele toewijzing, zie

voorwaardelijke opdrachtConfig1kHzToscRTC(), 440Config32kHzRTC(), 439, 440Config32MHzClock(), 440Config32MHzClock_Ext16M(), 438configuration change protection, 435const, 114, 173, 254, 259constante, 93, 96, 101, 103–104, 107, 128,

133FLT_MAX, 101FLT_MIN, 101RAND_MAX, 262RANDOM_MAX, 286UINT_MAX, 96, 283UINT_MIN, 96

contactdender, 215–216, zie ook dendercontrastspanning, 271control statements, zie besturingsopdrachtconversiefunctie

atoi(), 59–61, 102, 141dtostre(), 286, 287dtostrf(), 286, 287, 289itoa(), 286, 314ltoa(), 286tolower(), 69, 300toupper(), 69, 165, 300uit ctype.h, 69ultoa(), 286, 289utoa(), 286, 289

conversietijdADC, zie ADC, conversietijd

cos(), zie math-bibliotheekcosh(), zie math-bibliotheekcounter, 192, 229, zie teller en zie ook

Xmega timer/counterCPLD, zie Complex Programmable

Logical Devicecrosscompiler, zie compiler, cross-ctype.h, zie standaardbibliotheekCyclic Redundancy Check, 192Cygwin, 16, 97, 100, 149, 150, 162

DD-flipflop, 492, 494–496, 499, zie ook

CMOSD-latch, 492–496, 499, zie ook CMOSDAC, zie Digital-to-Analog Converter, en

ook Xmega DACdarlingtontransistor, 251Data Encryption Standard, 192databus, 7, 189, 498

Page 4: Index [] · ADC, zie Analog-to-Digital Converter, en ook Xmega ADC conversietijd,332 opbouw pipelined,327 principe pipelined,326–327 successieve approximatie,325–326

522 Index

datageheugen, 5, 6, 195, 416, 417dataregister, 5datastructuur, 138, 181–184, 370, 465, 466

gebruik pointers bij, 138struct, 138, 177, 182, 183, 371

datatype, 22–23, 95–110char, 20, 96, 97double, 22, 100, 101, 103, 106FILE *, zie in- en uitvoerfloat, 22, 100–103float bij kleinere microcontroller, 103float versus double, 104int, 13, 14, 20, 55, 96, 97

bij ATmega 32, 22, 96int16_t, 114int32_t, 114int8_t, 114long, 23, 96, 97long double, 100long long, 113register16_t, 180register32_t, 180register8_t, 179, 180representatie gebroken getallen, 100representatie gehele getallen, 97short, 23, 96signed, 96size_t, 156uint16_t, 114, 283uint32_t, 114uint64_t, 289uint8_t, 114, 220, 283, 284unsigned, 96unsigned int, 97, 286unsigned long, 97, 156, 286, 466unsigned long long, 97, 169

DB9-connector, zie RS232DC-motor, 383, 397–401debouncing, zie dender, anti-debugger, 198, 200decimaal, 104declaratie, 14, 20, 65–66

blok-, 40globale, 38, 89lokaal in for-lus, 83lokale, 40, 83

decrement, 27, 109default, zie voorwaardelijke opdracht#define, 77–80, 89, 91, 93, 106, 107, 186defined, zie voorwaardelijke

preprocessoropdrachtdelay, zie tijdvertragingdemo_ff(), 476, 478dender, 215–216

antidenderalgoritme, 217–220, 237–239antidenderschakeling, 216oorzaken, 215

dereferentie-operator, 133, zie *,dereferentie pointer

DFLL, zie digital frequency locked loopdigitaal-analoogconverter, 410–415

blokschema, 410, 411digital frequency locked loop, 436Digital Signal Processor, 3Digital-to-Analog Converter, 324, 325,

357, 364DIR, zie Xmega ports, DIRDirect Memory Access, 192, 415–419disassembler, 229diskio.c, 476display

grafisch, 243karaktergeoriënteerd, 243

display_level(), 246, 248, 249, 338, 340dissipatie, 9, 448DMA, zie Direct Memory Accessdo while, zie herhalingsopdrachtdotmatrix, 251–259double, zie datatypedraadloze module, 479–488drain, 201, 489driehoek van Pascal, 127–130driver

eeprom_driver.c, 441eeprom_driver.h, 442twi_master_driver.c, 375twi_master_driver.h, 375twi_slave_driver.c, 378twi_slave_driver.h, 378usart_driver.c, 308usart_driver.h, 308

drukknop, 216, 237, 263DS1307, real time clock, 370DS3232, real time clock, 353, 370–374

instellen van tijd, 371uitlezen van tijd, 371

DSP, zie Digital Signal Processordtostre(), zie stdlib-bibliotheekdtostrf(), zie stdlib-bibliotheekduty-cycle, 384, 386, 399, 428

bij dual-slope-modus, 393bij single-slope-modus, 391

dynamisch gedissipeerde vermogen, 451dynamische geheugenallocatie, 137,

141–150

Eecho, zie Unix-commandoedge triggered, zie flankgevoeligedge-triggered flipflop, 494éénkanaalsmethode, 411EEPROM, zie Electrical Erasable

Programmable Read Only MemoryIO-mapped, 442–443memory-mapped, 443–445

EEPROM(), 443eeprom-bibliotheek, 441EEPROM_DisableMapping(), 444eeprom_driver.c, 441eeprom_driver.h, 442

EEPROM_EnableMapping(), 443, 444EEPROM_FlushBuffer(), 442EEPROM_ReadByte(), 441, 442EEPROM_WaitForNVM(), 442–444EEPROM_WriteByte(), 441, 442eepromReadBuffer(), 444eepromReadByte(), 442, 443eepromWriteByte(), 442, 443eindconditie

do while, 86for, 82while, 84

Electrical Erasable Programmable ReadOnly Memory, 6, 194, 196, 357, 364,441

Electro Magnetic Compatibility, 201elektromagnetische interferentie, 201#elif, zie voorwaardelijke

preprocessoropdrachtelse, zie voorwaardelijke opdracht#else, zie voorwaardelijke

preprocessoropdrachtembedded software, 2embedded systeem, 1–3, 9EMC, zie Electro Magnetic CompatibilityEMI, zie Electro Magnetic InterferenceemptyBuffer(), 46end-of-line, 161, 163, 317, zie ook \n

<CR>, carriage return, 161<LF>, linefeed, 161Unix, 161verwijderen, 165Windows, 161

end-of-string, 23, 55, 63, 151, 152, 155, 156,283, zie ook \0

#endif, zie voorwaardelijkepreprocessoropdracht

Enhanced Shockburst, 481enum, 107, 114, 116enumeratie, 114–115EOF, 163, 165EPROM, zie Erasable Programmable Read

Only MemoryErasable Programmable Read Only

Memory, 4, 6errno.h, zie standaardbibliotheek#error, 187escape sequence, 21, 107, 514

\’, 106\0, nul, 106\\, backslash, 106\", 106\f, formfeed, 106\n, newline, 106\r, carriage return, 106\t, tab, 106

event-system, 192executable, zie programma, uitvoerbaarexFAT, 474exit_with_message, 186exp(), zie math-bibliotheek

Page 5: Index [] · ADC, zie Analog-to-Digital Converter, en ook Xmega ADC conversietijd,332 opbouw pipelined,327 principe pipelined,326–327 successieve approximatie,325–326

Index 523

exponent, 100extern, 117, 320externe interrupt, 237externe klok, 192, 197externe variabele, 117

FF_CPU, 212, 284, 436Für Elise, 404fabs(), zie math-bibliotheekfac(), 169, 170faculteit, 169fade(), 396fast-PWM, 390, 392FAT, zie File Allocation TableFAT32, 474FatFs, 474–478

diskio.c, 476f_gets(), 476f_write(), 476f_mount(), 476f_open(), 476f_printf(), 476FatFs, 476ff.c, 475ff.h, 476, 478ff_conf.h, 476Fil, 476mmc_avr.c, 476, 478sdmm.c, 476, 478

fclose(), zie in- en uitvoerfunctiefeof(), zie in- en uitvoerfunctieFET, zie Field Effect Transistorff.c, 475ff.h, 476, 478fflush(), zie in- en uitvoerfunctiefgetc(), zie in- en uitvoerfunctiefgets(), zie in- en uitvoerfunctiefib(), 169Fibonacci, 119, 135

berekenen getallen met recursie, 169berekenen getallen van, 121berekenen met pointers, 135–137getallen afbeelden op LCD, 281, 283getallen van, 119–121, 127reeks van, 119, 127

Field Effect Transistor, 398N-channel, 398P-channel, 398

Field Programmable Gate Array, 3fieldwidth, format specifier, 51fifo, 304, 479fifo-buffer, zie buffer, fifo-FILE *, zie in- en uitvoerFile Allocation Table, 474fill_array(), 148flag, format specifier, 51flankgevoelig, 492, 494, 495

flash, 4, 6, 190, 194, 258, 259, 357, 364,441, 445–448__flash, 258, 259, 445, 446

flipflop, 202, 469, zie ook D-flipflopfloat, zie datatypeFLoating Point Operations Per Seconde, 4floats.h, zie standaardbibliotheekfloor(), zie math-bibliotheekFLOPS, zie FLoating Point Operations

Per Secondeflowchart, 42, 458fopen(), zie in- en uitvoerfunctiefor, zie herhalingsopdrachtformat specifier, 20, 25, 54, 286, 288

%S, 447%c, 50, 104%d, 50, 103, 104%e, 50, 286, 288%f, 50, 103, 286, 288%g, 50, 286, 288%o, 50, 104%s, 50, 54%x, 50, 104bij microcontrollers, 51, 286optie

fieldwidth, 51flag, 51modifier, 51precision, 51

format string, 20, 21fouten

afvangen, 60, 61compilatie-, 17, 63, 83linker-, 17runtime-, 17, 61, 63–66

FPGA, zie Field Programmable GateArray

fprintf(), zie in- en uitvoerfunctiefputc(), zie in- en uitvoerfunctiefputs(), zie in- en uitvoerfunctiefread(), zie in- en uitvoerfunctiefree(), zie geheugenfunctiefreeStuds(), 183frequentie, 404

bij dual-slope-modus, 393bij frequentiemodus, 390bij normale modus, zie periodetijd bij

normale modusbij single-slope-modus, 391

frequentiemeting, 427fscanf(), zie in- en uitvoerfunctiefseek(), zie in- en uitvoerfunctieFSM, finite state machine, zie

toestandsmachineftell(), zie in- en uitvoerfunctiefullduplex, 463functie, 31–37

aanroep, 35body, 35, 38definitie, 35, 37gebruik pointers voor uitvoer, 138

header, 35, 37–39met variabele argumentenlijst, 185–186naam, 35parameter, 35, 37prototype, 35, 37, 38, 60, 68, 132, 173returntype, 35

fwrite(), zie in- en uitvoerfunctie

Ggate, 489–490, 499gcc, zie GNU C-Compilergedeelde klok, zie klokdelergedissipeerd vermogen, 451geheeltallig delen, 103geheugen

alloceren, 136geheugenadres, 5, 7geheugenfunctie

calloc(), 136free(), 136, 143malloc(), 116, 132, 136, 141, 144, 146,

148, 154, 167realloc(), 136sizeof(), zie operator

geheugengebruik, 66geheugenruimte

alloceren, 152, 154, 163, 167, 183gemiddelde stroom, 253gereserveerde namen, 94get_age1(), 41get_age2(), 41getallen

binaire, 96drijvende komma, 100, 101, 286gebroken, 100–101, 103–104, 286gebroken bij LCD, 287–290gehele, 96–97, zie ook datatype char,

int, long, signed, unsignedinteger, 96integer bij kleine microcontroller, 22,

96L, suffix long, 168two’s complement representatie, 96UL, suffix unsigned long, 212, 431ULL, suffix unsigned long long, 113zwevende komma, 100

getalrepresentatie, zie getallengetc(), zie in- en uitvoerfunctiegetchar(), zie in- en uitvoerfunctiegetline(), zie in- en uitvoerfunctiegetScore(), 44–47, 54, 58GNU, 16GNU C-Compiler, 14, 16GNU C-Compiler voor AVR, 17, 198

avr-gcc, 198GNU-stijl, 92groepsconfiguratie, 239, 240groepsmasker, 239, 240groepspositie, 239, 242

Page 6: Index [] · ADC, zie Analog-to-Digital Converter, en ook Xmega ADC conversietijd,332 opbouw pipelined,327 principe pipelined,326–327 successieve approximatie,325–326

524 Index

Gulden Snede, 119–121, 135, 287

HH-brug, 383, 397–398halfduplex, 463handshaking, 292Harvard, zie architectuur, Harvard-HD44780, 270–290

4-bit modus, 269, 272, 274, 280–2848-bit modus, 269, 272, 277–280, 284aansluiting, 268–270aansluitingen, 270, 271achtergrondverlichting, 270adressering geheugen, 276bewegende tekst, 279–280busy flag, 269, 275, 280–283CGRAM, 275CGROM, 275clear display, 273communicatie met, 271–273contrast, 271datalijnen, 272, 273DDRAM, 275E-signaal, 273–274, 280enable display/cursor, 273function set, 273geheugens van, 275–276initialisatie 4-bit modus, 279initialisatie 8-bit modus, 277, 279instructieset, 273karakterset, 272, 275, 276move cursor, 273oscillatorfrequentie, 274R/W-signaal, 271, 273, 280, 283read busy flag, 273RS-signaal, 271, 273, 279, 280, 283setuptijd, 273shift display/cursor, 273signaalniveaus, 268tijdskarakteristieken, 273, 274timing bij, 273–275VEE, contrastspanning, 271write character, 273

headerbestand, 13, 36, 183, 503–509eigen bestand, 13, 183systeembestand, 13

heap, 65, 142, 147, 150Hello World, 12–14hergebruik van code, 33herhalingsopdracht, 27, 42, 81–86

do while, 81, 85–86, 460for, 27–29, 81–84, 86, 461while, 27, 30, 81, 84–85, 460

hex-bestand, 198hex-code, 198, 303hexadecimaal, 104, 314, 315hiërarchie, 34holdtijd, 495, 496hoofdprogramma, 221, 228, zie main

hoofdroutine, 11, 13, 31, 38, 59, 61, 89, zieook main

argc, 59, 60argv, 59, 60, 68, 157argv[0], 60, 61, 157char**, 158main, 13, 38, 59, 61, 89return, 13, 61

hyperterminal, 299, 317hysterese, 423–426hystereselus, 424hysteresespanning, 424

II2C-bibliotheek met TWI-drivers Atmel,

375–382I2C-bibliotheek op basis van TWI_t,

367–374I2C-interface, 192, 353, 354, 364–382

ACK-bit, 365bij DS3232 real time clock, 370–374bit rate, 369identificatiecode, 364levelshifting, 374–375master, 364protocol ontvangen data, 365–366protocol versturen data, 365schrijf/leesbit, 365SCL, kloklijn, 364SDA, datalijn, 364slave, 364slave-adres, 364startconditie, 365stopconditie, 365verschil met SPI, 364versturen 0, 365versturen 1, 365

i2c.c, 368i2c.h, 368, 369i2c_init(), 368, 369, 373i2c_read(), 368, 369, 371i2c_restart(), 367–369, 371i2c_start(), 368, 369, 371i2c_stop(), 367–369, 371i2c_write(), 368, 369, 371IEC, 490, zie International

Electrotechnical Commission617-12: 1991, 490

IEEE, 100, 469, 490754 SinglePrecision Format, 100JTAG 1149.1, 469Std 91-1984, 490Std 91a-1991, 490

if, zie voorwaardelijke opdracht#if, zie voorwaardelijke

preprocessoropdrachtif-else-if, zie voorwaardelijke opdrachtOUT, zie Xmega ports, INin- en uitvoer

binary, 161EOF, 163, 165FILE *, 160, 315, 318FILE-structuur, 315, 317filepointer, 161, 162, 165lezen en schrijven bij bestanden, 162lezen uit bestand, 163mode, 161stderr, 141, 144, 186stdin, 116, 162, 165, 286, 316, 317, 322stdout, 162, 166, 286, 315–317, 322text, 161

in- en uitvoerfunctie, 162–163f_gets(), 476f_write(), 476f_mount(), 476f_open(), 476f_printf(), 476fclose(), 160, 162, 465FDEV_SETUP_STREAM(), 315, 316, 318,

321feof(), 166flush(), 57, 467fgetc(), 55, 162, 163, 165–166, 315fputc(), 162fgets(), 58, 116, 162–165fputs(), 162fopen(), 138, 160, 161, 464fprintf(), 162, 317fputc(), 56, 166, 315fread(), 162, 163, 166–168fwrite(), 162fscanf(), 160–163, 317fseek(), 166, 167ftell(), 166, 168getc(), 55, 166getchar(), 55, 56, 97, 166getline(), 319getline(), 163pgm_read_byte(), 446, 448pgm_read_byte_far(), 448pgm_read_byte_near(), 448pgm_read_dword(), 446pgm_read_word(), 446printf(), 13, 14, 20, 55, 162, 286, 288,

314printf, 315, 316printf_P(), 446putc(), 56, 166putchar(), 55, 56, 166puts(), 55, 56puts_P(), 446rewind(), 166, 168scanf(), 54, 138, 162, 314scanf, 315, 316setbuf(), 468sprintf(), 286, 287sscanf(), 58ungetc(), 166vfprintf(), 186, 289, 415

in-system programming, 197

Page 7: Index [] · ADC, zie Analog-to-Digital Converter, en ook Xmega ADC conversietijd,332 opbouw pipelined,327 principe pipelined,326–327 successieve approximatie,325–326

Index 525

#include, 13, 37, 89, 91, 186increment, 27, 109indirectie-operator, 133, zie *, dereferentie

pointerIndustrial, Scientific and Medical, 479info, zie Unix-commandoinfrarood communicatie, 192inhoud van pointer, 133, 135, 137, 208, zie

ook *, dereferentie pointerinit_motor(), 400init_ac(), 422, 424, 426init_adc(), 338, 340, 342, 346, 348, 350,

414, 485init_clock(), 438, 476, 478init_dac(), 419init_dma(), 419init_inputcapture(), 428, 431, 432, 434init_ledbar(), 338, 340init_nrf(), 484, 485init_pwm(), 428, 486, 487init_rtc(), 440init_stream(), 319–321, 373, 476, 478init_dac(), 419init_timer(), 348, 350, 455init_timer(), 478init_uart(), 312, 315, 316, 320, 345, 346,

414init_uart_bscale_bsel(), 298–300, 302,

306initlcd(), 279, 283inline, 361Input/Output, 4, 5inputcapture-modus, 385, 427–434inspringen, 69, 71, 91instructie, 5, 8instructieregister, 5int, zie datatypeinteger, 13, zie datatype char, int, long,

signed, signedintern EEPROM Xmega, 441–445International Electrotechnical

Commission, 491interrupt, 5, 221–239, 255

acties bij aanroep ISR, 228analoge comparator, 423cli(), 226, 456externe, 192, 222inputcapture, 428interne, 222Interrupt Service Routine, 222, 228,

237, 255–257, 259, 266, 302, 305, 307interruptvector, 222, 228overzicht interruptvectoren, 227resetvector, 228sei(), 226, 257, 456timer overflow, 407watchdog reset, 453

Interrupt Service Routine, 222interruptfunctie, 256, 257, 259, 305, 307,

zie ook interrupt, Interrupt ServiceRoutine

interruptmechanisme, 222–223interrupts

asynchrone externe interrupt, 450inverter, 490–491, zie ook CMOSinvoer

geformatteerde, 52–54ongeformatteerde, 55–58

IO, zie Input/OutputIO-mapped, 442–443IO-poort, 202, 203, zie ook Xmega portsIO-register, 195, zie ook Xmega portsisalnum(), zie testfunctieisblank(), zie testfunctieiscntrl(), zie testfunctieisdigit(), zie testfunctieisgraph(), zie testfunctieislower(), zie testfunctieISM, zie Industrial, Scientific and Medicalisprint(), zie testfunctieispunct(), zie testfunctieISR, zie Interrupt Service Routine en zie

ook interruptisspace(), zie testfunctieisupper(), zie testfunctieisxdigit(), zie testfunctieiteratie, 137

do while, 86for, 81, 82, 87while, 84

iteratieve functie, 169, 170iteratieve opdracht, zie herhalingsopdrachtitoa(), zie stdlib-bibliotheek

JJFET, zie Junction Field Effect TransistorJoint Test Action Group, 197, 469–471JTAG, 469, zie ook Joint Test Action

Groupdebuggen via, 471extest, 471intest, 471programmeren via, 471

JTAG-interface, 192, 197, 200TAP-controller, 470TCK, test clock, 470TDI, test data in, 470TDO, test data out, 470TMS, test select mode, 470TRST, test reset, 470

JTAG-programmer, 198Junction Field Effect Transistor, 251, 398,

489

Kkalibratie

ADC, 351–352

DAC, 413oscillator, 436–437

kathode, 252, 270Kernighan, Brian, 12keywords, zie gereserveerde namenklokdeling, 255klokflank, 494, 495klokfrequentie, 229, 255, 274, 294, 332,

495kloksysteem, 435, 438koffiezetten, 42komma-operator, zie operator, komma-KS0066, 268kwadraat, 79, 106

LL, zie getallenlatch, zie ook D-latchlatch_data(), 360, 361LCD, 357, 364, zie Liquid Crystal DisplayLCD gebroken getallen, 287–290LCD-bibliotheek, 283–290

lcd.c, 284lcd.h, 284lcd_clear(), 284, 285, 287, 288lcd_cmd(), 284lcd_data(), 284lcd_gotoxy(), 284, 285, 287, 288lcd_home(), 284lcd_init(), 284, 285lcd_putc(), 284lcd_puts(), 284, 285, 287, 288

lcd4write(), 283lcd_cmd(), 279, 281lcd_fputc(), 318lcd_putc(), 279, 281lcd_puts(), 283lcd_write(), 277led, 200, 201, 216, 243, 270

aansturing, 201, 250–251intensiteitsregeling, 394–395

Led Blink, 201met externe interrupt 0, 225

ledarray, zie dotmatrixledmatrix, 243, zie ook dotmatrixledspanning, 250, 252ledstroom, 250, 252leesbaarheid, 77, 84, 86, 90–92, 107level sensitive, zie niveaugevoeliglevelshifting, 269, 374–375

bij LCD, 269lijst, 138, 183

afdrukken, 184gebruik pointers bij, 138object, 139record, 183toevoegen aan, 183verwijderen, 184

limits.h, zie standaardbibliotheek

Page 8: Index [] · ADC, zie Analog-to-Digital Converter, en ook Xmega ADC conversietijd,332 opbouw pipelined,327 principe pipelined,326–327 successieve approximatie,325–326

526 Index

#line, 187linker, 14, 198linking, 14Liquid Crystal Display, zie ook

HD44780267, zie ook HD44780290LM74, temperatuursensor, 354locale.h, zie standaardbibliotheeklog(), zie math-bibliotheeklog10(), zie math-bibliotheeklogische bewerking, 92, 108

EN, 41, 108NIET, 108OF, 108

long, zie datatypelook-up table, zie ook opzoektabellookup[], opzoektabel, 258, 262, 264lookup[][], opzoektabel, 254, 256loop assignment, zie herhalingsopdrachtloop_until_bit_is_clear, zie

bitbewerkingloop_until_bit_is_set, zie bitbewerkingls, zie Unix-commandoltoa(), zie stdlib-bibliotheekLucebert, 160luidspreker, 404

Mmachinecode, 228, 229macro, 13, 68, 77, 107, 208, 212

__CYGWIN__, 465max, 80, 106min, 80

macrodefinitie, 208, 212, 360main, zie ook hoofdroutinemalloc(), zie geheugenfunctieman, zie Unix-commandomantisse, 100MAPPED_EEPROM_START, 445marking, zie RS232master, 354, 364, 494master-slave flipflop, 494math-bibliotheek

acos(), 105asin(), 105ceil(), 105, 144, 146, 148atan(), 105cos(), 105cosh(), 105exp(), 105fabs(), 105floor(), 105log(), 105log10(), 105pow(), 105round(), 105, 312sin(), 105sinh(), 105tan(), 105tanh(), 105

math.h, zie standaardbibliotheekMAX232, 292, zie RS232MCU, zie microcontroller unitMega Instruction Per Seconde, 4memcpy(), zie stringfunctiememory-mapped, 443–445menselijk oog, 252Metal Oxide Semiconductor, 489Metal Oxide Semiconductor Field Effect

Transistor, 251, 398, 489metastabiel, 495, 496metastabiliteit, 496microcode, 8microcontroller, 2–9, 11, 51, 85, 100, 101,

106, 108, 131, 189–199, 221, 226, 243,244, 263, 272, 277, 323, 325, 463, 489architectuur, 5keuze, 9omzet, 2verschil met microprocessor, 4–5

microprocessor, 3–5, 7, 11, 323architectuur, 4omzet, 2verschil met microcontroller, 4–5

microSD-kaart, 473–478MinGW, 16, 52, 65, 150, 162miniSD-kaart, 473MIPS, zie Mega Instruction Per SecondeMMC-kaart, 473mmc_avr.c, 476, 478MML, zie Music Markup Languagemodifier, format specifier, 51MOS, zie Metal Oxide SemiconductorMOSFET, zie Metal Oxide Semiconductor

Field Effect Transistor, zie Metal OxideSemiconductor Field Effect Transistor

motor_off(), 400motor_on(), 399, 400MPU, zie microprocessor unitMusic Markup Language, 404muziek, 404muziek afspelen, 404–408

Nnaamgeving, 93–94naar links schuiven, zie bitbewerkingnaar rechts schuiven, zie bitbewerkingNAND, zie ook CMOSNassi-Shneiderman diagram, 43nauwkeurigheid

ADC, 324bij format specifier, 51double, 100float, 100long double, 100

neveneffect, 60, 79, 92, 111, 254New Technology File System, 474newStud(), 183NFET, zie Field Effect Transistor

nibble, 272niet-atomische bewerking, 455niveaugevoelig, 492–494NMOS-transistor, 375, 489–491, 497–499Nokia beltoon, 404nop, 224–226, 264Nordic, 479NPN-transistor, 250, 251nRF24L01

channel, 483data pipe, 482–483Enhanced Shockburst, 481toestandsdiagram, 480

nRF24L01+, 479–488, 516register map, 479SPI, 479SPI-opdrachten, 479

NTFS, zie New Technology File SystemNULL, 137, 139, 154, 156, 161, 163, 183nullpointer, 156, 161, zie ook NULL

nulmodemverbinding, zie RS232nulstand, 401–403NVM_EXEC(), 442

Oobject, 138objectcode, 14, 37octaaf, 404octaal, 104offset_adc(), 343offsetcompensatie, 336offsetof(), 351, 413omgevingslicht, 270onderhoudbaarheid, 77oneindige lus, 83, 85, 279, 315ongeformatteerde invoer, 55–58ongeformatteerde uitvoer, 55–58ontvanger, 292, 293, 297, 304, 484–488OpenComm(), 466operand, 24, 80, 108operator, 95–110

bit-, zie bitbewerkingconditionele, zie voorwaardelijke

opdracht, ?:decrement, 27, 109increment, 27, 109komma-, 84logische, zie logische bewerkingrelationele, zie relationele bewerkingschuif-, zie bitbewerkingsizeof(), 113, 116, 132, 136, 137, 178,

394, 396opmaak, 89–94opzoektabel, 253, 258, 261, 263, 265, 418opzoektabel, sinus, 418oscillator, 192, 197, 435oscillatorfrequentie, 274OUT, zie Xmega ports, OUToutput_enable_off(), 361

Page 9: Index [] · ADC, zie Analog-to-Digital Converter, en ook Xmega ADC conversietijd,332 opbouw pipelined,327 principe pipelined,326–327 successieve approximatie,325–326

Index 527

output_enable_on(), 361overdraagbaarheid, 162, 164

Ppackage, zie behuizingPAL, zie Programmable Array Logicparameter, 13, 35, 37, 38

actuele, 38–40formele, 38–40ingangs-, 13, 35

parameterlijst, 13, 38, 39, 138pariteit, 296pariteitsbit, zie RS232parser, 165Pascal, Blaise, 127PDI-programmer, 198PDIP, zie behuizing, Plastic Dual-In-line

Packageperiodetijd, 384, 385, 427periodetijd bij normale modus, 232periodetijdmeting, 427PFET, zie Field Effect Transistorpgm_read_byte(), zie in- en uitvoerfunctiepgm_read_byte_far(), zie in- en

uitvoerfunctiepgm_read_byte_near(), zie in- en

uitvoerfunctiepgm_read_dword(), zie in- en uitvoerfunctiepgm_read_word(), zie in- en uitvoerfunctiepgmspace-bibliotheek

pgm_read_byte(), 448pgm_read_byte_far(), 448pgm_read_byte_near(), 448PROGMEM, 259, 445, 446PSTR(), 446

Phase Locked Loop, 192, 435, 438pinout, 193pipe, 482–483pipelined, 326pipelining, 7, 189plaatsvervanger, 20PlayRTTTL(), 406, 407PLC, zie Programmable Logic CircuitPLD, zie Programmable Logical DevicePLL, zie phase locked loopPMOS-transistor, 489–491, 497–499pn-overgang, 375, 490PNP-transistor, 251, 252pointer, 41, 60, 63, 131–139, 151, 206, 208,

283bij arrays, 138bij bomen, 138bij datastructuur, 138bij lijsten, 138bij string, 138declaratie, 132fouten met, 134–135reken met, 133–134toepassingen, 138–139

toewijzing, 132–133pointer naar functie, 176

declaratie, 176, 177polling, 217–222, 263–265OUT, zie Xmega portspotmeter, 271pow(), zie math-bibliotheekpower-on-reset, 227, 451#pragma, 187precision, format specifier, 51preprocessing, 14preprocessor, 14, 198preprocessoropdracht, 13, 14, 77–80,

186–188, 465prescaled clock, zie gedeelde klokprescaler, zie klokdelerprescaling, 255priemgetal, 87Princeton, zie architectuur, Princeton-principe analoge comparator, 417, 420print_age(), 34, 36, 37print_array(), 144, 146, 148print_ctype(), 72, 88print_digit(), 72, 73printb(), 99, 105, 113Printed Circuit Board, 291, 353, 469EndOfLine(), 78printf(), zie in- en uitvoerfunctieprintf_P(), zie in- en uitvoerfunctieprintNumber(), 78printSpace, 78printStuds(), 183printText(), 78prioriteit, zie voorrangsregelsproducer-consumer problem, 304Program Debug Interface, 192, 193, 197program structure diagram, 43programcounter, 5programma

argumenten doorgeven, 59–61naam van het, 60, 157neveneffect van een, 60, 79, 92, 111

programma, uitvoerbaar, 14Programmable Array Logic, 3Programmable Logic Circuit, 3Programmable Logical Device, 3Programmable Read Only Memory, 6programmabus, 7, 189programmacode pc

afdrukken Quételet-index, 102afdrukken tweedimensionaal array, 126berekening getallen van Fibonacci met

array, 121berekening getallen van Fibonacci met

pointers, 136cijfer als tekst afdrukken, 73COM-poort met RS232-bibliotheek,

468datastructuur afdrukken, 178double en float, 104driehoek van Pascal, 128

eendimensionaal array declareren metmalloc, 141

eendimensionaal array declareren metvariable length array, 142

eigenschappen cijfer afdrukken, 75eigenschappen karakter afdrukken, 72gehele getallen binair afdrukken, 112Hello World, 12Hello World met strings, 24Hello World niet-ANSI, 13hexadecimale en octale getallen, 104invoer met argumenten, 59iteratieve berekening faculteit, 170iteratieve berekening Fibonacci, 170leeftijd afdrukken met functie age, 35lezen en afdrukken naam en leeftijd, 52lezen uit bestand met fgetc, 165lezen uit bestand met fgets, 163lezen uit bestand met fread, 167lezen uit bestand met fscanf, 161lijst afdrukken, 182naam en leeftijd afdrukken, 62omzetten jaar, maand en dag, 153ongeformatteerd lezen en afdrukken,

55, 56ontvangen via de COM-poort, 467recursieve berekening faculteit, 169recursieve berekening Fibonacci, 169som en gemiddelde van array met

afsluitteken, 30som en gemiddelde van array met

getallen, 29som van even getallen, 28som van twee getallen, 20sorteren met qsort, 173sorteren met quicksort, 171toestandsmachine, 76twee keer de som van twee getallen, 21tweedimensionaal array declareren met

apart pointerarray, 144tweedimensionaal array gebaseerd op

eendimensionaal array, 146tweedimensionaal array gebaseerd op

variable length array, 148verschil tussen == en =, 47versturen via de COM-poort, 465, 466voorbeeld met macrodefinities, 78voorbeeld met strncpy en strlcpy, 155vullen en afdrukken meerdimensionaal

array, 126programmacode Xmega

aansturen 4-digit 7-segmentdisplay, 262aansturen dotmatrix, 254aansturen dotmatrix met opzoektabel

in flash, 258aansturen dotmatrix met

timer/counter, 256aansturen ledarray, 254aansturen ledbar, 246aansturen servomotor, 402

Page 10: Index [] · ADC, zie Analog-to-Digital Converter, en ook Xmega ADC conversietijd,332 opbouw pipelined,327 principe pipelined,326–327 successieve approximatie,325–326

528 Index

ADC differentieel freerunningmodus,350

ADC differentieel met timer, 348ADC handmatig, differentieel, 345ADC handmatig, differentieel met

interrupt, 346ADC handmatig, signed single-ended,

344ADC handmatig, unsigned

single-ended, 338, 340afspelen RTTTL-beltoon, 406analoge comparator, 422, 424analoge comparator met interrupt en

scaler, 423analoge comparator met

windowmodus, 426antidenderalgoritme, 237benaderen DS3232 via I2C, 373, 377besturen robotwagen, 400demo microSD-kaart met delay, 476demo microSD-kaart met timer, 478DMA, 416driehoekvormig signaal met DAC, 412drukknop met polling, 217, 219extern EEPROM benaderen via SPI,

358LCD gebroken getallen met dtostrf,

288, 289LCD gebroken getallen met sprintf,

288, 289generatie sinus, 418, 419I2C-bibliotheek, 369initialisatie van nRF24L01+, 484knipperende led met RTC, 440LCD met acht datalijnen, 277LCD met acht datalijnen en bewegende

tekst, 280LCD met LCD-bibliotheek, 285LCD met vier datalijnen, 282ledblink, met TCE0 zonder ISR, 234ledblink, met externe interrupt 0, 225ledblink, met frequentiemodus, 235ledblink, met timer/counter 0, 232–233met SPI naar 74595 schrijven, 361ontvangen met nRF24L01+, 486periodetijd en pulsbreedte meten met

inputcapture, 428programma met DAC, ADC en UART,

414PWM-signaal met frequentiemodus,

389PWM-signaal met single-slope, 391regeling lichtintensiteit led, 394regeling voor rgb-led, 396rtc-bibliotheek voor DS3232, 371schrijven naar en lezen uit EEPROM,

441schrijven naar en lezen uit EEPROM

met memory-mapping, 443slaapstand idle met TCC0 als wekker, 450

slaapstand idle met timer/counter alswekker, 449

TWI master ontvangt gegevens, 381TWI master stuurt gegevens, 379TWI slave ontvangt gegevens, 379TWI slave stuurt gegevens, 381UART met circulaire buffer, 306UART met wrapper, 308UART, met printf, 315UART, met printf en scanf, 316UART, versturen en ontvangen, 300UART, versturen en ontvangen met een

interrupt, 302UART, versturen getallen met wrapper,

314UART, versturen van gegevens, 299uitlezen drukknop+, 217, 220vier PWM-signalen met

frequentiemodus, 389vier PWM-signalen met single-slope,

392, 394watchdog principe, 453watchdog voorbeeld, 453zenden met nRF24L01+, 485zes drukknoppen met interrupt, 264zes drukknoppen met polling, 264

programmageheugen, 5, 194, 445–448programmateller, zie programcounterprogrammer, 197, 198PROM, zie Programmable Read Only

Memoryprototype, 35, 37, 38, 64, 68, 89, 107, 132,

173, 183, zie ook functie, prototypePSD, zie program structure diagrampseudocode, 41–46

aansturen 7-segmentdisplay, 261aansturen dotmatrix, 253aansturen ledbar, 245

pulldown, 203pulldowntransistor, zie ook CMOSpullup, 203pulluptransistor, zie ook CMOSpullupweerstand, 216pulsbreedte, 384, 402

bij servomotor, 402pulsbreedtemodulatie, 383–408

aansturing DC-motoren, 397–401aansturing servomotor, 401–403bij een pulsvormig signaal, 384bij een sinusvormig signaal, 384dual-slope, 385, 393, 397–403duty-cycle, 384frequentiemodus, 385, 388–390,

404–408het aansturen van een led, 384muziek afspelen, 404–408normale modus, 385, 387–388regeling intensiteit led, 394–395regeling intensiteit rgb-led, 395–397relatieve pulsduur, 384single-slope, 385, 390–392, 394–397

pulsduur, 384, 385, 401bij servomotor, 401

Pulse Width Modulation, 192, 383–408, zieook pulsbreedtemodulatie

putc(), zie in- en uitvoerfunctieputchar(), zie in- en uitvoerfunctieputs(), zie in- en uitvoerfunctieputs_P(), zie in- en uitvoerfunctiePutty, 299, 341, 343, 373PWM, 324, 383–408, zie ook Pulse Width

Modulation

Qqsort(), zie stdlib-bibliotheekQuételet, Adolphe, 101qualifier, 259, 360, 445quicksort(), 171

RRAM, 258, zie Random Access Memoryrand(), zie stdlib-bibliotheekrandom(), zie stdlib-bibliotheekRandom Access Memory, 4–6, 194, 304,

441random_r(), zie stdlib-bibliotheekRead Only Memory, 6read-modify-write, 207read_adc(), 338, 340, 342–345, 414, 485readCalibrationByte(), 413readCalibrationWord(), 351ReadCommByte(), 467readRTTTLdefaults(), 406readRTTTLnote(), 405, 406real time clock, 353, 357, 364

met DS3232, 370–374, 376–378realloc(), zie geheugenfunctierealtime-systeem, 3recept, 42recursie, 168–175recursie versus iteratieve oplossingen,

169–170Reduced Instruction Set Computer, 8referentie, 325, 327, 331referentiespanning, 331, 420, 424

ADC, 331–332, 336, 337, 341, 345analoge comparator, 420

regeling intensiteit led, 394–395regeling intensiteit rgb-led, 395–397rekeneenheid, centrale, 4rekenkundige bewerking, 92

aftrekken, -, 24, 105, 133bij microcontroller, 106delen, /, 24, 92, 105floor(), 106machtverheffen, 106modulus, %, 24, 28, 105, 261

Page 11: Index [] · ADC, zie Analog-to-Digital Converter, en ook Xmega ADC conversietijd,332 opbouw pipelined,327 principe pipelined,326–327 successieve approximatie,325–326

Index 529

optellen, +, 20, 24, 92, 105, 133pow(), 106remainder, 105uit math.h, 105uit stdlib.h, 106vermenigvuldigen, *, 24, 92, 105

relatieve pulsduur, 384relationele bewerking, 107

!=, 26, 107<=, 26, 107<, 26, 107==, 26, 107>=, 26, 107>, 26, 107

representatie, 95, 97, 100, zie ook getallenresetvector, zie interrupt, resetvectorreturn, 35, 37, 38, 40, 88, zie ook

hoofdroutinerewind(), zie in- en uitvoerfunctiergb-led, 383, 395–397, 516

intensiteitsregeling, 395–397Ring Tone Text Transfer Language,

404–408ringbuffer, zie buffer, circulaireRISC, zie Reduced Instruction Set

ComputerRitchie, Dennis, 12ROM, zie Read Only Memoryround(), zie math-bibliotheekRS232, 192, 291, 463

baud rate, 293–295, 464databits, 296–298, 464, 465DB9-connector, 298, 463marking, 463MAX232, 292nulmodemverbinding, 292, 463pariteitsbit, 296–298, 464, 465protocol, 296, 463–464RX, 292, 298, 463spacing, 463startbit, 296, 464stopbit, 296–298, 464, 465TX, 292, 298, 463

rtc.c, 371rtc.h, 371rtc_get_date(), 371, 376, 377rtc_get_time(), 372rtc_set_date(), 372rtc_set_time(), 371, 376, 377rtc_time_to_string(), 372, 373RTTTL, zie Ring Tone Text Transfer

Languageruis, 423, 501runtime errors, zie fouten, runtime-

Ssafety loop, 454samengesteld datatype, 23–24, 177–180sample&hold, 326, 410

scan path, zie test, scanpadscanf(), zie in- en uitvoerfunctiescheduling, 221, zie tijdplanningschema

aansturing DC-motor met TB6552, 399aansturing fade led, 394aansturing LCD met acht datalijnen,

277aansturing LCD met vier datalijnen,

281aansturing luidspreker, 404aansturing magnetische buzzer, 404aansturing rgb-led, 395analoge comparator met gedeelde

spanning als referentie, 423analoge comparator met hysterese, 423demonstratie analoge comparator, 421met led en drukknop, 213meting met ADC, 337piëzo-elektrische buzzer, 404seriële verbinding met de UART, 298voor aansturen ledbar, 245voor inputcapture, 428voor knipperen led, 200zes drukknoppen en een

7-segmentdisplay, 263schmitttrigger, 203, 216, 423, 501–502schuifoperator, zie bitbewerkingscope, 38, 69

block, 38, 39file, 38function, 38function prototype, 38, 39

SD-kaart, 473–478SD-kaarthouder, 516sdmm.c, 476, 478segmentation fault, 61, 65sei(), 257seriële communicatie, 292, 353–382, 463Serial Peripheral Interface, 5, 192, 291,

353–358, 364communicatie met nRF24L01+, 479communicatie met SD-kaart, 474master mode, 354MISO, Master In Slave Out, 354MOSI, Master Out Slave In, 354SCK, Spi Clock, 354slave mode, 354SS, Slave Select, 354verschil met I2C, 364

serialF0, 320–322init_stream(), 321uartF0_getc(), 321uartF0_putc(), 321

serialF0.c, 320serialF0.h, 320serieel, 463servomotor, 383, 401–403set_adcch_input(), 350set_level_array, 396set_usart_txrx_direction(), 312, 313

set_usartctrl(), 295, 299, 300setbuf(), zie in- en uitvoerfunctiesetuptijd, 273, 495, 496short, zie datatypeshow_fibonacci(), 285, 287–289showResult(), 44signed, zie datatypesimplex, 463simulator, 200sin(), zie math-bibliotheeksinh(), zie math-bibliotheeksink, 201sinus, 418sinus[], opzoektabel, 418size_t, zie datatypesizeof(), zie operatorslaapstand, 448–451, zie ook Xmega

slaapstandenextended standby, 449idle, 449–450power-down, 449–451power-save, 449standby, 449

slave, 354, 364, 494SlaveReceiveData(), 379, 381sleep mode, 192, 448–451sleep-bibliotheek

extended standby, 449idle, 449–450power-down, 449–451power-save, 449set_sleep_mode(), 449sleep.h, 449sleep_mode(), 449SLEEP_MODE_IDLE, 450standby, 449

sleutel, 253SMD, zie Surface Mounted Devicesorteren, 171–175

qsort, 171–175quicksort, 171

source, 201, 489, 499spacing, zie RS232SPI, zie Serial Peripheral Interfacespi_eeprom.h, 357spi_eeprom_read_byte(), 357, 358spi_eeprom_write_byte(), 357, 358spi_init(), 356, 358, 361, 363spi_read(), 356spi_transfer(), 356–358, 361, 363spi_write(), 356sprintf(), zie in- en uitvoerfunctiesprongopdracht, 86–88

break, 73, 74, 86–88, 171continue, 86–88, 308

square(), 79, 176srand(), zie stdlib-bibliotheeksrandom(), zie stdlib-bibliotheeksscanf(), zie in- en uitvoerfunctiestack, 65, 142, 149–150, 222, 223Stallman, Richard, 16

Page 12: Index [] · ADC, zie Analog-to-Digital Converter, en ook Xmega ADC conversietijd,332 opbouw pipelined,327 principe pipelined,326–327 successieve approximatie,325–326

530 Index

standaard stream, 317, 322standaard Unix-bibliotheek

unistd.h, 465standaard Windows-bibliotheek

windows.h, 466standaardbibliotheek

assert.h, 509ctype.h, 68, 107, 507errno.h, 509floats.h, 101, 507–508limits.h, 96, 507locale.h, 508math.h, 106, 509stdarg.h, 185, 186, 505stdbool.h, 107stddef.h, 351, 413, 506stdint.h, 114, 180stdio.h, 13, 503–504stdlib.h, 60, 106, 261, 505string.h, 64, 139, 506time.h, 508

standaardinvoer, 55, 162standaarduitvoer, 56standard library, zie standaardbibliotheekstarcmp(), 174starcmp_size(), 175starcmp_reverse(), 174start_freq_timer(), 406, 407start_ms_timer(), 406, 407startbit, 296, zie RS232startconditie

do while, 86for, 82for, zonder start- en eindconditie, 83for, zonder startconditie, 170while, 84

state machine, zie toestandsmachinestatic, 117, 256, 412Static Random Access Memory, 190, 195statische functie, 117–118statische variabele, 117–118status

van het programma, 13, 61statusregister, 5stdarg-bibliotheek

..., 185va_arg(), 185va_end(), 186va_list, 185, 186va_start(), 185, 186

stdarg.h, zie standaardbibliotheekstdbool.h, zie standaardbibliotheekstddef.h, zie standaardbibliotheekstderr, zie in- en uitvoerstdin, zie in- en uitvoerstdint.h, zie standaardbibliotheekstdio.h, zie standaardbibliotheeken zie

ook in- en uitvoer(functies)519stdlib-bibliotheek

abs(), 106atoi(), 59–61, 102, 141

calloc(), 136dtostre(), 286, 287dtostrf(), 286–289free(), 136, 143itoa(), 286, 314ltoa(), 286malloc(), 132, 136, 141, 144, 146, 148,

154, 167qsort(), 173rand(), 106, 261random(), 286random_r(), 286realloc(), 136srand(), 106srandom(), 286ultoa(), 286utoa(), 286

stdlib.h, zie standaardbibliotheekstdout, zie in- en uitvoerstoorsignalen onderdrukken, 201stop_freq_timer(), 406, 407stop_ms_timer(), 406, 407stopbit, 296, zie RS232strcat(), zie stringfunctiestrchr(), zie stringfunctiestrcmp(), zie stringfunctiestrcpy(), zie stringfunctiestream, 314–317stream.c, 319stream.h, 319string, 13, 23, 24, 66, 131, 151–158

einde van, zie \n en zie ook end-of-stringformat, 54gebruik pointers bij, 138toekennen aan een string, 63

string.h, zie standaardbibliotheekstring_to_rtc_time(), 372, 373, 377stringfunctie, 64

memcpy(), 444strcat(), 64, 156strchr(), 156strcmp(), 64, 140, 152, 156, 174strcpy(), 63, 64, 139–140, 154, 156,

177, 182strlcat(), 156strlcpy(), 154, 156strlen(), 64, 154, 156, 164, 175strlwr(), 156strncat(), 156strncmp(), 156strncpy(), 154, 156, 157strpbrk(), 165strrchr(), 156strstr(), 156strtok(), 156strupr(), 156

strlcat(), zie stringfunctiestrlcpy(), zie stringfunctiestrlen(), zie stringfunctiestrlwr(), zie stringfunctiestrncat(), zie stringfunctie

strncmp(), zie stringfunctiestrncpy(), zie stringfunctiestroom afvoeren, 201stroom leveren, 201stroomdiagram, 41–43, 457–462

actiesymbool, 458beslissingssymbool, 458connectiesymbool, 459eindsymbool, 459inout-symbool, 459offpage-symbool, 459pijl, 458processymbool, 458, 459startsymbool, 459

stroomverbruik, 4, 352, 451strpbrk(), zie stringfunctiestrrchr(), zie stringfunctiestrstr(), zie stringfunctiestrtok(), zie stringfunctiestruct, 116, zie datastructuurstructuur, 89–94, 469strupr(), zie stringfunctiesuccessieve approximatie, 325suffix, 114–115swap(), 171switch, zie voorwaardelijke opdrachtsynchronizer, 496synchroon, 292, 293, 452systeemfunctie

exit(), 464sleep(), 465

Ttan(), zie math-bibliotheektanh(), zie math-bibliotheekTB6552, dual H-bridge, 399tekenbit, 100teller, 5, 229, 255, zie ook timertemperatuursensor, 354, 357, 364Tera Term, 299, 373test

bed of needles, 469boundary scan, 469–471boundary scan flipflop, 470functionele, 469productie-, 469scanpad, 470structurele, 469testvector, 470

testfunctieisalnum(), 69, 71isblank(), 69iscntrl(), 69, 87isdigit(), 68, 69, 71isgraph(), 69islower(), 69, 300isprint(), 69ispunct(), 69, 71isspace(), 69, 165

Page 13: Index [] · ADC, zie Analog-to-Digital Converter, en ook Xmega ADC conversietijd,332 opbouw pipelined,327 principe pipelined,326–327 successieve approximatie,325–326

Index 531

isupper(), 69, 71, 300isxdigit(), 69uit ctype.h, 69

Thomson, Kennith, 12tijdplanning, 257tijdsduur, 385, 404tijdvertraging

met _delay_ms(), 217, 219, 254, 262,264, 277, 280, 282, 299

met _delay_us(), 282time.h, zie standaardbibliotheektimer, 192, 229, 255–257, 383–408timer/counter, 229–239, zie ook Xmega

timer/countertimer/counter capture interrupt, 428timer/counter overflowinterrupt, 237toekenning, 20toestandsdiagram, 480toestandsmachine, 76

diagram, 76Mealy, 76Moore, 76toestand, 76toestandsovergang, 76

toetsenbord, 2, 199, 243, 314toewijzing, 20toggelen, 109, 214TQFP, zie behuizing, Thin Quad Flat Packtransactie, 415transducer, 323transistor, 270transmissiepoort, 203, 493–494, 498–500,

zie ook CMOStriangle(), 412tristate-inverter, 496–498, zie ook CMOStristatebuffer, 203, 496–499, zie ook CMOSTWI, zie Two-Wire serial Interface, en ook

Xmega TWItwi_master_driver.c, 375twi_master_driver.h, 375TWI_MasterInit(), 377, 379, 381TWI_MasterInterruptHandler(), 377, 379,

381TWI_MasterRead(), 381TWI_MasterWrite(), 379TWI_MasterWriteRead(), 376twi_slave_driver.c, 378twi_slave_driver.h, 378TWI_SlaveInitializeDriver(), 379, 381TWI_SlaveInitializeModule(), 379, 381TWI_SlaveInterruptHandler(), 379, 381Two Wire Interface, 291, 353two’s complement, zie representatieTwo-Wire serial Interface, 192, 353, 354,

364–382type checking, 12typecasting, 97–99, 101–102, 290typedef, 107, 116, 138, 156, 177–179

typedefinitie, 89, 116–117, 178

UUART, zie Universal Asynchronous

Receiver and Transmitterdatabits, 296init_stream(), 319, 320, 373met driver Atmel, 307–317ontvangen gegevens, 300pariteit, 296startbit, 296stopbit, 296versturen en ontvangen met circulaire

buffer, 303–307versturen en ontvangen met interrupt,

301versturen gegevens, 299, 300wrapper, 307–317, 320

uart.c, 319uart.h, 319uart_fgetc(), 315–318uart_fputc(), 315–318uart_getc(), 306, 307, 316, 320uart_init(), 306–308, 315, 316uart_init_bscale_bsel(), 300uart_putc(), 306–308, 316, 320uart_puts(), 306–308uartF0_getc(), 321uartF0_putc(), 321uint8_t, zie datatypeuitvoer

geformatteerde, 50–52ongeformatteerde, 55–58

UL, zie getallenULL, zie getallenultoa(), zie stdlib-bibliotheek#undef, 187ungetc(), zie in- en uitvoerfunctiestruct, 177union, 177–180Universal Asynchronous Receiver and

Transmitter, 5, 292Universal Serial Bus, 192Universal Synchronous and Asynchronous

Receiver and Transmitter, 192, 291, 373Unix, 49, 161

end-of-line, 161Unix-commando

avr-gcc, zie ook GNU C-Compilervoor AVR

cat, 59echo, 61gcc, zie ook GNU C-Compilerinfo, 157ls, 15man, 157

unsigned, zie datatypeunsigned long long, zie datatype

USART, zie Universal Synchronous andAsynchronous Receiver andTransmitter en ook Xmega UART519

USART_DataRegEmpty(), 311usart_driver.c, 308usart_driver.h, 308USART_Format_Set(), 312USART_GetChar(), 310USART_InterruptDriver_Initialize(),

310, 312USART_PutChar(), 310USART_RXComplete(), 311USB, 197USB-interface, 198utoa(), zie stdlib-bibliotheek

Vva_arg(), zie stdarg-bibliotheekva_end(), zie stdarg-bibliotheekva_list, zie stdarg-bibliotheekva_start(), zie stdarg-bibliotheekvariabele, 38

globale, 38, 65, 259, 303lokale, 38, 65, 83

variabele argumentenlijst, 185–186variable length array, 141, 148

bij eendimensionaal array, 142bij tweedimensionaal array, 148zinvol voorbeeld, 143

VCC, digitale voedingsspanning, 201, 271,298

verdeel-en-heers, 32–33verdeel-en-heersstrategie, 34vergelijkingsoperator, zie relationele

bewerkingverkorte schrijfwijze, 84, 109–110, 113vermogen, 3, 448vermogensbesparing, 221vermogensverbruik, 448verversingsfrequentie, 252verversingstijd, 252, 254verwijderen end-of-line, 165Visser van Ma Yuan, 160VLA, zie variable length arrayvluchtig, 6, 118, 194void, 13, 35, 40volatile, 118, zie vluchtigvolatile, 208, 224–226, 255, 274, 309, 379,

430, 455volatile, 118volatile pointer, 118, 255

volume(), 38von Neumann, John, 7voorrangsregels, 92, 108, 110, 111voorwaardelijke opdracht, 25–26, 67–80

?:, 80, 87, 106case, 73default, 73

Page 14: Index [] · ADC, zie Analog-to-Digital Converter, en ook Xmega ADC conversietijd,332 opbouw pipelined,327 principe pipelined,326–327 successieve approximatie,325–326

532 Index

else, 26, 69–70, 460if, 26, 68–70, 72, 76, 91, 460if-else-if, 26, 72, 460if-else-if versus switch, 72, 75nesten van if’s, 70–71switch, 72–77, 460

voorwaardelijke preprocessoropdrachtdefined, 188, 465#elif, 188#else, 187, 188, 465#endif, 187, 188, 465#if, 187, 188, 465#ifdef, 188#ifndef, 188

Wwatchdog, 227, 452–454, zie ook Xmega

watchdogwatchdog-bibliotheek, 452–454

wdt.h, 452, 453wdt_disable(), 452, 453wdt_enable(), 452, 453wdt_reset(), 452, 453

watchdogmechanisme, 452watchdogtimer, 192, 452while, zie herhalingsopdrachtwhite space, 69, 163, 165wifi, 483Windows, 49, 161, 464

end-of-line, 161windows.h, zie standaard

Windows-bibliotheekwitte regels, 91Wollan, Vegard, 9, 189wrapper

uart_getc(), 315, 316uart_init(), 315, 316uart_putc(), 315, 316

WriteCommByte(), 466

XXmega, 9, 104, 189–198

AVCC, analoge voeding, 201C voor AVR, 273–274, 277–290CCP, configuration change protection,

436–440CCP_IOREG_gc, 436–438EEPROM, 196External Bus Interface, 195externe klok, 197fusebit, 196general purpose register, 195generieke IO, 203in- en uitgangsregister, 195indeling datageheugen, 195indeling programmageheugen, 194

interruptniveaus, 180, 223JTAG-interface, 471kristaloscillator, 197lockbit, 196ontwikkeltraject, 198pinout, 193PMIC, 224–226programmeren via JTAG, 471RAMPZ, 447Z, 447SRAM, 195systeemklok, 196toelaatbare stroom, 250VCC, digitale voeding, 201VREFA, 331, 412VREFB, 331, 412

Xmega ADCanaloge referentie, 331–332automatisch, 347–351automatisch converteren, 333–334CHn, channel n, 328, 334converteren met event trigger, 333–334converteren met freerunningmodus,

333–334differential mode, 328differentieel, 329, 344–351differentieel met freerunningmodus,

351differentieel met timer, 347–349handmatig converteren, 333–334ingangsselectie, 328–329interne signaal als ingang, 413–415offsetfout, 335opbouw, 328overzicht instellingen, 352prescaler, 327, 332referentiespanning, 327, 331–332resultaat, differentieel, 331resultaat, signed single-ended, 331, 343resultaat, unsigned single-ended, 330,

340signed single-ended, 329, 341–344single-ended mode, 328uitgangsregisters, 329–331unsigned single-ended, 329, 330,

337–341versterkingsfout, 335

Xmega ADC channelADC_CH_CHIF_bm, 334ADC_CH_INPUTMODE_DIFF_gc, 346, 348,

350ADC_CH_INPUTMODE_INTERNAL_gc, 414ADC_CH_INPUTMODE_SINGLEENDED_gc,

338, 340ADC_CH_INTLVL_LO_gc, 346ADC_CH_MUXINT_DAC_gc, 414ADC_CH_MUXNEG_GND_gc, 342ADC_CH_MUXPOS_gm, 343ADC_CH_START_bm, 334, 346, 348, 350ADCA_CH0_vect, 346, 348, 350CTRL, 328, 334

INTCTRL, 346, 348, 350INTFLAGS, 334MUXCTRL, 328, 338, 340, 343, 345RES, resultaat register, 328, 330, 334RESH, resultaat hoge byte, 330RESL, resultaat lage byte, 330

Xmega ADC registersADC_CHnIF_bm, 334ADC_CHnSTART_bm, 334ADC_CONMODE_bm, 339ADC_EVACT_CH0_gc, 348ADC_EVACT_NONE_gc, 350ADC_EVSEL_0123_gc, 348, 350ADC_FREERUN_bm, 339, 350ADC_REFSEL_INTVCC_gc, 338, 340ADC_RESOLUTION_12BIT_gc, 338–340ADC_SWEEP_0123_gc, 350ADC_SWEEP_0_gc, 348ADCB, 339CAL, 351CHnRES, 329, 334CONVMODE-bit, 330CTRLA, 334CTRLB, 330, 334EVACT, 349EVCTRL, 348–350EVSEL-bits, 349FREERUN, 339FREERUN-bit, 334INTFLAGS, 334PRESCALER, 332, 338, 340REFCTRL, 338, 340RESOLUTION-bit, 330SWEEP-bits, 349

Xmega analoge comparator, 420–426AC0OUT, 424AC_AC0OUT_bm, 422AC_AC0STATE_bm, 423AC_ENABLE_bm, 422, 426AC_HYSMODE_LARGE_gc, 424AC_HYSMODE_NO_gc, 424AC_HYSMODE_SMALL_gc, 424AC_INTLVL_LO_gc, 422AC_INTMODE_BOTHEDGES_gc, 422AC_MUXNEG_DAC_gc, 421AC_MUXNEG_PINn_gc, 421, 422AC_MUXNEG_SCALER_gc, 421, 422, 424AC_MUXPOS_DAC_gc, 421AC_MUXPOS_PINn_gc, 421, 422AC_WEN_bm, 426AC_WINTMODE_INSIDE_gc, 426AC_WINTMODE_OUTSIDE_gc, 426AC_WSTATE_INSIDE_gc, 426ACA_AC0_vect, 423ACA_ACW_vect, 426ACnCTRL, 422, 426ACnMUXCTRL, 420, 422blokschema, 420CTRLB, scaler, 422, 424HYSMODE-bits, 424hysterese, 424–425

Page 15: Index [] · ADC, zie Analog-to-Digital Converter, en ook Xmega ADC conversietijd,332 opbouw pipelined,327 principe pipelined,326–327 successieve approximatie,325–326

Index 533

SCALER, 422, 424schaalfactor, 422WINCTRL, 426windowmodus, 425–426WINTMODE-bits, 426WSTATE-bits, 426

Xmega DAC, 410–415blokschema, 410, 411CH0GAINCAL, 413CH0OFFSETCAL, 413CHnDATA, 412CHSEL-bits, 411IDOEN-bits, 411CTRLA, 411, 412CTRLB, 411, 412CTRLC, 412DAC_CHnDRE_bm, 412DAC_CHnEN_bm, 412, 414, 419DAC_CHSEL_SINGLE_gc, 412–414DAC_ENABLE_bm, 412, 419DAC_IDOEN_bm, 414DAC_REFSEL_AVCC_gc, 412DACB0GAINCAL, 413DACB0OFFCAL, 413dual channel, 410single channel, 410STATUS, 412uitgangsspanning DAC, 412

Xmega DFLLRC2MCTRL, 437DFLL_ENABLE_bm, 437

Xmega DFLLRC32MCTRL, 437DFLL_ENABLE_bm, 437

Xmega DMAADDRCTRL, 416, 419block transfer, 415burst transfer, 415CTRL, 416, 419DESTADDRn, 416, 419DMA_CH_BURSTLEN_8BYTE_gc, 416, 419DMA_CH_ENABLE_bm, 416, 419DMA_CH_TRFREQ_bm, 416, 419DMA_CH_TRNIF_bm, 416, 419DMA_ENABLE_bm, 416, 419SRCADDRn, 416, 419transaction, 415TRIGSRC, 416, 419

Xmega EEPROM, 441–445adressering, 441EEPROM-drivers van Atmel, 441lezen uit, 441–445schrijven naar, 441–445

Xmega event systemCHnMUX, 348, 428, 432EVSYS, 348, 428, 431, 434EVSYS_CHMUX_PORTE_PIN1_gc, 428, 431,

432, 434EVSYS_CHMUX_TCD0_OVF_gc, 419EVSYS_CHMUX_TCE0_OVF_gc, 348, 432

Xmega flash

FSTR, 447pgm_read_byte(), 413, 445pgm_read_dword(), 446pgm_read_float(), 446pgm_read_word(), 351, 446printf_P(), 446PSTR(), 446

Xmega interruptvector, 180, 226, 227overzicht, 227PORTx_INT0_vect, 224, 237, 264, 450,

488Xmega klok, 435–437, zie ook Xmega

oscillator32 MHz klok met extern 16 MHz

kristal, 438CLK_RTCEN_bm, 439, 440CLK_RTCSRC_RCOSC32_gc, 439CLK_RTCSRC_TOSC_g, 440CLK_SCLKSEL_PLL_gc, 438CLK_SCLKSEL_RC32M_gc, 436Config32MHzClock, 435CTRL, 436, 438externe oscillator, 437overzicht, 435, 438RTCCTRL, 439, 440verbeteren 2 MHz klok, 437verbeteren 32 MHz klok, 437verbeteren 32 MHz klok met extern

kristal, 437Xmega NVM

ADDRn, 442CMD, 442NVM_CMD, 351, 413NVM_CMD_ERASE_WRITE_EEPROM_PAGE_gc,

442NVM_CMD_LOAD_EEPROM_BUFFER_gc, 442NVM_CMD_NO_OPERATION_gc, 351, 413NVM_CMD_READ_CALIB_ROW_gc, 351, 413NVM_CMD_READ_EEPROM_gc, 442NVM_PROD_SIGNATURES_t, 351, 413

Xmega oscillator, 435–437, 439–441, zieook Xmega klokCTRL, 436DFFL, zie Xmega DFLLRC2M en

Xmega DFLLRC32M

DFLLCTRL, 437, 439externe oscillator, 437OSC_FRQRANGE_12TO16_gc, 438OSC_PLLEN_bm, 438OSC_PLLFAC_gm, 438OSC_PLLSRC_XOSC_gc, 438OSC_RC2MCREF_RC32K_gc, 437OSC_RC32KEN_bm, 437, 439OSC_RC32MCREF_RC32K_gc, 437OSC_RC32MCREF_XOSC32K_gc, 437, 439OSC_RC32MEN_bm, 436OSC_RC32MRDY_bm, 436OSC_XOSCEN_bm, 437, 438, 440OSC_XOSCSEL_32KHz_gc, 437, 440OSC_XOSCSEL_XTAL_16KCLK_gcc, 438STATUS, 436

Xmega ports, 202–208asynchrone interrupt, 450DIR, direction register, 203, 205DIRCLR, 205, 213DIRSET, 205, 283externe interrupt 0, 224, 488IN, ingangsregister, 204, 496INT0MASK, 224–226INTCTRL, 207, 224–226INTFLAGS, 207INTnMASK, 207ISC-bits, 204, 225MPCMASK, 264, 265, 396OPC-bits, 204, 218, 219OUT, uitgangsregister, 203, 205, 208OUTCLR, 205OUTSET, 205OUTTGL, 205, 224–226PINnCTRL, 204, 218, 220, 264, 265, 373,

377, 394, 396, 402, 428, 450PORT_INT0LVL_LO_gc, 224–226PORT_INT0LVL_OFF_gc, 237PORT_ISC_BOTHEDGES_gc, 428PORT_ISC_FALLING_gc, 224–226PORT_OPC_PULLUP_gc, 218, 220, 264,

265, 396, 450PORT_OPC_WIREDANDPULL_gc, 373, 377,

394, 402PORT_SPI_bm, 362PORT_t, datastructuur, 179, 205–207,

220PORTCFG, 264, 265, 396PORTD_INT0_vect, 224–226, 237, 266PORTx, 204–206pullup, 217, 500REMAP, 179, 207, 362

Xmega reset, 451brownout-reset, 452externe reset, 201, 228, 451PDI-reset, 452power-on-reset, 227, 451reset aansluiting, 201resetvector, 227RST, 453RST_WDRF_bm-bits, 453software reset, 452watchdog-reset, 452–454

Xmega RTC, 439–441CNT, 439, 440CTRL, 439, 440instellen realtime counter, 439instellen realtime counter met extern

kristal, 440opbouw, 439PER, 439, 440RTC_OVF_vect, 440RTC_PRESCALER_DIVn_gc, 439, 440RTC_SYNCBUSY_bm, 439, 440STATUS, 439

Xmega sleep, 448–451, zie ooksleep-bibliotheek

Page 16: Index [] · ADC, zie Analog-to-Digital Converter, en ook Xmega ADC conversietijd,332 opbouw pipelined,327 principe pipelined,326–327 successieve approximatie,325–326

534 Index

Xmega SPI, 354–358communicatie met extern EEPROM,

357–358communicatie met nRF24L01+, 479CPHA, fasebit, 355CPOL, polariteitsbit, 355CTRL, 355DATA, 355IF, interrupt flag, 355INTCTRL, 355SPI_CLK2X_bm, 356SPI_DORD_bm, 356SPI_ENABLE_bm, 356SPI_IF_bm, 356SPI_MASTER_bm, 356SPI_MODE_0_gc, 356PRESCALER_DIVx_gc, 356SPIx, 356STATUS, 355USART als SPI, 362–363

Xmega timer/counter, 255–257, 383–408AWeX, advanced waveform extension,

403HiRES, high resolution, 40332-bits inputcapture, 432–433aansluiting inputcapture, 429capture-modus, 427–434CCx, 385, 386, 389, 399, 428CCxBUF, 386, 394, 399, 400CCxBUFH, 488CCxBUFL, 488CLKSEL-bits, 230CNT, 234, 388configuratie voor 32-bits inputcapture,

432CTRLA, prescaling, 232–233, 256CTRLB, 387CTRLB, CCx, 235CTRLB, modus, 232–233, 256CTRLD, 432, 434CTRLFSET, 428, 431, 432dual-slope PWM, 385, 393, 397–403duty-cycle bij dual-slope-modus, 393duty-cycle bij single-slope-modus, 391EVACT-bits, 434frequentie bij dual-slope-modus, 393frequentie bij frequentiemodus, 390frequentie bij single-slope-modus, 391frequentie-capture, 433–434frequentiemodus, 385, 388–390,

404–408inputcapture-modus, 427–434INTCTRLA, 232–233, 256, 348, 350, 407INTCTRLB, 431normale modus, 385, 387–388overzicht PWM, 385–386PER, 232–233, 256, 386, 388, 428PERBUF, 386periodetijd bij normale modus, 230, 232prescaling selectiebits, 230single-slope PWM, 385, 390–392,

394–397

TC0_CCAEN_bm, 235TC0_CCxEN_bm, 389, 394, 396, 400, 402TC1_EVDLY_bm, time delay, 432TC_CCAINTLVL_LO_gc, 431TC_CLKSEL_DIVn_gc, 389, 394, 407TC_CLKSEL_EVCHn_gc, 432TC_CLKSEL_OFF_gc, 406TC_CMD_RESTART_gc, 428, 431, 432TC_EVACT_CAPT_gc, 428, 432TC_EVACT_FRQ_gc, 434TC_EVSEL_CH0_gc, 428, 432, 434TC_OVFINTLVL_LO_gc, 232–233TC_OVFINTLVL_OFF_gc, 237, 407TC_WGMODE_DSBOTH_gc, 387, 394, 400,

402TC_WGMODE_FRQ_gc, 235, 387, 389, 406TC_WGMODE_NORMAL_gc, 232–233, 256,

348, 350, 387, 406, 428, 450, 478TC_WGMODE_SINGLESLOPE_gc, 387, 391,

392, 394, 396, 428TC_WGMODE_SS_gc, 387TC_WGMODE_t, 387TCC0_OVF_vect, 450TCC1_OVF_vect, 478TCD0_OVF_vect, 256TCE0_CCA_vect, 428, 431, 432TCE0_OVF_vect, 232–233, 237, 387, 431,

432, 455TCE1_OVF_vect, 406WGM-bits, 387

Xmega TWI, 366–382ADDR, master, 368BAUD, master, 368CTRL, master, 368CTRLA, master, 368DATA, master, 368I2C-bibliotheek op basis van TWI_t,

367–374I2C-bibliotheek, toepassing met

DS3232, 370–374levelshifting, 374–375masterdriver+, 375–378slavedriver+, 378–382TWI_BAUD(), 369, 373, 377TWI_MASTER_BUSSTATE_gm, 368TWI_MASTER_BUSSTATE_IDLE_gc, 368TWI_MASTER_CMD_RECVTRANS_gc, 368TWI_MASTER_CMD_STOP_gc, 368TWI_MASTER_ENABLE_bm, 368TWI_MASTER_INTLVL_LO_gc, 379, 381TWI_MASTER_RIF_bm, 368TWI_MASTER_RXACK_bm, 368TWI_MASTER_t, 366, 367TWI_Master_t, 376TWI_MASTER_WIF_bm, 368TWI_SLAVE_INTLVL_LO_gc, 379, 381TWI_SLAVE_t, 366, 367TWI_Slave_t, 378TWI_t, 366, 367, 376, 378TWIx_TWIM_vect, 377, 379, 381TWIx_TWIS_vect, 379, 381

Xmega USART

BAUDCTRLx, 293–295, 299, 363BSEL, 295SCALE, 295CHSIZE, databits, 296CMODE communication modus, 296CTRL, 296CTRLB, 299CTRLC, 299, 363data register empty, 303, 305, 306DATA, data register, 297, 300, 303DATA, receive, 293, 299DATA, transmit, 293, 299, 302DREIF, data register empty flag, 297, 307MSPI-bit, 363PMODE pariteitsmodus, 296receive complete, 302, 303, 305, 306RXCIF, receive complete flag, 297, 307RXEN-bit, 299SBMODE, stopbit, 296SCALE, 293–295BSEL, 293–295, 362STATUS, 297TXCIF, transmit complete flag, 297, 363TXEN-bit, 299uart-driver Atmel, 309USART als SPI, 362–363USART_BSCALE0_bp, 295, 299USART_BSCALE_gm, 295, 299USART_BSEL_gm, 295, 299USART_CHSIZE_nBIT_gc, 299USART_CMODE_ASYNCHRONOUS_gc, 299USART_CMODE_MSPI_gc, 363USART_DREIF_bm, 299, 300USART_PMODE_DISABLED_gc, 299USART_RXCIF_bm, 300USART_RXCINTLVL_LO_gc, 302USART_RXEN_bm, 300USART_TXEN_bm, 299, 300USARTxn_DRE_vect, 303, 305, 307USARTxn_RXC_vect, 302, 303, 305, 307

Xmega watchdog, 452–454CEN-bit, 452CTRL, 452ENABLE-bit, 452PER-bits, watchdog timer prescaler, 452,

453WDRF-bit, 454WDT_PER_nCLK_gc-bits, 453WINCTRL, 452

Xmega-bord, 515–518Xmega256a3u, 516Xmega32a4u, 516

Zzender, 292, 293, 297, 304, 484–488zonnebloem, 120zwevende ingang, 451