При переходе на последний IAR для NEC v850 столкнулся с проблемой установки байт конфигурации контроллера. До этого это делал в ассемблерном файле вот так:
Код
#include "config.h"
ASEG
NAME RSU
COMMON INTVEC:CODE:ROOT(4)
ORG 0x70
PUBLIC IDCODE
PUBLIC MASK_OPTIONS
IDCODE: DB IDCODE_BYTE1_CONFIG
DB IDCODE_BYTE2_CONFIG
DB IDCODE_BYTE3_CONFIG
DB IDCODE_BYTE4_CONFIG
DB IDCODE_BYTE5_CONFIG
DB IDCODE_BYTE6_CONFIG
DB IDCODE_BYTE7_CONFIG
DB IDCODE_BYTE8_CONFIG
DB IDCODE_BYTE9_CONFIG
DB IDCODE_BYTE10_CONFIG
MASK_OPTIONS: DB MASK_OPTIONS_CONFIG1
DB MASK_OPTIONS_CONFIG2
END
Но в последней версии IAR что-то подправили в компиляторе ассемблера и он перестал воспринимать длинные строки на русском. Такие строки с комментариями находятся в файле config.h, который и подключается.
Попробовал устанавливать из C кода:
Код
//ID Code:
__root const unsigned char IDC1 @ 0x00000070 = IDCODE_BYTE1_CONFIG;
__root const unsigned char IDC2 @ 0x00000071 = IDCODE_BYTE2_CONFIG;
__root const unsigned char IDC3 @ 0x00000072 = IDCODE_BYTE3_CONFIG;
__root const unsigned char IDC4 @ 0x00000073 = IDCODE_BYTE4_CONFIG;
__root const unsigned char IDC5 @ 0x00000074 = IDCODE_BYTE5_CONFIG;
__root const unsigned char IDC6 @ 0x00000075 = IDCODE_BYTE6_CONFIG;
__root const unsigned char IDC7 @ 0x00000076 = IDCODE_BYTE7_CONFIG;
__root const unsigned char IDC8 @ 0x00000077 = IDCODE_BYTE8_CONFIG;
__root const unsigned char IDC9 @ 0x00000078 = IDCODE_BYTE9_CONFIG;
__root const unsigned char IDC10 @ 0x00000079 = IDCODE_BYTE10_CONFIG;
//Mask Options:
__root const unsigned char OB_7A @ 0x0000007A = MASK_OPTIONS_CONFIG1;
__root const unsigned char OB_7B @ 0x0000007B = MASK_OPTIONS_CONFIG2;
Но в этом случает что-то проходит не так. Не работаю прерывания таймера да и вообще, система ведет себя неадекватно. Смотрел дебагером память, константы лежат в нужном месте. Кто-нибудь сталкивался с такой проблемой?
Сообщение отредактировал Newegor - Dec 15 2010, 18:06