реклама на сайте
подробности

 
 
> Проблема c IAR
cyb
сообщение Sep 15 2011, 17:09
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 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)

Ума не приложу что это за собака в коде и что она значит? cranky.gif

П.С. Если что представлю код подробнее, когда буду на работе.

Сообщение отредактировал cyb - Sep 15 2011, 17:10
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KRS
сообщение Sep 16 2011, 09:47
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(cyb @ Sep 15 2011, 21:09) *
static __io struct
{
..
} _PORTA @ 0x21;

Ругается так:
Error [e46]: Undefined external reference _PORTA (../../../xxx.d90)


Посмотрел я новый iomacro, там тоже самое!
попробуйте static убрать! должно работать.
либо добавить обертку
Код
__io union {
    struct {
        ..
    } _PORTA;
} @ 0x21;



Код
#define SYNC_O _PORTA._P6

можно и эти #define заменить.


Цитата(cyb @ Sep 16 2011, 13:37) *
В общем идёт так:

В заголовке определяется:

static volatile __io struct
{
BYTE _P0:1, _P1:1, _P2:1, _P3:1, _P4:1, _P5:1, _P6:1, _P7:1;
} _PING @ 0x63;

Далее переопределяется в другом заголовке так:

#define ADCDOUT2_O _PORTG.P2
#define ADCDOUT2_I _PING.P2
#define ADCDOUT2_C _DDRG.P2
#define ADCDOUT2_M (1 << P2)


а где подчеркивания? должно быть
#define ADCDOUT2_O _PORTG._P2

Цитата(cyb @ Sep 16 2011, 13:37) *
Ну вот я и попробовал сделать так:
#define ADCDOUT2_O PORTG.P2
#define ADCDOUT2_I PING.P2
#define ADCDOUT2_C DDRG.P2
#define ADCDOUT2_M (1 << P2)


Но компилятор засыпал ошибками на таких условиях
if(ADCDOUT2_I) _Bytes[2] |= 0x80;
Error[Pe133]: expected a member name D:\WORK\PROJECTS\KP01\CybVe_newIAR\TAD7714.cpp 28

нужно PORTG_PORTG2 и т.п.


и не понятно что значит
(1 << P2)


Сообщение отредактировал KRS - Sep 16 2011, 09:52
Go to the top of the page
 
+Quote Post
cyb
сообщение Sep 16 2011, 10:50
Сообщение #3


Участник
*

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



Код
__io union {
    struct {
        ..
    } _PORTA;
} @ 0x21;

Да такая конструкция сработала, только дело в том что там у меня все структуры определенные в классах, поэтому в классы такую конструкцию включать нельзя, а вот если вынести то всё работает.

Цитата
а где подчеркивания? должно быть
#define ADCDOUT2_O _PORTG._P2

Да правильно это просто я здесь опечатался.

Цитата
и не понятно что значит
(1 << P2)

Что это понятно, а вот как тут используется непонятно.

Цитата
нужно PORTG_PORTG2 и т.п.

Это тоесть? Странная какая-то запись. Может вы имели в виду PORTG.2?

Сообщение отредактировал cyb - Sep 16 2011, 10:50
Go to the top of the page
 
+Quote Post
KRS
сообщение Sep 16 2011, 11:33
Сообщение #4


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(cyb @ Sep 16 2011, 14:50) *
Это тоесть? Странная какая-то запись. Может вы имели в виду PORTG.2?

Нет, я имел ввиду
PORTG_PORTG2
так раскрывается макрос, пример можете посмотреть в файле iomacro.h

Код
/*
  SFR_B_N(0x3F,SREG,I,T,H,S,V,N,Z,C) Expands to:
  __io union {
              unsigned char   SREG;          // The sfrb as 1 byte
              struct {                        // The sfrb as 8 bits
                      unsigned char SREG_Bit0:1,
                                    SREG_Bit1:1,
                                    SREG_Bit2:1,
                                    SREG_Bit3:1,
                                    SREG_Bit4:1,
                                    SREG_Bit5:1,
                                    SREG_Bit6:1,
                                    SREG_Bit7:1;
                     };
              struct {                        // The sfrb as 8 bits
                      unsigned char SREG_C:1,
                                    SREG_Z:1,
                                    SREG_N:1,
                                    SREG_V:1,
                                    SREG_S:1,
                                    SREG_H:1,
                                    SREG_T:1,
                                    SREG_I:1;
                     };
             } @ 0x3F;
*/


Go to the top of the page
 
+Quote Post
cyb
сообщение Sep 16 2011, 12:08
Сообщение #5


Участник
*

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



Цитата(KRS @ Sep 16 2011, 14:33) *
Нет, я имел ввиду
PORTG_PORTG2
так раскрывается макрос, пример можете посмотреть в файле iomacro.h

А понятно, в принципе структура с union работает, так что остановлюсь на этом, а то такие многоэтажные макросы как в iomacro.h пока слишком для меня. Спасибо за помощь.

Сообщение отредактировал cyb - Sep 16 2011, 12:09
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
- - cyb   Цитата1. есть препроцессор 2. посмотрите как в род...   Sep 16 2011, 07:42
|- - KRS   Цитата(cyb @ Sep 16 2011, 11:42) Ну да по...   Sep 16 2011, 08:40
|- - demiurg_spb   Цитата(cyb @ Sep 16 2011, 11:42) Ну да по...   Sep 16 2011, 08:41
|- - cyb   Цитата(demiurg_spb @ Sep 16 2011, 11:41) ...   Sep 16 2011, 09:12
|- - demiurg_spb   Тогда проще по тексту программы убрать все эти убо...   Sep 16 2011, 09:35
- - demiurg_spb   Цитата(cyb @ Sep 15 2011, 21:09) Ума не п...   Sep 16 2011, 08:39
- - cyb   В общем идёт так: В заголовке определяется: stat...   Sep 16 2011, 09:37
- - cyb   Хм, в общем переопределил все имена в новом иаре, ...   Sep 23 2011, 11:15
- - KRS   Цитата(cyb @ Sep 23 2011, 15:15) _A_PORTE...   Sep 23 2011, 13:50


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th July 2025 - 00:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01432 секунд с 7
ELECTRONIX ©2004-2016