|
CVAVR struct EEPROM copy struct SRAM |
|
|
|
Jun 11 2007, 08:44
|
Частый гость
 
Группа: Свой
Сообщений: 139
Регистрация: 23-05-05
Из: UA
Пользователь №: 5 317

|
Доброго времени суток. В еепром хранится массив записей. Нужно определить в ram парочку таких же записей и гонять данные туда-сюда. Пишу на CV. (1.25b2 ... пробовал и на других - тот же результат) TINY2313 Первое неудобство: Код typedef eeprom struct{ unsigned char h; unsigned char m; unsigned char s; unsigned char d; } tpoint_eep;
typedef struct{ unsigned char h; unsigned char m; unsigned char s; unsigned char d; } tpoint_ram;
tpoint_ram point_ram; eeprom tpoint_eep point_eep; Приходится объявлять два "почти одинаковых" типа  Ну да ладно ... смирирился .. продолжаю. Код void func1(void) { point_ram = point_eep; } Ругается на ошибку в АСМ-коде ... смотрю листинг - красота! Код __COPYME: SBIC EECR,EEWE RJMP __COPYME IN R23,SREG CLI OUT EEARL,R30 OUT EEARH,R31 SBI EECR,EERE IN R22,EEDR OUT SREG,R23 ADIW R30,1 ST X+,R22 DEC R24 BRNE __COPYME RET OUT EEARH,R31 - нет такого. Встречал кто такое? Как побороли? ____ P.S. Плюнул на CV:"Вот хороший повод переползти на WinAvr" ... почитал ... а у него вообще работа с "не SRAM" через функции eeprom_read_byte и т.д. Тогда получается сравнение point_eep.h == point_rem.h вырастает в такую хучу кода ...
|
|
|
|
|
 |
Ответов
|
Jun 11 2007, 11:41
|

Знающий
   
Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768

|
Увы,у CV большие проблемы в работе с EEPROM  Если вы посмотрите хэлп,то увидите,что практически все библиотечные фукции определены только для данных,лежаших во флеш и рам,а с епром приходится руками работать.Хотя можно доствточно быстро наклеать самописных.)Сответственно,и работа со структурами в EEPROM-дело не для слабонервных. З.Ы. дык если они пишут,что пофиксили баг с доступом в версии 1.25.4,почему не работает в 1.25.5? З.З.Ы. 2 Сергей Борщ в CV в определении структуры надо явно указывать ее тип,а такое опреде ление он понимает как структруру в раме и при определении обьектов структуры еепром ругается на несовпадение типов.
--------------------
"Hello, word!" - 17 errors 56 warnings
|
|
|
|
|
Jun 11 2007, 13:10
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(WHALE @ Jun 11 2007, 14:41)  З.З.Ы. 2 Сергей Борщ в CV в определении структуры надо явно указывать ее тип,а такое определение он понимает как структруру в раме и при определении обьектов структуры еепром ругается на несовпадение типов. Тогда пожалуй прав AndryG: Цитата(AndryG @ Jun 11 2007, 12:14)  может точно в WinAvr переползти ... и нафиг этот cv.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jun 11 2007, 15:32
|

Знающий
   
Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768

|
Цитата(Сергей Борщ @ Jun 11 2007, 17:10)  Тогда пожалуй прав AndryG: (AndryG @ Jun 11 2007, 12:14) может точно в WinAvr переползти ... и нафиг этот cv. Ну вот опять-сразу голову рубить  Может,усы сбрить будет достаточно? Конвенцию это не нарушает,т.к.стандарт С про разные типы памяти,ессно,ни сном ни духом. Соответственно,это 100% особенности реализации конкретного компилятора. Имхо,в CV это сделано логично-без спецификатора типа памяти он по дефолту считает,что работает с ОЗУ,т.е. по стандарту. И опять имхо,а как по другому-указатель на данные в рам и например,во флэш действительно должны иметь разные типы.  З.Ы. Уважаемый аффтар,а нафига вам ваще структура,вы ведь размещаете в ней данные одного типа? Структуры ведь обычно используют для обьединения в единое целое данных разных типов В вашем случае,имхо,массив лучше подойдет.
--------------------
"Hello, word!" - 17 errors 56 warnings
|
|
|
|
|
Jun 11 2007, 17:17
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(WHALE @ Jun 11 2007, 18:32)  Конвенцию это не нарушает,т.к.стандарт С про разные типы памяти,ессно,ни сном ни духом. Соответственно,это 100% особенности реализации конкретного компилятора. Имхо,в CV это сделано логично-без спецификатора типа памяти он по дефолту считает,что работает с ОЗУ,т.е. по стандарту. И опять имхо,а как по другому-указатель на данные в рам и например,во флэш действительно должны иметь разные типы. Не согласен. Типы данных как раз одни и те же - char, int, float, struct. Отличаются они модификатором размещения - например const, volatile, eeprom, __flash. Часть этих модификаторов действительно является расширениями языка, но они никоим образом не говорят о том, что данные имеют другой тип. И насколько я понимаю стандарт, с его точки зрения совершенно фиолетово, что Код typedef struct { ........ } a_type; a_type const a_const; что Код typedef struct const { ........ } a_type; a_type a_const; , а в CV мы наблюдаем именно изменение типа, что для меня несколько непонятно. Цитата(WHALE @ Jun 11 2007, 18:32)  З.Ы. Уважаемый аффтар,а нафига вам ваще структура,вы ведь размещаете в ней данные одного типа? Структуры ведь обычно используют для обьединения в единое целое данных разных типов В вашем случае,имхо,массив лучше подойдет. Вообще-то структуры используют для группирования именованных данных независимо от типа, чтобы потом обращаться к этим данным по осмысленному имени а не по загадочному индексу массива, так что тут автора понять можно. Правда насчет WinAVR можно немного расстроить автора - он вообще прохо представляет что такое флеш и eeprom, поэтому там доступ к данным ф флеш и eeprom делается вручную с помощью функций чтения/записи байта/слова
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Jun 14 2007, 13:50
|
Частый гость
 
Группа: Участник
Сообщений: 108
Регистрация: 15-05-07
Пользователь №: 27 742

|
Цитата(Сергей Борщ @ Jun 11 2007, 20:17)  Правда насчет WinAVR можно немного расстроить автора - он вообще прохо представляет что такое флеш и eeprom, поэтому там доступ к данным ф флеш и eeprom делается вручную с помощью функций чтения/записи байта/слова Как ручками? А вот такое: Код extern void *memcpy_P(void *, PGM_VOID_P, size_t); extern char *strcat_P(char *, PGM_P); extern int strcmp_P(const char *, PGM_P) __ATTR_PURE__; extern char *strcpy_P(char *, PGM_P); extern int strcasecmp_P(const char *, PGM_P) __ATTR_PURE__; extern size_t strlcat_P (char *, PGM_P, size_t ); extern size_t strlcpy_P (char *, PGM_P, size_t ); extern size_t strlen_P(PGM_P) __ATTR_CONST__; /* program memory can't change */ extern size_t strnlen_P(PGM_P, size_t) __ATTR_CONST__; /* program memory can't change */ extern int strncmp_P(const char *, PGM_P, size_t) __ATTR_PURE__; extern int strncasecmp_P(const char *, PGM_P, size_t) __ATTR_PURE__; extern char *strncat_P(char *, PGM_P, size_t); extern char *strncpy_P(char *, PGM_P, size_t); extern char *strstr_P(const char *, PGM_P) __ATTR_PURE__; Это из стандартной библиотеки WinAVR, используем, все работает...
|
|
|
|
Сообщений в этой теме
AndryG CVAVR struct EEPROM copy struct SRAM Jun 11 2007, 08:44 Сергей Борщ Цитата(AndryG @ Jun 11 2007, 11:44) Перво... Jun 11 2007, 09:00 AndryG Не проходит такой простой вариант - пробовал ... р... Jun 11 2007, 09:14 Сергей Борщ Цитата(AndryG @ Jun 11 2007, 12:14) Не пр... Jun 11 2007, 09:31 AndryG Про телепатов я в курсе ...
Кодtypedef struct{
... Jun 11 2007, 10:08    WHALE Цитата(Сергей Борщ @ Jun 11 2007, 21:17) ... Jun 11 2007, 17:34    singlskv Цитата(Сергей Борщ @ Jun 11 2007, 21:17) ... Jun 11 2007, 17:44     Сергей Борщ Цитата(SunnyDevil @ Jun 14 2007, 16:50) К... Jun 14 2007, 19:19 WHALE Цитата(singlskv @ Jun 11 2007, 21:44) И И... Jun 11 2007, 18:14 singlskv Цитата(WHALE @ Jun 11 2007, 22:14) Дык эт... Jun 11 2007, 18:42  AndryG Ух! Как обычно на этом форуме ... хоть вопрос ... Jun 12 2007, 06:24 WHALE Вы будете смеяться,но В CV это реализовано именно ... Jun 12 2007, 06:35 singlskv Цитата(WHALE @ Jun 12 2007, 10:35) Вы буд... Jun 12 2007, 13:37 mdmitry >может кто встречал доку типа "переход с C... Jun 14 2007, 13:35 WHALE Цитата(mdmitry @ Jun 14 2007, 17:35) С EE... Jun 14 2007, 14:55 mdmitry >А мужики-то не знают! Можно поподробнее на... Jun 14 2007, 20:33 WHALE Цитата(mdmitry @ Jun 15 2007, 00:33) Года... Jun 15 2007, 04:26 IgorKossak Цитата(WHALE @ Jun 15 2007, 07:26) А что ... Jun 16 2007, 06:48 mdmitry Цитата(WHALE @ Jun 15 2007, 08:26) А запи... Jun 16 2007, 20:57
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|