Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
16.06.2011, 15:25
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,827
Сказал спасибо: 741
Сказали Спасибо 683 раз(а) в 386 сообщении(ях)
|
Re: Некорректно пишется/читается EPROM в AVR
Сообщение от picavr
|
запустить цикл в цикле переменные ЕЕПРОМ и сверять с РАМ, если НЕ РАВНО - то записать переменую
|
А не получится так , что питание кончится именно в момент работы с ЕЕПРОМ, и память сбойнет навеки. Зачем зацикливать проверку ?
__________________
Да здравствует Разум,да сгинет Маразм!
|
|
|
|
16.06.2011, 15:44
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Некорректно пишется/читается EPROM в AVR
Еще как вариант в момент выключения питания переводить процессор в спящий режим или пониженного энергопотребления и писать в память по прерыванию готовности записи. Не знаю, как атмел, а на пиках есть фишка работать с еепром от второго маломощного генератора.
При потреблении 1мА у него дофига времени будет на обдумывание процесса записи.
|
|
|
|
16.06.2011, 15:46
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Некорректно пишется/читается EPROM в AVR
Сообщение от E_C_C
|
Схема простейшая
|
Ну все ясно. В КРЕНах есть обратный диод между выходом и входом - поэтому при отключенном питании напряжение на ее входе благодаря диоду на 0,7 В ниже чем на выходе. Поставьте после кренки диод, и только после него электролит. И вместо стабилитрона - делитель на резисторах 10 кОм и больше - лишнее напряжение погасится защитным диодом входа контроллера
|
|
|
|
16.06.2011, 18:35
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: Некорректно пишется/читается EPROM в AVR
Сообщение от E_C_C
|
А не получится так , что питание кончится именно в момент работы с ЕЕПРОМ, и память сбойнет навеки.
|
99,99% что НЕ ПОЛУЧИТСЯ.
Запись в ячейку EEPROM активируется ТОЛЬКО ЕСЛИ НЕТ СРАВНЕНИЯ RAM и EEPROM.
А к тому времени пока все ячейки EEPROM запишутся, правильно подобраная ёмкость НЕ УСПЕТ РАЗРЯДИТСЯ. Если только высохнет. И цикл будет крутится сравнивая но не записывая.
Можно конечно после удачного сравнения ВСЕХ ПЕРЕМЕННЫХ просто циклиться без сравнения.
Сообщение от E_C_C
|
Зачем зацикливать проверку ?
|
А что бы ПРОВЕРИТЬ ПОСЛЕ ЗАПИСИ ЕЩЁ РАЗ, возможно что НЕ ЗАПИСАЛОСЬ. всегда проверяйте ПОСЛЕ ЗАПИСИ.
Сообщение от niXto
|
Поставьте после кренки диод, и только после него электролит.
|
ОДНОЗНАЧНО!!
Сообщение от niXto
|
И вместо стабилитрона - делитель на резисторах
|
Можно подобрать делитель, что бы МК срабатывал когда напряжение на входе падает ниже нижней граница стабилизатора, около 7-8В.
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов
Последний раз редактировалось picavr; 16.06.2011 в 19:16.
|
|
|
|
17.06.2011, 09:16
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.05.2008
Адрес: регион 63
Сообщений: 1,827
Сказал спасибо: 741
Сказали Спасибо 683 раз(а) в 386 сообщении(ях)
|
Re: Некорректно пишется/читается EPROM в AVR
Сообщение от niXto
|
В КРЕНах есть обратный диод между выходом и входом - поэтому при отключенном питании напряжение на ее входе благодаря диоду на 0,7 В ниже чем на выходе. Поставьте после кренки диод, и только после него электролит.
|
Так там стоит диод перед конденсатором на 470мкф по питанию МК, или ещё один ставить ?
Нарыл на радиокоте функции работы с ЕЕПРОМ приспособил под себя , пока полет нормальный.
Код:
|
// EEPROM Data Read Function - чтение байта из EEPROM по заданному адресу
unsigned int readEEPROM (unsigned int addr)
{
unsigned int data = 0;
while (EECR.1 != 0);
EEAR = addr;
EECR.0 = 1;
EECR.0 = 0;
data = EEDR;
return data;
}
// EEPROM Data Write Function - запись байта data в EEPROM по заданному адресу
void writeEEPROM (unsigned int addr, unsigned char data)
{
while (EECR.1 != 0);
EEAR = addr;
EEDR = data;
EECR.2 = 1;
EECR.1 = 1;
}
// EEPROM 2-byte Data Write Function - запись двухбайтового числа в 2 последовательные //ячейки с адресом первой addr
void _2bwriteEEPROM (unsigned int addr, unsigned int data)
{
if ((data / 256) != readEEPROM (addr)) writeEEPROM (addr, (unsigned char)(data / 256));
writeEEPROM (addr + 1, (unsigned char)(data % 256));
}
// питание пропало, выход из программы
#asm ("cli")
_2bwriteEEPROM(2,x); // пишем в ячейку 002 х
_2bwriteEEPROM(8,y); // в ячейку 008 у
while (EECR.1 != 0);
EEAR = 0; // адрес еепром в 000
while(1); |
осталось дописать цикл проверки записи , и переход на следующие ячейки через 100000 циклов, но это уже потом.
__________________
Да здравствует Разум,да сгинет Маразм!
|
|
|
|
17.06.2011, 10:03
|
|
Частый гость
Регистрация: 15.11.2007
Сообщений: 17
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: Некорректно пишется/читается EPROM в AVR
У меня была похожая проблемка. Были глюки из-за того, что при пропадании питания прога начинала сохранять данные, успешно это делала, и пыталась продолжить работу. Тут обнаруживалось пропадание питания, сохранение и т.д. по этому циклу. В итоге в какие-то моменты выскакивали ошибки.
|
|
|
|
17.06.2011, 14:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: Некорректно пишется/читается EPROM в AVR
Все глюки, от кривости алгоритмов.
Всегда нужно делать проверки перед записью EEPROM, что бы не тратить время на переписывание одинаковых значений, и после записи EEPROM, что бы убедится что даные соххранились.
Это же не ОЗУ которое пишется за 1 цикл. А за время записи в ячейку EEPROM много чего может произойти.
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов
|
|
|
|
17.06.2011, 14:17
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Некорректно пишется/читается EPROM в AVR
Ждать пока ячейка запишется... это конечно редкий случай, когда больше заняться нечем. Проще и легче написать всю обработку прямо в прерывании. По окончании записи программа входит в прерывание и продолжает запись следующего байта. На то она и переферия, чтобы работать независимо.
|
|
|
|
17.06.2011, 16:25
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: Некорректно пишется/читается EPROM в AVR
Сообщение от Easyrider83
|
Ждать пока ячейка запишется... это конечно редкий случай, когда больше заняться нечем.
|
я разве написал ЖДАТЬ?.. я написал ПРОВЕРЯТЬ ПОСЛЕ ЗАПИСИ, а как вы там это реализуете ваши проблемы... зависит от мозгов ))))
Сообщение от Easyrider83
|
Проще и легче написать всю обработку прямо в прерывании. По окончании записи программа входит в прерывание и продолжает запись следующего байта. На то она и переферия, чтобы работать независимо.
|
Запись в EEPROM, обычно второстепенная задача и тратить на неё отдельное прерывание ИМХО нецелесобразно, в это время может что то более важное случится. Потому всегда делаю запись EEPROM в прерывании таймера с периодом 8-10 милисек, и на каждый проход функции проверки и сохранения EEPROM тратится 1-10 микросекунд, а это 0,01-0,1% процесорного времени.
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов
Последний раз редактировалось picavr; 17.06.2011 в 16:35.
|
|
|
|
17.06.2011, 21:05
|
|
Вид на жительство
Регистрация: 21.10.2009
Сообщений: 343
Сказал спасибо: 180
Сказали Спасибо 64 раз(а) в 56 сообщении(ях)
|
Re: Некорректно пишется/читается EPROM в AVR
Сообщение от der_student
|
У меня была похожая проблемка. Были глюки из-за того, что при пропадании питания прога начинала сохранять данные, успешно это делала, и пыталась продолжить работу. Тут обнаруживалось пропадание питания, сохранение и т.д. по этому циклу. В итоге в какие-то моменты выскакивали ошибки.
|
+1
После пропадания питания, записали еепром, допустим в время питание начало появляться давая разрешение работы проца, но конденсатор не успел зарядиться и если в это время вновь пропадет питание, может не хватить заряда конденсатора для записи еппром.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:46.
|
|