Запись-чтение ЕЕПРОМА в АВРе (АТМЕГА) - нужен хелп (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено LORD 26 ноября 2006 г. 08:34

Господа!

У моего коллеги из дальнего зарубежья есть проблема с чтением-записью информации в ЕЕПРОМ АТМЕГи.
Сам он толи стесняется, то ли не хочет раздражать наше с вами внимание своей латиницей.
Привожу текст нашей обезличинной переписки по аське (в аське он пишет по-русски :-)):

SAA (09:14:11 14/11/2006)
на связи?

Man (09:18:32 14/11/2006)
Привет

SAA (09:18:49 14/11/2006)
есть вопрос по еепрому в АВРе

SAA (09:19:16 14/11/2006)
у меня как раз такая задача щас есть - хранить данные в еепроме.
Что там у вас слетало и почему это ненадежно?!

Man (09:19:36 14/11/2006)
Упаси тебя Господь от таких мыслей

SAA (09:19:52 14/11/2006)
просвети страждущего

Man (09:21:08 14/11/2006)
Да вот так случилось что написал прошивку, поставили в плату и все как бы хорошо...
Через год начали поступать жалобы что слетают константы

Man (09:21:29 14/11/2006)
Причем в более новых платах и год ждать не пришлось. Прямо на глазах слетали

Man (09:21:43 14/11/2006)
Может зависит от партии, может еще что...


Man (09:22:03 14/11/2006)
____ сказал, что видел как в конференции некоторые люди тоже жаловались

Man (09:22:29 14/11/2006)
Это про Atmega8

Man (09:22:43 14/11/2006)
Про другие ничего сказать не могу... не сталкивался

Man (09:24:13 14/11/2006)
Причем пропадают данные не закономерно, и не в одном и том же месте.
Разные байты в разное время

Man (09:24:59 14/11/2006)
Решили больше ничего там не хранить, благо Flash позволяет все туда записать.

SAA (09:26:13 14/11/2006)
у меня хххх - м.б. там все Ок?

SAA (09:26:21 14/11/2006)
А в саппорт не пробовали писать?

Man (09:29:55 14/11/2006)
Может ХХХ что-то и пробовал... но как я понял безрезультатно

SAA (09:30:27 14/11/2006)
А в конфу не писали?

Man (09:30:58 14/11/2006)
Думаешь мы соблюли все их технические требования? По поводу график начала включения и нарастания напряжения и то же самое при выключении

Man (09:31:08 14/11/2006)
Ну и еще много всяких условий

SAA (09:31:41 14/11/2006)
Это по барабану...Я не верю, что их АВР д. работатть в идеальных условиях...

SAA (09:32:06 14/11/2006)
А можно было бы формализовать вашу задачу, чтобы в общем виде выявить причину?!

Man (09:32:57 14/11/2006)
Ну как видишь. Что бы что-то записать в ЕЕПРОМ нужно подать спец команду по И2Ц с кучей параметров. Случайное срабатывание просто исключается

Man (09:33:36 14/11/2006)
т.е. я не думаю что я до такой степени "дерьмово" написал прошивку

Man (09:34:28 14/11/2006)
хоть в 90% случаев виновен пользователь, но в этом случае я так не думаю

Man (09:37:21 14/11/2006)
Там в документации написано, как писать и читать из внутренней ЕЕПРОМ. Все сделали по ней. И пишется и читается.
Потом, неизвестно в какой момент и с чем это связано, пропадают некоторые байты. Хотя к ЕЕПРОМ обращались только как чтение.

SAA (09:51:29 14/11/2006)
так в конфе спрашивали?

Man (09:51:56 14/11/2006)
Не знаю. Я не спрашивал.

SAA (09:52:28 14/11/2006)
А ХХХ? Он какой вывод сделал?

SAA (09:58:09 14/11/2006)
Ау?

Man (09:58:53 14/11/2006)
Ничего он не сказал мне по этому поводу. Решили больше ничего там не хранить и все.


SAA (09:59:24 14/11/2006)
понял. А что за команда доступа к ЕЕПРОМ?

Man (10:00:19 14/11/2006)
обычная, как все другие по И2Ц, просто закрыта от лишнего доступа

SAA (10:55:17 14/11/2006)
что за лишний доступ?

Man (10:55:53 14/11/2006)
этим могу пользоваться только я и моя сервисная программа. Больше никто

SAA (10:56:10 14/11/2006)
вопрос такой: я сейчас сморю список команд у АТМЕГИ128 - у вас такая - и не виду клманды доступа к ЕЕПРОМ! А твоя программа мне пока не интересна!

Man (10:56:23 14/11/2006)
т.е. залезть и случайно испотрить константы не получится

Man (10:57:04 14/11/2006)
в списке такой команды нету и не будет

Man (10:57:14 14/11/2006)
она служебная

SAA (10:57:36 14/11/2006)
блин! Мне надо команду на АСМЕ! Я пишу программу для АВРа!

SAA (10:57:45 14/11/2006)
Для СВОЕГО АВРа!

Man (10:58:36 14/11/2006)
т.е. тебе надо показать как писать в ЕЕПРОМ?

Man (10:58:52 14/11/2006)
Щас копию функции дам

Man (11:01:05 14/11/2006)
#include "avreeprom.h"

#define AVR_EEPROM_SIZE 512
#define enable() sei()
#define disable() cli()

extern volatile byte Timer;

byte AVR_EEPROM_read (word AVR_EEPROM_address,byte *ptr,word cnt)
{
if(!cnt) return 0;
Timer = 50;
while(1) {
if(!(EECR & (1< if(Timer == 0) {
return(ERROR_READ_AVR_EEPROM_TIMEOUT);
}
}
if(cnt > AVR_EEPROM_SIZE) cnt = AVR_EEPROM_SIZE;
while(cnt) {
disable();
EEAR = AVR_EEPROM_address++;
EECR |= (1< *ptr++ = EEDR;
enable();
cnt--;
}
return 0;
}

byte AVR_EEPROM_write (word AVR_EEPROM_address,byte *ptr,word cnt)
{
if(!cnt) return 0;
while(cnt) {
Timer = 50;
while(1) {
if(!(EECR & (1< if(Timer == 0) return ERROR_WRITE_AVR_EEPROM_TIMEOUT;
}
disable();
EEAR = AVR_EEPROM_address++;
EEDR = *ptr++;
EECR |= (1< EECR |= (1< enable();
cnt--;
}
return(0);
}

Man (11:01:45 14/11/2006)
Вот тебе 2 функции. Чтение и запись в ЕЕПРОМ. Дальше делаешь с ними все что хочешь

Man(11:05:09 14/11/2006)
Может ошибки какие найдешь ))))

SAA (12:27:10 14/11/2006)
сенкс. посмотрим. слепой сказал: посмотрим! :-)

SAA (10:01:11 15/11/2006)
Короче, будем ставить Аттайни13 - там во флешь писать можно!

SAA (10:02:38 15/11/2006)
http://zemsky.livejournal.com/481290.html :-)

SAA (09:14:58 17/11/2006)
http://community.livejournal.com/400bus/1869.html

SAA (11:07:39 21/11/2006)
Как сам?

Man (11:08:19 21/11/2006)
потихоньку, а ты?

SAA (11:25:49 21/11/2006)
номано

SAA (12:19:27 21/11/2006)
хотел спросить. Ты вот функции мне по доступу к ЕЕПРОМ высылал - я могу нашу переписку с тобой обезличить и в коныеренции попросить прокомментировать?

Man (12:51:16 21/11/2006)
Конечно

SAA (13:00:21 21/11/2006)
в телесиси или електроникс?

Man (13:15:13 21/11/2006)
Да как хош

SAA (13:19:47 21/11/2006)
ок

SAA (09:46:01 22/11/2006)
http://anatoly1206.livejournal.com/2311.html

Так что, прошу прощения за длинный пост, многое из котрого ОФФ, но!
Кто что по записи в ЕЕПРОМ и слету оттуда данных может сказать?

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа
Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
URL изображения: 
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
прибавьте тройку к двум:


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание