Мелкие вопросы по МК и ПЛИС.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Alexeyslav »

Для EEPROM гарантируется 100тыс. циклов записи, это всего лишь 27 часов посекундной записи. Возможно, из-за ошибки в программе запись туда производится довольно часто... для параметров которые изменяются чаще чем раз в 30...60 минут(выработка ресурса через 5-10 лет) лучше использовать FRAM память. Ну и дешевый вариант - запитать контроллер от ионистора.
Prosperous
Встал на лапы
Сообщения: 129
Зарегистрирован: Ср янв 18, 2012 19:37:10

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Prosperous »

Да нет, на этапе отладки не очень часто, а уж в рабочем режиме будет очень не часто :) У меня тупой вопрос, а считывать в ОЗУ это что имеется ввиду? Организовать обычный буфер, скажем типа unsigned char и читать туда данные? или как то по другому это делается?

В случае пропадания питания применить механизм опережающего сохранения данных в ЕЕПРОМ

А как это делается? Поделитесь секретом, если не сложно
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Alexeyslav »

Переменные разместить в отдельном непрерывном блоке ОЗУ, тогда проще будет восстанавливать с EEPROM и сохранять.

Но мне кажется, все-таки проблема с программой - этот параметр по какой-то причине записывается в EEPROM чаще чем это предполагалось.
ut1wpr
Вымогатель припоя
Сообщения: 581
Зарегистрирован: Ср янв 05, 2011 10:03:18

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение ut1wpr »

А как это делается? Поделитесь секретом, если не сложно
Секрет Полишинеля...
Я не знаю вашей среды программирования. Я работаю в IAR. Там достаточно просто:

Код: Выделить всё

__eeprom u16 ee_val1 = 0x1234;
__eeprom u8 ee_val2 = 255;

u16 val1;
u8 val2;

void main( void ){
......
val1 = ee_val1;
val2 = ee_val2;
....
и дальше работаем с переменными из памяти. В иных средах надо более явно указывать функции работы с eeprom. В каждом компиляторе по своему. Если есть EEPROM как таковой, может и не быть... :)
В блоке питания устройства выпрямительный мост изолируется от основной сглаживающей емкости диодом.
Сразу после моста ставится очень небольшой конденсатор, тау разряда которого около 3-5 периодов сети.
Напряжение с этого конденсатора на вход внешнего прерывания. Настройка на срабатывание по низкому уровню.
Емкость основного сглаживающего конденсатора рассчитывается так, чтобы времени его разряда хватило на время, за которое блок необходимых переменных гарантированно
сохранился в eeprom. PDF, калькулятор и немного терпения. Все процессы и их времянки по записи в EEPROM - в документации на данный МК.
По пропадании сети на время 3-5 периодов, напряжение на входе прерывания падает, но на основном конденсаторе еще достаточно энергии.
Срабатывает прерывание, обработчик сохраняет все критические переменные и замыкается в бесконечную петлю. Прямо в обработчике.
Для работы программы - это полный конец. Дальше основной конденсатор разряжается и все умирает.
В обработчике примерно так:

Код: Выделить всё

ee_val1 = val1;
ee_val2 = val2;
for( ;; );

Схемотехнических решений в этом направлении можество. Если у вас мощные потребители, нужно ставить отдельный стабилизатор для МК, чтобы хватило времени на сохранение данных. В обработчике можно также перевести все исполнительные механизмы в безопасное состояние, или любые другие действия. Только нужно тщательно просчитать время выполнения обработчика, чтобы оно не превысило тау разряда конденсатора поддержки.
Этим приемом пользовались и продолжают пользоваться множество разработчиков, прокручивая те или иные варианты желеха и программ. Тип МК при этом не имеет значения. Важна идея, которую я постарался понятно изложить.
С уважением,
Виктор.
Prosperous
Встал на лапы
Сообщения: 129
Зарегистрирован: Ср янв 18, 2012 19:37:10

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Prosperous »

спасибо, возьму на вооружение :)
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение avreal »

ut1wpr писал(а):По пропадании сети на время 3-5 периодов, напряжение на входе прерывания падает, но на основном конденсаторе еще достаточно энергии.
Аналогично. Только…
«Если ты не параноик, то это не означает, что они за тобой не следят».

ut1wpr писал(а):

Код: Выделить всё

ee_val1 = val1;
ee_val2 = val2;
for( ;; );
Возможна ситуация, когда выключатель (или что-то по дороге) «пошелестел» или там им щёлкнули но сразу вернули назад. Напряжение сразу после моста просело, по сигналу ACLO ;-) вошли в обработчик, но тут напряжение восстановилось, не опустившись после стабилизатора до того уровня, при котором срабатывает BOR/POR.
А мы висим в обработчике.

Довольно вероятная ситуация даже при питании от сети (причём чем больше основной конденсатор, тем вероятнее ситуация), а уж в автомобиле так по нескольку раз на дню может быть риск нарваться — заводимся, борт просел настолько, чтобы сработала проверка первичного, но не наcтолько, чтобы заметно просело питание микроконтроллера.

Посему у меня в таких местах for(;;) сидит проверка питания и при его восстановлении у установлении самосброс по WDT (для AT89C5x было по внешнему).
Дальше софт проходит стандартную процедуру старта с анализом предыдущего сохранённого состояния, возможно, с откатом/повтором операций с EEPROM/внешней флеш. Не тех операций, кторые состояние сохраняли (на них конденсаторов хватало, а если не хватило, сбой CRC записи сохранения, то это уже более серьёзная разборка), а тех, которые от внешних воздействий по питанию и защищались.

В большинстве случаев «недопропадание», короткое и длинное пропадания питания не различаются.
Только один раз нужно было различать именно «недопропадание» и короткий просад («заводимся») от длинного выключения («сняли клемму»).
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
ut1wpr
Вымогатель припоя
Сообщения: 581
Зарегистрирован: Ср янв 05, 2011 10:03:18

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение ut1wpr »

AVREAL
Саша, да кто же спорит. Я вывалил адепту общее направление. Сколько еще может быть ситуаций! А сколько может и не быть... Ведь ты прекрасно знаешь, невозможно достичь универсальности. Только при реализации конкретных решений буду конкретные проблемы.
По сказанному тобой можно сделать вывод и транслировать его - не обольщайтесь кажущейся простотой. Всегда есть и дадут о себе знать подводные камни. Причем в самый неподходящий момент. Надо быть готовым к их обходу... :)
С уважением,
Виктор.
ut1wpr
Вымогатель припоя
Сообщения: 581
Зарегистрирован: Ср янв 05, 2011 10:03:18

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение ut1wpr »

avreal писал(а):Только…
«Если ты не параноик, то это не означает, что они за тобой не следят».
Меня уже поправили. И я сменил на текст оригинала: "Если у вас нет паранойи, это не значит, что за вами не следят!". Ты об этом :) Вроде в оригинале не было ОНИ... :)
И вообще: "Ты суслика видишь?..." :)
С уважением,
Виктор.
Аватара пользователя
Dmitriy Karpov
Встал на лапы
Сообщения: 89
Зарегистрирован: Сб апр 21, 2012 01:32:34
Откуда: Москва
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Dmitriy Karpov »

Я начинающий. Недавно закончил свою первую прогу-часы на ATmega8. Сами часы писал сам, индикацию взял из обучалки. Решил испытать. Спустя сутки выяснилось, что они отстают аж на 4 секунды. Кварц у меня 16 МГц. Принципиально ли использовать часовой кварц? Секунды отсчитываю по прерыванию компаратора таймера. Может лучше просто цикл задержки?
Вообщем, кому не трудно посмотрите код во вложении.
Вложения
Digit.asm
(7.06 КБ) 173 скачивания
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Gudd-Head »

Dmitriy Karpov писал(а):Спустя сутки выяснилось, что они отстают аж на 4 секунды

4/86400 ≈ 4.6*10^(-5) = 46 ppm. Для кварцев HC49S типичная точноть 50 ppm. А у вас какой стоит?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
igor-x
Мудрый кот
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение igor-x »

подскажите пож. следующее:
вот нашел ресурс http://opencores.org/projects

для какого типа (или производителей) ПЛИС созданы проекты?
Аватара пользователя
Dmitriy Karpov
Встал на лапы
Сообщения: 89
Зарегистрирован: Сб апр 21, 2012 01:32:34
Откуда: Москва
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Dmitriy Karpov »

Хм.. а как бы эт узнать? На нем написано MBC 16.000 Он высокий такой. Брал в Митино и не заморачивался тогда не о какой точности ибо вообще с микроконтроллерами дело не имел.
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Gudd-Head »

Вообще не понимаю прикола изобретения часов, когда есть готовые часовые ИМС с календарём. А есть ещё и со встроенным MEMS резонатором.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Dmitriy Karpov
Встал на лапы
Сообщения: 89
Зарегистрирован: Сб апр 21, 2012 01:32:34
Откуда: Москва
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Dmitriy Karpov »

Я не ставил цель изобретать велосипед. Просто хотелось потренировать на чём то, что хорошо известно. Так говорите всё от кварца зависит?
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Gudd-Head »

Dmitriy Karpov писал(а):Так говорите всё от кварца зависит?

Найдите точный частотомер и померьте :) В небольших пределах вроде даже можно частоту подстроить ёмкостью, которой шунтируется кварц.
Я в ваш код не вглядывался. Может, вы там таймер останавливаете и/или пропускаете прерывания от таймера.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
zero648
Вымогатель припоя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение zero648 »

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: Мелкие вопросы по МК и ПЛИС.

Сообщение Dmitriy Karpov »

Сейчас попробую. Но если посчитать 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: Мелкие вопросы по МК и ПЛИС.

Сообщение zero648 »

У меня получилось по другому:
62.5(один такт)*3(такта)*256(прескалер)*60(сек)*60(мин)*24(часы)=4.1472 сек
Аватара пользователя
Dmitriy Karpov
Встал на лапы
Сообщения: 89
Зарегистрирован: Сб апр 21, 2012 01:32:34
Откуда: Москва
Контактная информация:

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение Dmitriy Karpov »

А что обработчик прерываний тоже на деленой частоте работает?
Аватара пользователя
zero648
Вымогатель припоя
Сообщения: 650
Зарегистрирован: Пн июн 18, 2012 12:01:04
Откуда: Челябинская область, Копейск

Re: Мелкие вопросы по МК и ПЛИС.

Сообщение zero648 »

Обработчик работает на тактовой частоте МК, но вход в обработчик происходит на деленной частоте.
Ответить

Вернуться в «Разные вопросы по МК»