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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 354
Зарегистрирован: Чт июл 24, 2014 23:09:23
Откуда: Киев

Сообщение hosturik »

А подскажите новичку, правильно ли сбрасывать WDT в основном цикле. Контроллер ATmega. Устройство - регулятор температуры.
Не хотелось бы чтобы при зависании температура вышла за пределы.
Устройство хорошо работает и так, но хочется перестраховаться, мало ли какая помеха проскочит.

Как я понимаю, если программа зависает в каком то цикле, основной цикл не срабатывает и соответственно Watchdog не сбрасывается.
Почти вся логика программы находится в обработчиках прерываний. В основном цикле только вывод на дисплей.
По крайней мере, при тестах, если вставить где то вечный цикл, то происходит бесконечный рестарт МК. Значит все правильно?
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

hosturik писал(а):Не хотелось бы чтобы при зависании температура вышла за пределы.
При таких опасениях, лучше поставте какое-нибудь термореле, можно таблетку биметаллическую, которое отключает все при аварийной температуре.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

hosturik писал(а):А подскажите новичку, правильно ли сбрасывать WDT в основном цикле. Контроллер ATmega. Устройство - регулятор температуры.
Не хотелось бы чтобы при зависании температура вышла за пределы.
рекомендованное термореле - неплохой вариант, который спасет, например, при выходе из строя датчика или управляющего нагревателем элемента (реле или тиристор-симистор, или что у вас там). соответственно с той же целью в основном цикле надо не тупо сбрасывать WDT, а сбрасывать посл того, как убедились, что температура на самом деле не ушла за пределы. и добавить аварийную сигнализацию, которая будет "сиренить", если начались сбросы по WDT.

паранойя - этовсёпожирающая страсть :))) начав параноить однажды, уже не остановитесь.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
aam
Собутыльник Кота
Аватара пользователя
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

Сообщение aam »

Кто нибудь пробовал запись в EEPROM настроек по выключению питания? Т. е. чтобы зря не тратить ресурс памяти настраиваемые пользователем параметры устройства хранятся в ОЗУ. При этом МК контролирует наличие напряжения питания. При пропадании питания МК, питаясь зарядом электролита на его ногах, скидывает эти настройки из ОЗУ в EEPROM. Таким образом, запись происходит всего 1 раз при выключении, или не происходит вообще, если ничего не менялось, в то время, как если записывать "в лоб" после каждого нажатия кнопки число записей за "сессию" может достигать десяток раз (например, если постоянно "играться" с пультом либо крутить ручку какого-нибудь регулятора громкости и т. п.).
Проблема только в том, что флешка все же довольно долго шьется, а вот момент пропадания питания МК может определить довольно поздно из-за наличия электролитов в БП.
Реклама
Эиком - электронные компоненты и радиодетали
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

aam писал(а):При этом МК контролирует наличие напряжения питания.
решение задачи становится многократно проще, если не контролировать выключение питания, а выключать питание по команде МК. и, с моей точки зрения, это выглядит более разумным.

еще вполне разумным выглядит производить запись в EEPROM не каждый раз при изменении параметра, а через N секунд после последнего изменения. Например, через 10 секунд после того, как перестали крутить ручки регуляторов. или через 20. в этом случае, сами понимаете, ресурс устройства пропорционально возрастает.

наконец, можно и по-вашему, с контролем питания: МК запитать от ионистора, развязанного от источника питания диодом, и контролировать напряжение "по ту сторону" диода. собственно, при грамотной разводке питания можно и простым электролитом обойтись, чтобы поддерживать питание МК на приемлемом для записи EEPROM уровне пару десятков миллисекунд... тут вопрос скорее в схемотехнике, а не алгоритмах.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
aam
Собутыльник Кота
Аватара пользователя
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

Сообщение aam »

ARV писал(а):не контролировать выключение питания, а выключать питание по команде МК
Проще, но не всегда микроконтроллер полностью "рулит" всей ситуацией :) Пользователь может просто выдернуть вилку из розетки/нажать выключатель питания. И тогда настройки, естественно, не сохранятся. Обычно не смертельно, но неприятно и криво.
ARV писал(а):через N секунд после последнего изменения.
Это понятно, но при большом значении N см. предыдущий пункт. И опять же, скорее всего записей будет гораздо больше, чем одна за сеанс пользования. Кардинальных улучшений от этого нет.
ARV писал(а): МК запитать от ионистора
Ну это уже слишком. Я вообще хотел попытаться обойтись обычным танталовым конденсатором по питанию. Если учесть, что страница/слово в такой памяти шьется примерно 15 мс (если ориентироваться по ДШ), то за 150 мс можно зашить 10 таких атомарных единиц записи флеша, т. е. как видите, емкость для этого нужна не такая уж и большая, т. е. задача как бы вполне реальная и экономически не сильно накладная по сравнению с обычной схемой питания. Удивляет, почему это никто не использует в промышленных изделиях (во всяком случае, я нигде не встречал)? А уж как сделана "бытовуха" последних лет - так вообще иногда вызывает чувство глубокого недоумения - выдергиваешь вилку, например, муз. центра, а при повторном включении громкость сброшена на значение по умолчанию.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 25862
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

В тему. Микрочип выпускает весьма интересную микросхему памяти - NV SRAM, которая представляет из себя статическое ОЗУ с SPI интерфейсом и двойным питанием в корпусе SOIC8.
Одно питание - общее в схеме, а второе - химический элемент. Потребление по второму 1 мкА и не зависит от состояния первого питания. Это позволяет получить скорость обращения оперативной памяти и бесконечный ресурс.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

aam писал(а):Ну это уже слишком.
я так и не понял, что вас смущает: вы не сказали ничего новее сказанного...
КРАМ писал(а):статическое ОЗУ с SPI интерфейсом и двойным питанием в корпусе SOIC8
если речь идет о дополнительной микросхеме, то простейшая 24Cxx позволит решить все проблемы с хранением настроек и дополнительного питания не потребуется.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 25862
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

24С ничем не отличается от встроенного флеша данных в смысле ресурса, то есть не позволяет писать туда прямо во время настроек, то есть хранить там сами переменные, а не их копии.
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

до кучи - в наше время, когда корабли бороздят..., можно взять рядовой микроконтроллер с низким потреблением, который может Low power run. Если денег на батарейку жаба душит, можно от яблок запитать :))
http://we.easyelectronics.ru/STM8/low-p ... eniya.html
Друг Кота
Аватара пользователя
Сообщения: 25862
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

С батарейкой в качестве резерва МК не все так просто, патамушта при ВЫключении основного питания, МК еще некоторое время остается прожорлив, что ведет к просадке химического источника, особенно если он компактен. То есть еще вполне живучий элемент питания досрочно выходит в тираж из-за неизбежных ресетов МК при снятии основного питания. Кстати, дело не только в МК. Схема может объективно много потреблять , ибо вней есть не только МК.
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

все можно решить - например если почитать рекомендации от производителя типа AN4718 Application note How to design a VBAT system based on STM32L0/L1 series (with external components)
Изображение
з.ы. если решать по взрослому - конденсатор или суперконденсатор (ионистор) понадобится
имхо
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

КРАМ писал(а):24С ничем не отличается от встроенного флеша данных в смысле ресурса, то есть не позволяет писать туда прямо во время настроек, то есть хранить там сами переменные, а не их копии.
1. ресурсом отличается. по-моему, раз в 10 отличается в лучшую сторону.
2. никакая внешняя микросхема с интерфейсом, отличным от нативно-паралельного, не позволяет хранить там "свои данные в виде переменных". доступ к этой микросхеме осуществляется через функции, а не "естественным" способом, так что разницы никакой нет.
3. нативно-параллельный интерфейс в принципе отсутствует у маленьких тинек и младших мег, так что даже при наличии настоящей SRAM-памяти это не вариант для большинства случаев
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 25862
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

ARV писал(а): 1. ресурсом отличается. по-моему, раз в 10 отличается в лучшую сторону.
Ошибаетесь. 1млн циклов, причем с некоторыми существенными оговорками. И с временем записи, исключающим режим реального времени при регулировках.Все это делает одинаково невозможным работу без специального сохранения данных либо при выключении, либо в паузах между регулировками. Но есть множество случаев, когда делать это весьма затруднительно.
ARV писал(а):2. никакая внешняя микросхема с интерфейсом, отличным от нативно-паралельного, не позволяет хранить там "свои данные в виде переменных"
А что это меняет? Речь шла не о том, используется некий буфер в ОЗУ МК для перемещения параметров во внешние устройства или нет. Речь шла о том, что переменная во внешнем ОЗУ является оригиналом, а не копией, и не требует постоянной перезагрузки. Вывод (ввод) у SPI со скоростью в 10...20 Мбит/с делает доступ к подобной переменной пригодным для реального времени.
aam
Собутыльник Кота
Аватара пользователя
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

Сообщение aam »

Опять куда-то в сторону ушли. Ионистры, SRAM с батарейками... Понятно, что разные варианты реализации существуют, вопрос был про конкретный вариант - конденсатор пожирнее (150...470 мкФ) + диод + цепь определения момента выключения + программная оптимизация потребления МК в этом режиме, пока он шьет флешку 24С или еще что-то. Т. е. пробовал кто такое или нет и если никто не пробовал, то стоит ли дальше думать про это и пробовать или забить на идею? В конце концов, чисто программный вариант с кольцевым буфером на N копий никто не отменял.
Друг Кота
Аватара пользователя
Сообщения: 6347
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

Я применял - в прошлом веке :)
Спойлер(блин, как быстро время утекло :shock: )
Контроль питания до стаба, при опускании ниже порога - свертывание критичных данных в eeprom - и наблюдаем за питанием - если не восстановилось, включаю всю периферию, и как Титаник с полной иллюминацией - погружаюсь в бесконечном цикле. Зачем ? Тут есть неприятный нюанс: при выключении жрущей периферии БП облегченно вздыхает и может поднять напругу выше порога включения (гистерезис, само собой, имеется) . Возникают автоколебания с непредсказуемыми последствиями. Так вот чтобы не было.
Хорошо ли, плохо ли - не знаю. Теперь уже нет ни промышленности, ни, наверное, и той фирмы, на которой это делал.
Изображение
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

aam писал(а):Опять куда-то в сторону ушли... вопрос был про конкретный вариант - конденсатор пожирнее (150...470 мкФ) + диод + цепь определения момента выключения + программная оптимизация потребления МК в этом режиме...
вроде в начале было:
aam писал(а):Я вообще хотел попытаться обойтись обычным танталовым конденсатором по питанию.
вот попроще схемки из документа, название которого было озвучено выше:
Изображение
вместо супер конденсатора можно поставить, как хотелось, танталовый.
Тип микроконтроллера тоже вроде не озвучен, сейчас в большинстве современных микроконтроллеров присутствует внутренний детектор напряжения PVD, использовал - прекрасно работает, даже при понижении питания прерывание вызывает. В некоторых АВР тини можно также измерить напряжение питания внутренним АЦП без внешних цепей. Пример тут:
http://klim.in.ua/wp/2010/10/power-led- ... nt-page-1/
aam
Собутыльник Кота
Аватара пользователя
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

Сообщение aam »

Понятно, значит буду пробовать.
Встал на лапы
Сообщения: 139
Зарегистрирован: Сб май 07, 2011 17:00:42
Откуда: Оттуда

Сообщение bondyara »

Как правильно подключать SPI программатор к МК (AVR). если на линии SPI есть другие устройства?
Собрал устройство не задумываясь, программатор его не увидел. Анализатор показал, что некий ответ есть. Только тогда дошло, что отвечает программатору другое устройство. Притянул SS к питанию, чтобы оно молчало, в итоге на MISO сплошной "0". Видимо, другое устройство притягивает MISO к земле. Отключил это устройство от шины - заработало.
Думаю, что достаточно будет поставить резистор по линии MISO номиналом порядка 1кОм. А как обычно поступают в этом случае?
Mem
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1915
Зарегистрирован: Вт апр 17, 2012 14:20:59
Откуда: Новокузнецк

Сообщение Mem »

Пытаюсь запрограммировать PIC12F675 через этот программатор https://masterkit.ru/shop/laboratory/pr ... rs/1355379 Использую WinPic800, считывание проходит без проблем, но запись не идет, выходит такая ошибка и следом другая:

Изображение

Изображение

Хотя если ничего не загружать в программу, то запись проходит без проблем. Поиск не помог, в чем может быть дело?

Добавлено after 13 minutes 22 seconds:
Хотя я догадываюсь, программатор просто не работает, но почему тогда читает и пишет в пустую?
Главный инженер проекта - человек, который как никто другой знает, что приближаться к спроектированной им хрени близко не стоит.
Ответить

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