|
Господа!
У моего коллеги из дальнего зарубежья есть проблема с чтением-записью информации в ЕЕПРОМ АТМЕГи.
Сам он толи стесняется, то ли не хочет раздражать наше с вами внимание своей латиницей.
Привожу текст нашей обезличинной переписки по аське (в аське он пишет по-русски :-)):
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) byte AVR_EEPROM_write (word AVR_EEPROM_address,byte *ptr,word cnt) Man (11:01:45 14/11/2006) Man(11:05:09 14/11/2006) SAA (12:27:10 14/11/2006) SAA (10:01:11 15/11/2006) SAA (10:02:38 15/11/2006) SAA (09:14:58 17/11/2006) 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) Так что, прошу прощения за длинный пост, многое из котрого ОФФ, но!
{
if(!cnt) return 0;
Timer = 50;
while(1) {
if(!(EECR & (1<
return(ERROR_READ_AVR_EEPROM_TIMEOUT);
}
}
if(cnt > AVR_EEPROM_SIZE) cnt = AVR_EEPROM_SIZE;
while(cnt) {
disable();
EEAR = AVR_EEPROM_address++;
EECR |= (1<
enable();
cnt--;
}
return 0;
}
{
if(!cnt) return 0;
while(cnt) {
Timer = 50;
while(1) {
if(!(EECR & (1<
}
disable();
EEAR = AVR_EEPROM_address++;
EEDR = *ptr++;
EECR |= (1<
cnt--;
}
return(0);
}
Вот тебе 2 функции. Чтение и запись в ЕЕПРОМ. Дальше делаешь с ними все что хочешь
Может ошибки какие найдешь ))))
сенкс. посмотрим. слепой сказал: посмотрим! :-)
Короче, будем ставить Аттайни13 - там во флешь писать можно!
http://zemsky.livejournal.com/481290.html :-)
http://community.livejournal.com/400bus/1869.html
Как сам?
потихоньку, а ты?
номано
хотел спросить. Ты вот функции мне по доступу к ЕЕПРОМ высылал - я могу нашу переписку с тобой обезличить и в коныеренции попросить прокомментировать?
Конечно
в телесиси или електроникс?
Да как хош
ок
http://anatoly1206.livejournal.com/2311.html
Кто что по записи в ЕЕПРОМ и слету оттуда данных может сказать?
Ответы
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание