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

 
 
> Пару вопросов по IAR AVR
SZ0
сообщение Mar 14 2009, 19:44
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 14-02-06
Пользователь №: 14 331



Компилятор 5.11

1.
В файле var.h

Код
typedef union
{
unsigned char f4_b;
struct
{
  unsigned char start1:1;           //0 - клавиша отжата, 1 - нажата
  unsigned char stop1:1;
  unsigned char block1:1;
  unsigned char start2:1;
  unsigned char stop2:1;
  unsigned char block2:1;
  unsigned char start3:1;
  unsigned char stop3:1;
};
}flag4;

extern flag4 f4;


В файле var.c

Код
flag4 f4;


При обращении к флагам f4.start1 = 1 компилятор пишет Error[Pe134]: expected a field name
Если убрать 1 в конце названия флага в описании типа (start:1) и обращаться в программе f4.start = 1 то всё нормально. Ещё оказалось если так же в названии типа написать start_1 и в программе обращаться f4.start_1 = 1 то тоже всё замечательно. Чем же компилятору не понравилось название start1? Переменные с цифрами в конце не создают проблем.

2.
После компиляции проекта компилятор выдал: 736 bytes of DATA memory (+ 22 absolute )
При этом все переменные у меня просто не занимают столько памяти! Полез копаться в листингах, там я не шибко силён. Нашёл в файле map следующее:

Код
                ****************************************
                *                                      *
                *            MODULE SUMMARY            *
                *                                      *
                ****************************************

Module               CODE      DATA         XDATA
------               ----      ----         -----
                    (Rel)  (Rel)  (Abs)  (Rel)  (Abs)
?C_STARTUP             36
?EEPROM_16             26
?EPILOGUE_B_L09        18
?FILLER_BYTES           8
  + common            220
?PROLOGUE_L09          10
?RESET
  + common              4
?__exit                 6
?low_level_init         4
?segment_init         128
?xV_SWITCH_L06        192
lcd                   836
  + shared                                          1
main                  617      6      9
  + shared              7             3
tcnt1                 144     11      4
  + common             72
uart                  382      6      6
  + common            220
var                          137           135
N/A (command line)           576
N/A (alignment)
----------          -----    ---     --    ---      -
Total:              2 414    736     22    135      1
  + common            220


Что это за строка - N/A (command line) 576? Откуда эти 576 байт данных могли взяться? cranky.gif

Сообщение отредактировал SZ0 - Mar 14 2009, 19:48
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
IgorKossak
сообщение Mar 19 2009, 18:24
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Выкладываю патч, если ещё нужен.
Прикрепленные файлы
Прикрепленный файл  iccavr5.12C3.zip ( 3.29 мегабайт ) Кол-во скачиваний: 62
 
Go to the top of the page
 
+Quote Post
SZ0
сообщение Mar 24 2009, 11:15
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 326
Регистрация: 14-02-06
Пользователь №: 14 331



Цитата(IgorKossak @ Mar 19 2009, 23:24) *
Выкладываю патч, если ещё нужен.


За патч спасибо. Поставил нормально.

Вот что оказалось с флагами типа name1 и name_1.

Если флаг находится в I/O регистрах, я использую GPIOX регистры, то флаг можно назвать хоть name1, хоть name_1. Проблем при обращении нет.

Код
__io union
{
unsigned char f3_b;
struct
{
  unsigned char time1:1;
  unsigned char admin:1;
  unsigned char rx_st:1;
  unsigned char ed_time:1;
  unsigned char reld:1;
  unsigned char sync:1;
  unsigned char :1;
  unsigned char :1;
}f3;
}@ 0x2b;


А вот если флаг находится в SRAM (как в 1м сообщении), то компилятор позволяет к нему обращаться только когда он назван name_1.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- SZ0   Пару вопросов по IAR AVR   Mar 14 2009, 19:44
- - SergeyTT   Я не гуру в программировании,но вот такой код не р...   Mar 14 2009, 22:40
|- - SZ0   Цитата(SergeyTT @ Mar 15 2009, 03:40) Я н...   Mar 16 2009, 07:31
|- - IgorKossak   Цитата(SZ0 @ Mar 16 2009, 09:31) Оставил ...   Mar 16 2009, 09:00
|- - SZ0   Цитата(IgorKossak @ Mar 16 2009, 14:00) В...   Mar 16 2009, 10:21
|- - IgorKossak   Цитата(SZ0 @ Mar 16 2009, 12:21) А где ск...   Mar 16 2009, 13:01
|- - SZ0   Цитата(IgorKossak @ Mar 16 2009, 18:01) Я...   Mar 16 2009, 15:24
|- - IgorKossak   Цитата(SZ0 @ Mar 16 2009, 17:24) На сайте...   Mar 16 2009, 15:27
- - Непомнящий Евгений   Цитата(SZ0 @ Mar 14 2009, 22:44) Что это ...   Mar 16 2009, 05:20
- - Димитрий   Цитата(SZ0 @ Mar 14 2009, 22:44) При обра...   Mar 17 2009, 05:03
|- - SZ0   Цитата(Димитрий @ Mar 17 2009, 10:03) А в...   Mar 17 2009, 05:15
|- - IgorKossak   Цитата(Димитрий @ Mar 17 2009, 07:03) Сде...   Mar 17 2009, 07:49
|- - SZ0   Цитата(IgorKossak @ Mar 17 2009, 12:49) П...   Mar 17 2009, 09:19
|- - IgorKossak   Цитата(SZ0 @ Mar 24 2009, 13:15) А вот ес...   Mar 24 2009, 13:04
|- - SZ0   Цитата(IgorKossak @ Mar 24 2009, 18:04) О...   Mar 26 2009, 05:26
- - IgorKossak   Скорее всего в Вашем большом проекте имеется конфл...   Mar 26 2009, 09:05


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

 


RSS Текстовая версия Сейчас: 4th August 2025 - 04:18
Рейтинг@Mail.ru


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