avr-libc-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [avr-libc-dev] [bug #32723] Add NVM_PROD_SIGNATURES_t in Xmega heade


From: Bob Paddock
Subject: Re: [avr-libc-dev] [bug #32723] Add NVM_PROD_SIGNATURES_t in Xmega header files
Date: Thu, 10 Mar 2011 11:20:54 -0500

> AVR-GCC has a NVM_PROD_SIGNATURES_t which contains all the registers of the
> production signature row. However, when loading from the signature row, you
> need the offset.

I don't see this change as needed, use 'offsetof' in stddef.h:

Here is a snippet of my code that I use to display all of the
NVM_PROD_SIGNATURES on one of my screens:

  /* XMega serial number: */
  (void) SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t,
LOTNUM0 ) ); /* First read after reset or possibly Power Up returns
zero, so read then toss this value */

  hex_out_buffer( SP_ReadCalibrationByte( offsetof(
NVM_PROD_SIGNATURES_t, LOTNUM0 ) ) );
  hex_out_buffer( SP_ReadCalibrationByte( offsetof(
NVM_PROD_SIGNATURES_t, LOTNUM1 ) ) );
  hex_out_buffer( SP_ReadCalibrationByte( offsetof(
NVM_PROD_SIGNATURES_t, LOTNUM2 ) ) );
  hex_out_buffer( SP_ReadCalibrationByte( offsetof(
NVM_PROD_SIGNATURES_t, LOTNUM3 ) ) );
  hex_out_buffer( SP_ReadCalibrationByte( offsetof(
NVM_PROD_SIGNATURES_t, LOTNUM4 ) ) );
  hex_out_buffer( SP_ReadCalibrationByte( offsetof(
NVM_PROD_SIGNATURES_t, LOTNUM5 ) ) );
  hex_out_buffer( (uint8_t) ' ' );

  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, WAFNUM ) )  );
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, COORDX0 ) ) );
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, COORDX1 ) ) );
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, COORDY0 ) ) );
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, COORDY1 ) ) );
  hex_out_buffer( (uint8_t) ' ' );

  lcd_text(SCRN_LEFT,  SCRN_TOP+13, FONT_FIVE_DOT, (char *) hex_buffer_u8);
  hex_buf_ptr_u8 = hex_buffer_u8;

  /* Analog Calibrations: */
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t,
TEMPSENSE0 ) ) );
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t,
TEMPSENSE1 ) ) );
  hex_out_buffer( (uint8_t) ' ' );

  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, ADCACAL0 ) ) );
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, ADCACAL1 ) ) );

  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, ADCBCAL0 ) ) );
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t, ADCBCAL1 ) ) );
  hex_out_buffer( (uint8_t) ' ' );

  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t,
DACAOFFCAL ) ) );
#if( __GCC_VERSION__ < 433 ) /* Version prior to 4.3.3 had the name
wrote (C vs G): */
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t,
DACACAINCAL ) ) );
#else
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t,
DACAGAINCAL ) ) );
#endif

  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t,
DACBOFFCAL ) ) );
  hex8( SP_ReadCalibrationByte( offsetof( NVM_PROD_SIGNATURES_t,
DACBGAINCAL ) ) );

  lcd_text(SCRN_LEFT,  SCRN_TOP+19, FONT_FIVE_DOT, (char *) hex_buffer_u8);



reply via email to

[Prev in Thread] Current Thread [Next in Thread]