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

 
 
 
Reply to this topicStart new topic
> Копирование структуры из EEPROM в RAM
viktor_kun
сообщение Dec 28 2006, 11:37
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 28-12-06
Пользователь №: 23 965



Не получается скопировать переменную структурного типа, расположенную в EEPROM, в переменную такого же типа расположенную в RAM


#define CLOCKS struct\
{\
unsigned char second;\
unsigned char minute;\
unsigned char hour;\
unsigned char date;\
unsigned char weekday;\
unsigned char month;\
unsigned char year;\
}

__eeprom CLOCKS clockBuff = {48,55,10,3,5,11,6}; // инициализирую структуру расположенную в
// в EEPROM
CLOCKS clock; // переменная в RAM
clock = clockBuff; // Не копируется - ошибка

Выдаются следующие ошибки:

Error[Pe077]: this declaration has no storage class or type specifier
Error[Pe147]: declaration is incompatible with "struct <unnamed> __near clock" (declared at line 12)
Error[Pe028]: expression must have a constant value

Самое непонятное, что значит struct <unnamed>.?

Может B IAR'e есть какие-то стандартные функции как eeprom_read_block(); в GCC например?
Go to the top of the page
 
+Quote Post
otrog
сообщение Dec 28 2006, 11:50
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 232
Регистрация: 22-02-06
Из: Воронеж
Пользователь №: 14 589



Ошибка в том, что Вы делаете присвоение вне функции:
Код
clock = clockBuff; // Не копируется - ошибка

Переместите присвоение внутрь какой нибудь функции.


--------------------
Истина рождается в спорах; но когда страсти кипят, истина испаряется.
Go to the top of the page
 
+Quote Post
viktor_kun
сообщение Dec 28 2006, 12:15
Сообщение #3





Группа: Новичок
Сообщений: 3
Регистрация: 28-12-06
Пользователь №: 23 965



пробовал, выдает следующую ошибку

Error[Pe513]: a value of type "struct <unnamed>" cannot be assigned to an entity of type "struct <unnamed> __eeprom *"


так же проблемы с указателями

CLOCKS __eeprom * clock_ptr_eep // указатель на структуру CLOCK находящуюся в EEPROM, сам указатель находися в RAM не выдает ошибок


main()
{
clock_ptr_eep = &clockBuff; // ткже выдает ошибки

..........

}

Error[Pe513]: a value of type "struct <unnamed> __eeprom *" cannot be assigned to an entity of type "struct <unnamed> __eeprom *"

Сообщение отредактировал viktor_kun - Dec 28 2006, 12:22
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Dec 28 2006, 12:36
Сообщение #4


Шаман
******

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



Попробуйте определить структуру через typedef, а не через #define.
У меня таким образом всё работает.

Например так:
typedef struct clocks
{
unsigned char second;
unsigned char minute;
unsigned char hour;
unsigned char date;
unsigned char weekday;
unsigned char month;
unsigned char year;
} CLOCKS;
Go to the top of the page
 
+Quote Post
viktor_kun
сообщение Dec 28 2006, 13:09
Сообщение #5





Группа: Новичок
Сообщений: 3
Регистрация: 28-12-06
Пользователь №: 23 965



Спасибо большое теперь все работает, в том числе и указатели.
Go to the top of the page
 
+Quote Post

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

 


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


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