Errata 'De taal C en de Xmega'

Tweede druk, 2016 (1e oplage)

  • Pagina 162: in de linker tabel van tabel 13.1 staat op de tweede regel:

    leest een regel (string tot '\n')

    dat moet zijn:

    leest een regel (tot en met de end-of-line)

  • Pagina 256: in code17.6 staat op regel 31:
      if ( col==3 ) {
    
    dit moet zijn:
      if ( col==4 ) {
    
  • Pagina 273: onderaan in het codefragment:
    Pagina 274: bovenaan in het codefragment:
      PORTD = 'x';          // databyte is 'x'
    
    dat moet in beide gevallen zijn:
      PORTD.OUT = 'x';      // databyte is 'x'
    
  • Pagina 262: in code 17.8 staat op regel 40:
          PORTB.OUT = (PORTD.OUT & 0xF0) |
    
    dat moet zijn:
          PORTB.OUT = (PORTB.OUT & 0xF0) |
    
  • Pagina 350: in code 20.10 wordt de globale interrupt niet aangezet. Voeg in code 20.10 na regel 37 toe:
      sei();
    
  • Pagina 356: in code 21.2 staat op regel 22:
      return SPIC.DATA;
    
    dit moet zijn:
      return SPID.DATA;
    
  • Pagina 381: in code 21.19 moet regel 8 worden verwijderd.
  • Pagina 388: in code 22.2 staat op regel 9:
        TCD0.CTRLA    = TC_CLKSEL_DIV64_gc;
    
    dit moet zijn:
        TCD0.CTRLA    = TC_CLKSEL_DIV8_gc;
    
    anders is de frequentie niet 2 Hz, zoals op pagina 389 staat, maar 0,25 Hz.
  • Pagina 412: in code 23.3 staat op regel 45:
      DACB.CTRLA = DAC_ENABLE_bm;
    
    dit moet zijn:
      DACB.CTRLA = DAC_CH0EN_bm | DAC_ENABLE_bm;
    
  • Pagina 446: in code 23.38 moet in de linker en in de rechter code regel 1 vervangen worden door:
    #include <avr/interrupt.h>
    
    Bovendien moet in de linker code na regel 8 en in de rechter code na regel 9 worden toegevoegd:
      sei();
    
  • Pagina 446: in code 23.39 moet in de linker en in de rechter code regel 1 vervangen worden door:
    #include <avr/interrupt.h>
    
    Bovendien moet in de linker code en in de rechter code na regel 9 worden toegevoegd:
      sei();
    
  • Pagina 447: in code 23.40 moet regel 1 vervangen worden door:
    #include <avr/interrupt.h>
    
    Bovendien na regel 13 worden toegevoegd:
      sei();
    
  • Pagina 476: in code D.1 wordt de globale interrupt niet aangezet. Voeg in code D.1 voor regel 3 toe:
    #include <avr/interrupt.h>
    
    en voeg na regel 11 toe:
      sei();
    
  • Pagina 517: in tabel van figuur J.3 staat:
        RF_MISO    PC2     de MOSI van de SPI, data van de Xmega naar de nRF24L01+
        RF_MOSI    PC3     de MISO van de SPI, data van de nRF24L01+ naar de Xmega
    
        SD_MISO    PC6     de MOSI van de SPI, data van de Xmega naar de SD-kaart
        SD_MOSI    PC7     de MISO van de SPI, data van de SD-kaart naar de Xmega
    
    Dit moet zijn:
        RF_MISO    PC2     de MISO van de SPI, data van de nRF24L01+ naar de Xmega
        RF_MOSI    PC3     de MOSI van de SPI, data van de Xmega naar de nRF24L01+
    
        SD_MISO    PC6     de MISO van de SPI, data van de SD-kaart naar de Xmega
        SD_MOSI    PC7     de MOSI van de SPI, data van de Xmega naar de SD-kaart
    

Tweede druk, 2016 (1e en 2e oplage)

  • Pagina 109: op laatste regel van het eerste grijze blok met code staat:
     b= a>>2;     // b is 0x00001101   (11)
    
    dit moet zijn:
     b= a>>2;     // b is 0x00001011   (11)
    
  • Pagina 363: in code 21.7 staat op regel 23:
      return USARTC1.DATA;
    
    dit moet zijn:
      return USARTD1.DATA;
    
  • Pagina 373: in code 21.13 is regel 22 overbodig en kan dus worden verwijderd.
  • Pagina 388: in het codefragment bovenaan de pagina staat:
    bit_is_clear(PINA, PIN3_bm)
    
    dit moet zijn:
    bit_is_clear(PORTA.IN, PIN3_bm)
    
  • Pagina 407: in de eerste regel van de tweede alinea moet "... het meten van de tijdsduur ..." staan in plaats van "... het meteen van de tijdsduur ...".
  • Pagina 423 en pagina 424: De terugkoppeling voor de hysterese van figuur 3.11 is niet coreect. Voor een correcte hysterese moet signaal UAC0OUT worden geïnverteerd.
    Een andere mogelijkheid is om de aansluiting bij de pinnen PA1 en PA2 te verwisselen. In dat geval klopt de hysterese, maar is signaal UAC0OUT juist hoog als Uin laag en is figuur 23.13 niet correct. Hieronder staan de correcte figuren:
         
  • Pagina 428: In derde alinea staat een periodetijd van 128 ms, dat moet zijn 1,28 s.
    Pagina 429: in code 23.17 staat op regel 13:
      TCD0.PER      = 9999;                   // Tper = 128 ms  @\AT @ 2 MHz
    
    dit moet zijn:
      TCD0.PER      = 9999;                   // Tper = 1.28 s  @\AT @ 2 MHz
    
    Pagina 430: In de laatste alinea staat een periodetijd van 128 ms, dat moet zijn 1,28 s.