Мелкие вопросы по МК и ПЛИС.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Для EEPROM гарантируется 100тыс. циклов записи, это всего лишь 27 часов посекундной записи. Возможно, из-за ошибки в программе запись туда производится довольно часто... для параметров которые изменяются чаще чем раз в 30...60 минут(выработка ресурса через 5-10 лет) лучше использовать FRAM память. Ну и дешевый вариант - запитать контроллер от ионистора.
-
Prosperous
- Встал на лапы
- Сообщения: 129
- Зарегистрирован: Ср янв 18, 2012 19:37:10
Re: Мелкие вопросы по МК и ПЛИС.
Да нет, на этапе отладки не очень часто, а уж в рабочем режиме будет очень не часто
У меня тупой вопрос, а считывать в ОЗУ это что имеется ввиду? Организовать обычный буфер, скажем типа unsigned char и читать туда данные? или как то по другому это делается?
А как это делается? Поделитесь секретом, если не сложно
В случае пропадания питания применить механизм опережающего сохранения данных в ЕЕПРОМ
А как это делается? Поделитесь секретом, если не сложно
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Переменные разместить в отдельном непрерывном блоке ОЗУ, тогда проще будет восстанавливать с EEPROM и сохранять.
Но мне кажется, все-таки проблема с программой - этот параметр по какой-то причине записывается в EEPROM чаще чем это предполагалось.
Но мне кажется, все-таки проблема с программой - этот параметр по какой-то причине записывается в EEPROM чаще чем это предполагалось.
Re: Мелкие вопросы по МК и ПЛИС.
Секрет Полишинеля...А как это делается? Поделитесь секретом, если не сложно
Я не знаю вашей среды программирования. Я работаю в IAR. Там достаточно просто:
Код: Выделить всё
__eeprom u16 ee_val1 = 0x1234;
__eeprom u8 ee_val2 = 255;
u16 val1;
u8 val2;
void main( void ){
......
val1 = ee_val1;
val2 = ee_val2;
....
В блоке питания устройства выпрямительный мост изолируется от основной сглаживающей емкости диодом.
Сразу после моста ставится очень небольшой конденсатор, тау разряда которого около 3-5 периодов сети.
Напряжение с этого конденсатора на вход внешнего прерывания. Настройка на срабатывание по низкому уровню.
Емкость основного сглаживающего конденсатора рассчитывается так, чтобы времени его разряда хватило на время, за которое блок необходимых переменных гарантированно
сохранился в eeprom. PDF, калькулятор и немного терпения. Все процессы и их времянки по записи в EEPROM - в документации на данный МК.
По пропадании сети на время 3-5 периодов, напряжение на входе прерывания падает, но на основном конденсаторе еще достаточно энергии.
Срабатывает прерывание, обработчик сохраняет все критические переменные и замыкается в бесконечную петлю. Прямо в обработчике.
Для работы программы - это полный конец. Дальше основной конденсатор разряжается и все умирает.
В обработчике примерно так:
Код: Выделить всё
ee_val1 = val1;
ee_val2 = val2;
for( ;; );
Схемотехнических решений в этом направлении можество. Если у вас мощные потребители, нужно ставить отдельный стабилизатор для МК, чтобы хватило времени на сохранение данных. В обработчике можно также перевести все исполнительные механизмы в безопасное состояние, или любые другие действия. Только нужно тщательно просчитать время выполнения обработчика, чтобы оно не превысило тау разряда конденсатора поддержки.
Этим приемом пользовались и продолжают пользоваться множество разработчиков, прокручивая те или иные варианты желеха и программ. Тип МК при этом не имеет значения. Важна идея, которую я постарался понятно изложить.
С уважением,
Виктор.
Виктор.
-
Prosperous
- Встал на лапы
- Сообщения: 129
- Зарегистрирован: Ср янв 18, 2012 19:37:10
Re: Мелкие вопросы по МК и ПЛИС.
спасибо, возьму на вооружение 
- avreal
- Опытный кот
- Сообщения: 842
- Зарегистрирован: Чт дек 31, 2009 19:27:45
- Откуда: Бровари, Україна
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Аналогично. Только…ut1wpr писал(а):По пропадании сети на время 3-5 периодов, напряжение на входе прерывания падает, но на основном конденсаторе еще достаточно энергии.
«Если ты не параноик, то это не означает, что они за тобой не следят».
Возможна ситуация, когда выключатель (или что-то по дороге) «пошелестел» или там им щёлкнули но сразу вернули назад. Напряжение сразу после моста просело, по сигналу ACLOut1wpr писал(а):Код: Выделить всё
ee_val1 = val1;
ee_val2 = val2;
for( ;; );
А мы висим в обработчике.
Довольно вероятная ситуация даже при питании от сети (причём чем больше основной конденсатор, тем вероятнее ситуация), а уж в автомобиле так по нескольку раз на дню может быть риск нарваться — заводимся, борт просел настолько, чтобы сработала проверка первичного, но не наcтолько, чтобы заметно просело питание микроконтроллера.
Посему у меня в таких местах for(;;) сидит проверка питания и при его восстановлении у установлении самосброс по WDT (для AT89C5x было по внешнему).
Дальше софт проходит стандартную процедуру старта с анализом предыдущего сохранённого состояния, возможно, с откатом/повтором операций с EEPROM/внешней флеш. Не тех операций, кторые состояние сохраняли (на них конденсаторов хватало, а если не хватило, сбой CRC записи сохранения, то это уже более серьёзная разборка), а тех, которые от внешних воздействий по питанию и защищались.
В большинстве случаев «недопропадание», короткое и длинное пропадания питания не различаются.
Только один раз нужно было различать именно «недопропадание» и короткий просад («заводимся») от длинного выключения («сняли клемму»).
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Re: Мелкие вопросы по МК и ПЛИС.
AVREAL
Саша, да кто же спорит. Я вывалил адепту общее направление. Сколько еще может быть ситуаций! А сколько может и не быть... Ведь ты прекрасно знаешь, невозможно достичь универсальности. Только при реализации конкретных решений буду конкретные проблемы.
По сказанному тобой можно сделать вывод и транслировать его - не обольщайтесь кажущейся простотой. Всегда есть и дадут о себе знать подводные камни. Причем в самый неподходящий момент. Надо быть готовым к их обходу...
Саша, да кто же спорит. Я вывалил адепту общее направление. Сколько еще может быть ситуаций! А сколько может и не быть... Ведь ты прекрасно знаешь, невозможно достичь универсальности. Только при реализации конкретных решений буду конкретные проблемы.
По сказанному тобой можно сделать вывод и транслировать его - не обольщайтесь кажущейся простотой. Всегда есть и дадут о себе знать подводные камни. Причем в самый неподходящий момент. Надо быть готовым к их обходу...
С уважением,
Виктор.
Виктор.
Re: Мелкие вопросы по МК и ПЛИС.
Меня уже поправили. И я сменил на текст оригинала: "Если у вас нет паранойи, это не значит, что за вами не следят!". Ты об этомavreal писал(а):Только…
«Если ты не параноик, то это не означает, что они за тобой не следят».
И вообще: "Ты суслика видишь?..."
С уважением,
Виктор.
Виктор.
- Dmitriy Karpov
- Встал на лапы
- Сообщения: 89
- Зарегистрирован: Сб апр 21, 2012 01:32:34
- Откуда: Москва
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Я начинающий. Недавно закончил свою первую прогу-часы на ATmega8. Сами часы писал сам, индикацию взял из обучалки. Решил испытать. Спустя сутки выяснилось, что они отстают аж на 4 секунды. Кварц у меня 16 МГц. Принципиально ли использовать часовой кварц? Секунды отсчитываю по прерыванию компаратора таймера. Может лучше просто цикл задержки?
Вообщем, кому не трудно посмотрите код во вложении.
Вообщем, кому не трудно посмотрите код во вложении.
- Вложения
-
- Digit.asm
- (7.06 КБ) 173 скачивания
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Мелкие вопросы по МК и ПЛИС.
Dmitriy Karpov писал(а):Спустя сутки выяснилось, что они отстают аж на 4 секунды
4/86400 ≈ 4.6*10^(-5) = 46 ppm. Для кварцев HC49S типичная точноть 50 ppm. А у вас какой стоит?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Мелкие вопросы по МК и ПЛИС.
подскажите пож. следующее:
вот нашел ресурс http://opencores.org/projects
для какого типа (или производителей) ПЛИС созданы проекты?
вот нашел ресурс http://opencores.org/projects
для какого типа (или производителей) ПЛИС созданы проекты?
- Dmitriy Karpov
- Встал на лапы
- Сообщения: 89
- Зарегистрирован: Сб апр 21, 2012 01:32:34
- Откуда: Москва
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Хм.. а как бы эт узнать? На нем написано MBC 16.000 Он высокий такой. Брал в Митино и не заморачивался тогда не о какой точности ибо вообще с микроконтроллерами дело не имел.
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Мелкие вопросы по МК и ПЛИС.
Вообще не понимаю прикола изобретения часов, когда есть готовые часовые ИМС с календарём. А есть ещё и со встроенным MEMS резонатором.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Dmitriy Karpov
- Встал на лапы
- Сообщения: 89
- Зарегистрирован: Сб апр 21, 2012 01:32:34
- Откуда: Москва
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Я не ставил цель изобретать велосипед. Просто хотелось потренировать на чём то, что хорошо известно. Так говорите всё от кварца зависит?
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Мелкие вопросы по МК и ПЛИС.
Dmitriy Karpov писал(а):Так говорите всё от кварца зависит?
Найдите точный частотомер и померьте
Я в ваш код не вглядывался. Может, вы там таймер останавливаете и/или пропускаете прерывания от таймера.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- zero648
- Вымогатель припоя
- Сообщения: 650
- Зарегистрирован: Пн июн 18, 2012 12:01:04
- Откуда: Челябинская область, Копейск
Re: Мелкие вопросы по МК и ПЛИС.
Dmitriy Karpov писал(а):Спустя сутки выяснилось, что они отстают аж на 4 секунды. Кварц у меня 16 МГц. Принципиально ли использовать часовой кварц? Секунды отсчитываю по прерыванию компаратора таймера. Может лучше просто цикл задержки?
Вообщем, кому не трудно посмотрите код во вложении.
Выкини эти строки из обработчика, изза них отставание и происходит, счетчик сам должен обнуляться при совпадении.
;****************************************************
; ОБРАБОТЧИК ПРЕРЫВАНИЯ КОМПАРАТОРА
;****************************************************
Timer1_compA1:
ldi Temp,0 ;обнуление таймера
out TCNT1H,Temp
out TCNT1L,Temp
cpi Dg,9
breq Load
inc Dg
rjmp Output
Load: ldi Dg,0
Output: reti ;выход из обработчика
И здесь включить режим СТС:
ldi Temp,0b00001100 ;тактовый сигнал СК/256 + режим СТС
out TCCR1B,Temp
- Dmitriy Karpov
- Встал на лапы
- Сообщения: 89
- Зарегистрирован: Сб апр 21, 2012 01:32:34
- Откуда: Москва
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Сейчас попробую. Но если посчитать 1/16*10^6=62.5 нс - длительность 1 такта, убранные команды выполняются за 3 такта- 1,875*10^-7 c За сутки 1,875*10^-7*60*60*24=0,0162с Маловато будет.
Я их в ручнию выставляю нажимая reset. Скорость реакции человека 0,2 с.
- zero648
- Вымогатель припоя
- Сообщения: 650
- Зарегистрирован: Пн июн 18, 2012 12:01:04
- Откуда: Челябинская область, Копейск
Re: Мелкие вопросы по МК и ПЛИС.
У меня получилось по другому:
62.5(один такт)*3(такта)*256(прескалер)*60(сек)*60(мин)*24(часы)=4.1472 сек
62.5(один такт)*3(такта)*256(прескалер)*60(сек)*60(мин)*24(часы)=4.1472 сек
- Dmitriy Karpov
- Встал на лапы
- Сообщения: 89
- Зарегистрирован: Сб апр 21, 2012 01:32:34
- Откуда: Москва
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
А что обработчик прерываний тоже на деленой частоте работает?
- zero648
- Вымогатель припоя
- Сообщения: 650
- Зарегистрирован: Пн июн 18, 2012 12:01:04
- Откуда: Челябинская область, Копейск
Re: Мелкие вопросы по МК и ПЛИС.
Обработчик работает на тактовой частоте МК, но вход в обработчик происходит на деленной частоте.