Index [] · ADC, zie Analog-to-Digital Converter, en ook Xmega ADC conversietijd,332 opbouw...
Transcript of Index [] · ADC, zie Analog-to-Digital Converter, en ook Xmega ADC conversietijd,332 opbouw...
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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