Errata 'Microcontrollers en de taal C'

Vierde druk, 2011

  • Op pagina 56: staat in het derde grijze blok:
    for ( sum-0,i=0; i<n; sum+=i,i++) ;
    dit moet zijn:
    for ( sum=0,i=0; i<n; sum+=i,i++) ;
  • De teller van formule 23.1 is niet correct, vervang de uitdrukking boven de streep:
    R2R3 + R1R3
    door:
    R2R1 + R2R3

Derde druk, 2010

  • Bij tabel 17.1 op pagina 178 moet in de linker tabel de tweede regel vervangen worden door:
    fgets()   leest een regel
    en in de rechter tabel de tweede regel vervangen worden:
    fputs()   schrijft een string
  • Op de voorlaatste regel op bladzijde 272 staat:
    "Voor de 24-uurs notatie is bit 6 hoog en stellen de bits 4 tot en met 0 de uren voor."
    Dit moet zijn:
    "Voor de 12-uurs notatie is bit 6 hoog en stellen de bits 4 tot en met 0 de uren voor."
  • In code 11.7 staat op regel 33:
    tmp = 1;
    Dit moet zijn:
    tmp = value;
  • In figuur D.8 op pagina 340 moeten in de tabel de waarden van uitgang qn geïnverteerd worden.

Tweede druk, 2009

  • Op pagina 225 is een deel van de titel van code 19.2 weggevallen. De complete titel luidt:
    Code 19.2:   Aansturing LCD in 8-bit mode met bewegende tekst. Regel 1 tot en met 29 is identiek met code 19.1.
  • Code 22.2 regel 6 en 7 moet zijn:
              !_BV(COM01)|  _BV(COM00) |             // toggle output
              !_BV(CS02) |  _BV(CS01)  | !_BV(CS00); // prescaling Fcpu/8
    
  • Code 22.3 regel 9 moet zijn:
              !_BV(CS02) |  _BV(CS01)  | !_BV(CS00); // prescaling Fcpu/8
    
  • Het commentaar bij code 22.4 regel 7 is niet correct. Dit moet zijn:
      TCCR0 = !_BV(WGM01)|  _BV(WGM00) |             // phase correct PWM
    
  • Code 22.4 regel 9 moet zijn:
              !_BV(FOC0) | !_BV(CS02)  | _BV(CS01)  | !_BV(CS00); // prescaling Fcpu/8
    
  • In figuur 22.11 zijn de aansluitingen van OC1A en OC1B niet correct. Deze figuur is wel correct:
    rgb led
  • Code 22.8 regel 14 moet zijn:
      TCCR0  =  _BV(WGM01) |  _BV(WGM00) |            // fast PWM
    
  • Code 22.13 regel 13 moet zijn:
      TCCR1A =  _BV(COM1A1)| !_BV(COM1A0)|  _BV(COM1B1)| !_BV(COM1B0)| // clr OCR1x up/set OCR1x down
    
  • Code 23.10 regel 14 moet zijn:
      TCCR0  = _BV(WGM01)|  !_BV(WGM00)|             // CTC mode
    
  • Code 23.11 regel 14 moet zijn:
      TCCR0  = _BV(WGM01)|  !_BV(WGM00)|             // CTC mode
    

Deze fout geldt ook voor de eerste druk.

  • Op pagina 58 staat:
    #define mod(x,y)     ( ((x)/(y)>0) || ((x)%(y)==0) ? (x)%(y) : ((x)%(y))+(y) )
    
    Dit moet zijn:
    #define mod(x,y)  ( ((x)%(y)==0) ? 0 : (((x)/(y))<0 ) ? ((x)%(y))+(y) : (x)%(y) )
    

Eerste druk, 2008

  • code 7.3 regel 5 moet zijn: int i, n, prime=1;
    code 7.3 regel 11 moet zijn: prime=0;
  • figuur 20.4 acroniem bij bit 3 moet zijn : USBS
  • code 20.1 regel 19 moet zijn: uart_init(UBRR_VALUE);
  • de notitie in de marge op bladzijde 81 luidt:
    Verwar & niet met && en
    verwar | niet met ||.
    De symbolen & en && zijn
    beide EN-functies. Alleen is &
    de logische EN en && de
    bitsgewijze EN.
    Op dezelfde manier is | de
    logische OF en || de
    bitsgewijze OF.
    Dit moet zijn:
    Verwar & niet met && en
    verwar | niet met ||.
    De symbolen & en && zijn
    beide EN-functies. Alleen is &&
    de logische EN en & de
    bitsgewijze EN.
    Op dezelfde manier is || de
    logische OF en | de
    bitsgewijze OF.
  • Eerste paragraaf 14.3 op bladzijde 148 eindigt met "vijf char's". Dat moet zijn "drie char's".
  • Op pagina 120 staat "de bits ISC01 en ISC01" dat moet zijn "de bits ISC01 en ISC00".
  • Op pagina 294 staat bij figuur F.2 "De code in" dat moet zijn "De code in".
  • Op pagina 27 staat op regel zes van boven "... staat op regel 2 ..." dat moet zijn "... staat op regel 1 ...". Voeg voor regel 25 i=0; toe.
  • Op pagina 107 ontbreekt in code 11.4 de initialisatie van i. Voeg voor regel 25 i=0; toe.