Цитата(rezident @ Aug 23 2010, 23:43)

...Откуда константы в хедере? Там же обычно только типизация данных бывает.
Эммм.... ну все верно! В хидере tlv.h нет никаких констант!...
По сути структура TLV_bits является интерефейсом к данным, зашитым на заводе в калибровочной области контроллера
Цитата(rezident @ Aug 23 2010, 23:43)

Можно для интереса приаттачить этот хедер к вашему сообщению?
Файл не получается загрузить! Полностью процитирую его содержимое ниже:
Код
#ifndef __msp430_headers_tlv_h
#define __msp430_headers_tlv_h
/* tlv.h
*
* mspgcc project: MSP430 device headers
* tlv structures
*
* (c) 2008 by Sergey A. Borshch <sb-sf@users.sf.net>
*
* $Id: tlv.h,v 1.2 2009/01/11 23:11:48 sb-sf Exp $
*/
/* Switches: none */
/* TLV Calibration Data Structure */
#define TAG_DCO_30 0x01 /* Tag for DCO30 Calibration Data */
#define TAG_ADC12_1 0x10 /* Tag for ADC12_1 Calibration Data */
#define TAG_EMPTY 0xFE /* Tag for Empty Data Field in Calibration Data */
#define TLV_CHECKSUM_ 0x10C0 /* TLV CHECK SUM */
sfrw(TLV_CHECKSUM, TLV_CHECKSUM_);
#define TLV_DCO_30_TAG_ 0x10F6 /* TLV TAG_DCO30 TAG */
sfrb(TLV_DCO_30_TAG, TLV_DCO_30_TAG_);
#define TLV_DCO_30_LEN_ 0x10F7 /* TLV TAG_DCO30 LEN */
sfrb(TLV_DCO_30_LEN, TLV_DCO_30_LEN_);
#define TLV_ADC12_1_TAG_ 0x10DA /* TLV ADC12_1 TAG */
sfrb(TLV_ADC12_1_TAG, TLV_ADC12_1_TAG_);
#define TLV_ADC12_1_LEN_ 0x10DB /* TLV ADC12_1 LEN */
sfrb(TLV_ADC12_1_LEN, TLV_ADC12_1_LEN_);
#define CAL_ADC_25T85 0x0007 /* Index for 2.5V/85Deg Cal. Value */
#define CAL_ADC_25T30 0x0006 /* Index for 2.5V/30Deg Cal. Value */
#define CAL_ADC_25VREF_FACTOR 0x0005 /* Index for 2.5V Ref. Factor */
#define CAL_ADC_15T85 0x0004 /* Index for 1.5V/85Deg Cal. Value */
#define CAL_ADC_15T30 0x0003 /* Index for 1.5V/30Deg Cal. Value */
#define CAL_ADC_15VREF_FACTOR 0x0002 /* Index for ADC 1.5V Ref. Factor */
#define CAL_ADC_OFFSET 0x0001 /* Index for ADC Offset */
#define CAL_ADC_GAIN_FACTOR 0x0000 /* Index for ADC Gain Factor */
#define CALDCO_16MHZ_ 0x10F8 /* DCOCTL Calibration Data for 16MHz */
sfrb(CALDCO_16MHZ, CALDCO_16MHZ_);
#define CALBC1_16MHZ_ 0x10F9 /* BCSCTL1 Calibration Data for 16MHz */
sfrb(CALBC1_16MHZ, CALBC1_16MHZ_);
#define CALDCO_12MHZ_ 0x10FA /* DCOCTL Calibration Data for 12MHz */
sfrb(CALDCO_12MHZ, CALDCO_12MHZ_);
#define CALBC1_12MHZ_ 0x10FB /* BCSCTL1 Calibration Data for 12MHz */
sfrb(CALBC1_12MHZ, CALBC1_12MHZ_);
#define CALDCO_8MHZ_ 0x10FC /* DCOCTL Calibration Data for 8MHz */
sfrb(CALDCO_8MHZ, CALDCO_8MHZ_);
#define CALBC1_8MHZ_ 0x10FD /* BCSCTL1 Calibration Data for 8MHz */
sfrb(CALBC1_8MHZ, CALBC1_8MHZ_);
#define CALDCO_1MHZ_ 0x10FE /* DCOCTL Calibration Data for 1MHz */
sfrb(CALDCO_1MHZ, CALDCO_1MHZ_);
#define CALBC1_1MHZ_ 0x10FF /* BCSCTL1 Calibration Data for 1MHz */
sfrb(CALBC1_1MHZ, CALBC1_1MHZ_);
#define CAL_DCO_16MHZ 0x0000 /* Index for DCOCTL Calibration Data for 16MHz */
#define CAL_BC1_16MHZ 0x0001 /* Index for BCSCTL1 Calibration Data for 16MHz */
#define CAL_DCO_12MHZ 0x0002 /* Index for DCOCTL Calibration Data for 12MHz */
#define CAL_BC1_12MHZ 0x0003 /* Index for BCSCTL1 Calibration Data for 12MHz */
#define CAL_DCO_8MHZ 0x0004 /* Index for DCOCTL Calibration Data for 8MHz */
#define CAL_BC1_8MHZ 0x0005 /* Index for BCSCTL1 Calibration Data for 8MHz */
#define CAL_DCO_1MHZ 0x0006 /* Index for DCOCTL Calibration Data for 1MHz */
#define CAL_BC1_1MHZ 0x0007 /* Index for BCSCTL1 Calibration Data for 1MHz */
#ifndef __ASSEMBLER__
/* Structured declaration */
typedef enum
{
DCO_30_TAG = 0x01,
ADC12_1_TAG = 0x10,
EMPTY_TAG = 0xFE,
} tlv_tags_t;
typedef struct
{
unsigned char tag;
unsigned char length;
struct
{
unsigned char DCO_16MHZ;
unsigned char BC1_16MHZ;
unsigned char DCO_12MHZ;
unsigned char BC1_12MHZ;
unsigned char DCO_8MHZ;
unsigned char BC1_8MHZ;
unsigned char DCO_1MHZ;
unsigned char BC1_1MHZ;
} value;
} const dco_30_tag_t;
typedef struct
{
unsigned char tag;
unsigned char length;
struct
{
unsigned int ADC_GAIN_FACTOR;
unsigned int ADC_OFFSET;
unsigned int ADC_15VREF_FACTOR;
unsigned int ADC_15T30;
unsigned int ADC_15T85;
unsigned int ADC_25VREF_FACTOR;
unsigned int ADC_25T30;
unsigned int ADC_25T85;
} value;
} const adc12_1_tag_t;
typedef struct
{
unsigned char tag;
unsigned char length;
} const empty_tag_t;
struct
{
unsigned int checksum;
empty_tag_t empty;
unsigned int dummy[11];
adc12_1_tag_t adc12_1;
dco_30_tag_t dco_30;
} const volatile TLV_bits asm("0x10c0");
#endif // __ASSEMBLER__
#endif /* __msp430_headers_tlv_h */
Как видиде, структура TLV_bits определена как const volatile и привязана к фиксированному адресу.
Вот с ней то компилятор и не подружился!!!!!
Цитата(rezident @ Aug 23 2010, 23:43)

P.S. Чудеса какие-то. Не могу скачать mspgcc-20081230.exe с sourceforge.net sad.gif Файл нулевого размера качается.
логичнее взять отсюда
http://mspgcc4.sourceforge.net/ (свежайшая сборка, базируется на gcc-4.4.3) - можно вытянуть сборку, а можно и собрать из исходников