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

 
 
> IAR C v5.11 переопределение I/O
Д_М
сообщение Jun 13 2014, 18:20
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 121
Регистрация: 15-04-05
Из: Краснодар
Пользователь №: 4 185



Здравствуйте!
Старичёк IAR v2.28 позволял многократно преопредилять порты микроконтроллера например:

Код
__no_init volatile __io union
{
unsigned char Uni_Hi;// Control signals
struct
    {
    unsigned char P_B0:1;
    unsigned char P_B1:1;
    unsigned char P_B2:1;
    unsigned char P_B3:1;
    unsigned char P_B4:1;
    unsigned char White_LED:1;
    unsigned char RxGreen_LED:1;
    unsigned char RxRed_LED:1;
    };
} @ 0x18;// PortB

Он даже не ругался, если два одинаковых переопределения были в одном файле.

v5.11 же ругался до тех пор, пока не отключил из программы файл IOAVR.h. Пришлось руками набить все нужные ресурсы.
Вроде бы и не сложно, но как-то не красиво. Высока вероятность ошибки, которую ух как долго придётся искать.
Как исключить конфликты между стандартными определениями портов и своими собственными?
Заранее спасибо!

Сообщение отредактировал IgorKossak - Jun 15 2014, 19:46
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Xenia
сообщение Jun 13 2014, 19:17
Сообщение #2


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Д_М @ Jun 14 2014, 02:30) *
Как исключить конфликты между стандартными определениями портов и своими собственными?


Откомпилировала:

Код
#define ENABLE_BIT_DEFINITIONS

#include <ina90.h>
#include <ioavr.h>

__no_init volatile __io union
{
unsigned char Uni_Hi;// Control signals
struct
{
unsigned char P_B0:1;
unsigned char P_B1:1;
unsigned char P_B2:1;
unsigned char P_B3:1;
unsigned char P_B4:1;
unsigned char White_LED:1;
unsigned char RxGreen_LED:1;
unsigned char RxRed_LED:1;
};
} @ 0x18;// PortB
.......
C_task main()
{
.......
  White_LED = 1;
.......
}

Ни ошибок, ни варнингов не обнаружено. Результат компиляции:

Код
486            White_LED  = 1;
\   0000000E   9AC5               SBI     0x18, 0x05

Компилятор IAR EWAVR 6.40.1.
Go to the top of the page
 
+Quote Post
Д_М
сообщение Jun 14 2014, 08:05
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 121
Регистрация: 15-04-05
Из: Краснодар
Пользователь №: 4 185



Набил тоже самое - не работает. Ошибка линковщика. Смотрите вложение. Может быть, поделитесь компилятором?! Заранее благодарен!


Сообщение отредактировал IgorKossak - Jun 15 2014, 19:46
Причина редактирования: избыточное цитирование
Go to the top of the page
 
+Quote Post
Xenia
сообщение Jun 14 2014, 08:43
Сообщение #4


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Д_М @ Jun 14 2014, 16:15) *
Набил тоже самое - не работает. Ошибка линковщика. Смотрите вложение.


Вложения не вижу. Написала вам в личку.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 01:05
Рейтинг@Mail.ru


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