|
Проблема c IAR |
|
|
|
Sep 15 2011, 17:09
|

Участник

Группа: Участник
Сообщений: 39
Регистрация: 29-08-11
Из: Киев
Пользователь №: 66 910

|
Здравствуйте. В общем сразу к делу. Перехожу на IAR под AVR и задача доработать программу, которая написана на IDE IAR 4.20. Открываю проект в IAR 5.51 пробую компилировать, но линковщик выдает ошибку [e46]. Причём проект компилируется в старом IAR 4.20 без ошибок. Так вот, как нужно изменить код чтобы он линковался без ошибок в новом IARe? Код:... static __io struct { .. } _PORTA @ 0x21; Ругается так: Error [e46]: Undefined external reference _PORTA (../../../xxx.d90) Ума не приложу что это за собака в коде и что она значит? П.С. Если что представлю код подробнее, когда буду на работе.
Сообщение отредактировал cyb - Sep 15 2011, 17:10
|
|
|
|
|
 |
Ответов
|
Sep 16 2011, 07:42
|

Участник

Группа: Участник
Сообщений: 39
Регистрация: 29-08-11
Из: Киев
Пользователь №: 66 910

|
Цитата 1. есть препроцессор 2. посмотрите как в родных ioXXX файлах описаны регистры. Ну да посмотрел, но не пойму как заменить такую запись static volatile __io struct { BYTE _P0:1, _P1:1, _P2:1, _P3:1, _P4:1, _P5:1, _P6:1, _P7:1; } _PING @ 0x63; такой как в ioxxx.h SFR_B_N(0x63, PING, Dummy7, Dummy6, Dummy5, PING4, PING3, PING2, PING1, PING0)
|
|
|
|
|
Sep 16 2011, 08:41
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(cyb @ Sep 16 2011, 11:42)  Ну да посмотрел, но не пойму как заменить такую запись... Вам нужно определить имя порта с подчёркиванием? Тогда так наверное: Код SFR_B_N(0x63, _PING, Dummy7, Dummy6, Dummy5, PING4, PING3, PING2, PING1, PING0) или так Код #define _PING PING Да, там ещё в настройках есть галочка типа "Enable SFR defs", так её нужно поставить...
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Sep 16 2011, 09:12
|

Участник

Группа: Участник
Сообщений: 39
Регистрация: 29-08-11
Из: Киев
Пользователь №: 66 910

|
Цитата(demiurg_spb @ Sep 16 2011, 11:41)  Вам нужно определить имя порта с подчёркиванием? Тогда так наверное: Код SFR_B_N(0x63, _PING, Dummy7, Dummy6, Dummy5, PING4, PING3, PING2, PING1, PING0) или так Код #define _PING PING Да, там ещё в настройках есть галочка типа "Enable SFR defs", так её нужно поставить... Нет, не помогло. Вообще всё это нужно для красоты как я понял, далее по программе есть такие определения например: #define SYNC_O _PORTA._P6 #define SYNC_I _PINA._P6 #define SYNC_C _DDRA._P6 #define SYNC_M (1 << P6) Галочка на Enable SFR defs естественно стоит.
Сообщение отредактировал cyb - Sep 16 2011, 09:13
|
|
|
|
Сообщений в этой теме
cyb Проблема c IAR Sep 15 2011, 17:09 KRS А зачем _PORTA определять? в ioXXX.h для вашего ко... Sep 15 2011, 20:09 cyb Цитата(KRS @ Sep 15 2011, 23:09) А зачем ... Sep 16 2011, 06:45 KRS 1. есть препроцессор
2. посмотрите как в родных i... Sep 16 2011, 07:05 KRS Цитата(cyb @ Sep 16 2011, 11:42) Ну да по... Sep 16 2011, 08:40 demiurg_spb Цитата(cyb @ Sep 15 2011, 21:09) Ума не п... Sep 16 2011, 08:39 cyb В общем идёт так:
В заголовке определяется:
stat... Sep 16 2011, 09:37 KRS Цитата(cyb @ Sep 15 2011, 21:09) static _... Sep 16 2011, 09:47 cyb Код__io union {
struct {
..
} _PORTA;
} @ 0x21... Sep 16 2011, 10:50  KRS Цитата(cyb @ Sep 16 2011, 14:50) Это тоес... Sep 16 2011, 11:33   cyb Цитата(KRS @ Sep 16 2011, 14:33) Нет, я и... Sep 16 2011, 12:08 cyb Хм, в общем переопределил все имена в новом иаре, ... Sep 23 2011, 11:15 KRS Цитата(cyb @ Sep 23 2011, 15:15) _A_PORTE... Sep 23 2011, 13:50
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|