Массив в EEPROM - где собака зарыта?

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Открыл глаза
Сообщения: 70
Зарегистрирован: Пт янв 30, 2009 18:02:40

Сообщение mackerel »

В главном модуле объявляю переменные:
__no_init u8b __eeprom FactorySettingsArray[4095] @0x0000;
__no_init u8b __eeprom OwnExternalAddress @0x0fff;

В модуле AllCommandHandler использую их, для чего объявляю их внешними:
extern __no_init u8b __eeprom OwnExternalAddress;
extern __no_init u8b __eeprom FactorySettingsArray[];

При линчевании возникает ошибка:
Error[e46]: Undefined external "FactorySettingsArray" referred in AllCommandHandler ( C:\Mackerel\2HDMI_SDI_Cod\Release\Obj\

Если в объявлении убрать @0x0000 (привязка к конкретному адресу) - всё работает. Но мне привязка крайне важна. В чём дело, уважаемые коты?
P.S. это только пример, конечно, на самом деле переменных несколько больше и объём массивов несколько меньше.
Реклама
Опытный кот
Аватара пользователя
Сообщения: 890
Зарегистрирован: Вт янв 20, 2009 14:49:08
Откуда: Гондурас, Мурманск

Сообщение DrWatson »

Наверное стоит объявить эти переменные в отдельном заголовочном файле, который подключать в обоих модулях директивой

Код: Выделить всё

#include "Vars.h".
Vars.h

Код: Выделить всё

#ifndef VARS_INCLUDED
__no_init u8b __eeprom FactorySettingsArray[4095] @0x0000; 
__no_init u8b __eeprom OwnExternalAddress @0x0fff;
#define VARS_INCLUDED
#endif
- Если вы такие умные, то почему тогда строем не ходите?
ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
Реклама
Открыл глаза
Сообщения: 70
Зарегистрирован: Пт янв 30, 2009 18:02:40

Сообщение mackerel »

DrWatson писал(а):Наверное стоит объявить эти переменные в отдельном заголовочном файле
Спасибо, проверю...
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»