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

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

[avr-libc-dev] [bug #27198] avr/iox128a1.h is missing definitions for ca


From: Simon Küppers
Subject: [avr-libc-dev] [bug #27198] avr/iox128a1.h is missing definitions for calibration signature indexes
Date: Fri, 07 Aug 2009 01:27:15 +0000
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)

URL:
  <http://savannah.nongnu.org/bugs/?27198>

                 Summary: avr/iox128a1.h is missing definitions for
calibration signature indexes
                 Project: AVR C Runtime Library
            Submitted by: simonk
            Submitted on: Fr 07 Aug 2009 01:27:14 GMT
                Category: Header
                Severity: 3 - Normal
                Priority: 5 - Normal
              Item Group: Header files
                  Status: None
        Percent Complete: 0%
             Assigned to: None
             Open/Closed: Open
         Discussion Lock: Any
                 Release: 1.7.*
           Fixed Release: None

    _______________________________________________________

Details:

There are no #defines or enums defining an index for each possible
production/calibration signature row entry/register.
This index has to be loaded into ZL when using LPM on the NVM to load
production signature entries.

It could look like:

typedef enum NVM_PROD_SIG_IDX_enum
{
        NVM_PROD_SIG_IDX_RCOSC2M = 0x00,
        NVM_PROD_SIG_IDX_RCOSC32K = 0x02,
        NVM_PROD_SIG_IDX_RCOSC32M = 0x03,
        NVM_PROD_SIG_IDX_LOTNUM0 = 0x08,
        NVM_PROD_SIG_IDX_LOTNUM1 = 0x09,
        NVM_PROD_SIG_IDX_LOTNUM2 = 0x0A,
        NVM_PROD_SIG_IDX_LOTNUM3 = 0x0B,
        NVM_PROD_SIG_IDX_LOTNUM4 = 0x0C,
        NVM_PROD_SIG_IDX_LOTNUM5 = 0x0D,
        NVM_PROD_SIG_IDX_WAFNUM = 0x10,
        NVM_PROD_SIG_IDX_COORDX0 = 0x12,
        NVM_PROD_SIG_IDX_COORDX1 = 0x13,
        NVM_PROD_SIG_IDX_COORDY0 = 0x14,
        NVM_PROD_SIG_IDX_COORDY1 = 0x15,
        NVM_PROD_SIG_IDX_ADCACAL0 = 0x20,
        NVM_PROD_SIG_IDX_ADCACAL1 = 0x21,
        NVM_PROD_SIG_IDX_ADCBCAL0 = 0x24,
        NVM_PROD_SIG_IDX_ADCBCAL1 = 0x25,
        NVM_PROD_SIG_IDX_TEMPSENSE0 = 0x2E,
        NVM_PROD_SIG_IDX_TEMPSENSE1 = 0x2F,
        NVM_PROD_SIG_IDX_DACAOFFCAL = 0x30,
        NVM_PROD_SIG_IDX_DACAINCAL = 0x31,
        NVM_PROD_SIG_IDX_DACBOFFCAL = 0x32,
        NVM_PROD_SIG_IDX_DACBINCAL = 0x33
} NVM_PROD_SIG_IDX_t

a function for reading the signature data could look like:
/* static inline */
uint8_t SystemReadCalibrationByte(NVM_PROD_SIG_IDX_t Index)
{
        uint8_t Result;

        __asm__ volatile (
        "mov    r30, %[Idx]"            "nt"
        "ldi    r31, 0"                 "nt"
        "ldi    %[Idx], %[Rd]"  "nt"
        "sts    %[Cmd], %[Idx]" "nt"
        "lpm    %[Res], Z"              "nt"
        : [Res] "=r" (Result)
        : [Idx] "a" ((uint8_t) Index),
          [Rd]  "M" (NVM_CMD_READ_CALIB_ROW_gc),
          [Cmd] "m" (NVM_CMD)
        );

        return Result;
}




    _______________________________________________________

Reply to this item at:

  <http://savannah.nongnu.org/bugs/?27198>

_______________________________________________
  Nachricht geschickt von/durch Savannah
  http://savannah.nongnu.org/





reply via email to

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