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

 
 
2 страниц V  < 1 2  
Closed TopicStart new topic
> CVAVR struct EEPROM copy struct SRAM
singlskv
сообщение Jun 12 2007, 13:37
Сообщение #16


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(WHALE @ Jun 12 2007, 10:35) *
Вы будете смеяться,но В CV это реализовано именно с помощью простого присвоения
char a=5;
eeprom char b;
b=a;
Все что вы написали,абсолютно верно,только имхо,все это нужно просто держать в уме.
З.Ы. Последние посты уже откровенный оффтоп и религиозная война-я предлагаю прекратить,пока
че-нить от модеров не огребли. sad.gif Первым начал я -извиняюсь,вчера немного праздновали. smile.gif
З.З.ЫПока писал-пропустил пост аффтара. Могу вам сбросить 1.25.5-никмких проблем с взломом нет.

Если Вы это про мой пост, то я вобще названий никаких компиляторов в
своих постах не упоминал 07.gif
Я говорил только про запись в eeprom вне зависимости от компилятора...
Я в курсе что в некоторых компиляторах запись осуществляется присвоением,
но ИМХО, чаще всего, так делать не стоит.

Так что никаких религиозных войн beer.gif
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Jun 14 2007, 13:35
Сообщение #17


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



>может кто встречал доку типа "переход с CV на (WinAVR/IAR)"
Не встречал. Использую WinAVR последней версии. Его выбрал давно за GPL wink.gif. Сравнивал с IAR новым. Где-то лучше, где-то хуже. Некий код компилировал под оба и смотрел дизассемблер. В моем случае WinAVR больше понравился. Make файл не столь страшен. Есть скрипт в поставке, генерящий его под Вашу задачу. Достаточно просто правиться руками.
С EEPROM работал через функции встроенной библиотеки, вполне корректно, за исключением аппаратного глюка в EEPROM ATMega128. Выбор за Вами в любом случае.
Наверно сообщение несколько не по теме.

Сообщение отредактировал mdmitry - Jun 14 2007, 13:39


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
SunnyDevil
сообщение Jun 14 2007, 13:50
Сообщение #18


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

Группа: Участник
Сообщений: 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, используем, все работает...
Go to the top of the page
 
+Quote Post
WHALE
сообщение Jun 14 2007, 14:55
Сообщение #19


Знающий
****

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



Цитата(mdmitry @ Jun 14 2007, 17:35) *
С EEPROM работал через функции встроенной библиотеки, вполне корректно, за исключением аппаратного глюка в EEPROM ATMega128. Выбор за Вами в любом случае.
Наверно сообщение несколько не по теме.

А мужики-то не знают! sad.gif Можно поподробнее насчет аппаратного глюка EEPROM ATMega128?Прям щас
лежит девайс c ATMega128 на столе,EEPROM довольно активно испльзуется,вроде полет нормальный.
Где грабли зарыты?


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 14 2007, 19:19
Сообщение #20


Гуру
******

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



Цитата(SunnyDevil @ Jun 14 2007, 16:50) *
Как ручками?
Код
typedef struct
{
   uint8_t a;
   uint16_t b;
} tipa_struct_t

tipa_struct_t Struct1;
tipa_struct_t PROGMEM Struct2 = {1,2};

void test()
{
    Struct1 = Struct2;   // ась???
}
char T;
void test2(const prog_char * pSrc)
{
     T = *pSrc;  // ась?
}


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Jun 14 2007, 20:33
Сообщение #21


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



>А мужики-то не знают! Можно поподробнее насчет аппаратного глюка EEPROM ATMega128?Прям щас
>лежит девайс c ATMega128 на столе,EEPROM довольно активно испльзуется,вроде полет нормальный.
>Где грабли зарыты?
Года два назад. Компилятор WinAvr был 2005 года . Не записывался первый байт в EEPROM по любому страничному адресу, а не только по нулевому (известный глюк). Обнаружили при чтении программатором EEPROM'а после записи данных. Пришлось использовать мажоритарную схему 2 из 3 для надежного сохранения блоков данных, каждый блок с CRC8. Может быть в новых ревизиях кристаллов это исправлено. А может у меня руки кривые sad.gif .? Проверить нет возможности новый компилятор и кристаллы, так как платы переданы заказчику.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
WHALE
сообщение Jun 15 2007, 04:26
Сообщение #22


Знающий
****

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



Цитата(mdmitry @ Jun 15 2007, 00:33) *
Года два назад. Компилятор WinAvr был 2005 года . Не записывался первый байт в EEPROM по любому страничному адресу, а не только по нулевому (известный глюк). Обнаружили при чтении программатором EEPROM'а после записи данных. Пришлось использовать мажоритарную схему 2 из 3 для надежного сохранения блоков данных, каждый блок с CRC8. Может быть в новых ревизиях кристаллов это исправлено. А может у меня руки кривые sad.gif .? Проверить нет возможности новый компилятор и кристаллы, так как платы переданы заказчику.

Ну дык так и пишите,что по неизвестной причине у меня глючил EEPROM,а не про "известный аппарат-
ный глюк",а то я уже было испугался. sad.gif
А запись в нулевую ячейку вылечили еще в поздних ревизиях at90.
А что такое страничный адрес EEPROM?это-ж не пик.


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Jun 16 2007, 06:48
Сообщение #23


Шаман
******

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



Цитата(WHALE @ Jun 15 2007, 07:26) *
А что такое страничный адрес EEPROM?это-ж не пик.

В современных ATmega EEPROM разделена на страницы с целью ускорения программирования внешними программаторами.
На программирование из программы страничность EEPROM никакого влияния не оказывает.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Jun 16 2007, 20:57
Сообщение #24


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(WHALE @ Jun 15 2007, 08:26) *
А запись в нулевую ячейку вылечили еще в поздних ревизиях at90.

Это я и назвал известным глюком.
Выразился плохо про страничные адреса, извините crying.gif .
Делал запись по адресам кратным 0x100. Эффект описал ранее, использовались функции из библиотеки WinAvr соответствующей версии.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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