Свежие обсуждения
Микроконтроллеры

Си начинающим с нуля - IAR Atmel

1 6 7

Смоделировал разряд электролита на КРЕНку - получается что при 8 вольтах (минимум что у меня может быть) на входе электролит 470 мкФ держит питание до 2,7В при токе 20 мА 83 мс. До 1,8В кондер "спускается" целых 120 мс. Если учесть, что потребление проца резко падает с снижением напряжения, то может и дольше протянет. Да и 20 мА я взял от балды... Частота у меня 8 МГц.
По ДШ запись в ЕЕПРОМ длится оказывается 8,5 мс, ну пусть 10. Переменных у меня 5. Значит, чтобы "скинуть на флешку" все переменные потребуется не менее 50 мс + запас.
Вроде должно работать...
Скажите, а какой максимальный разброс времени записи и от чего он зависит?

 

от стабильности внутреннего Calibrated RC Oscillator, типовая оценка будет достаточной

по теме давно известен аппнот AVR101: High Endurance EEPROM Storage (Это приложение описывает, как сделать безопасное, высокоизносостойкое хранение параметров EEPROM, страхуясь от износа памяти. The code example was developed using Compiler IAR EWAVR 2.26C & 4.12A and the ATmega16 as target device)

/* Define the number of levels in the buffer - eight levels will guarantee 800k writing of the parameter */
#define EE_PARAM_BUFFER_SIZE 8

 

Леха: Могу только прогу менять ... у меня питание контролируются ... потребление проца резко падает с снижением напряжения, то может и дольше протянет

протянет вернее, если по обнаружению аварии питания будете уходить в сберегающий/спящий режим на время между записями очередного байта еепром, при этом погасив не нужную переферию

Леха: проц гарантированно живет до 1,8 (у меня Мега8А)

ATmega8A Operating Voltages 2.7 - 5.5V

 

Леха: Да и 20 мА я взял от балды...

Сама КРЕНка 5...10 мА кушает, если она не LowConsuption (эти мкА кушают).
Другой вопрос - как проще и быстрее отловить пропадание сетевого?
Проще - напрямую от обмотки сетевого трансформатора (через оптрон, например). Можно с компаратором, но тут нужно выставить порог срабатывания ниже нижнего.
В своих часах я на скорую руку собрал "компаратор" на базе стабилитрона и оптрона, так у МК остается время погасить светодиодные индикаторы и уйти в спячку еще до разрядки конденсатора перед КРЕНкой. Дальше МК продолжает питаться от ионистора.

 

birua: ATmega8A Operating Voltages 2.7 - 5.5V

Точно. С Тини2313 перепутал...

КРЕНка у меня обычная в SOT89.

Сергей К: Другой вопрос - как проще и быстрее отловить пропадание сетевого?

Вот это действительно вопрос. У меня стоит делитель со стабилитроном. Поэтому ноль на ноге может появиться слишком поздно. Особенно с учетом того, что одно из питаний может быть от 8 до 18 В (второе строго 12В). Кроме того, когда напряжение на кондерах в том месте, откуда снимается сигнал, упало ниже некоторого порога и закрылось диодное ИЛИ, через которое подается питание, эти первичные кондеры могут вообще перестать быстро разряжаться. И пока проц поймет, что сеть вырубили, его электролит тоже уже разрядится.

Насчет оптронов, я как-то 220В на Тиню заводил. Так вот поставил PC817||1N4148 в обратной полярности. И все это дело через резистор около 300 кОм в розетку. Предварительно провел эксперимент в котором установил, что при токе через светодиод около 0,5 - 1 мА оптрон шикарно подтягивает к земле резистор 10 кОм. 50Гц обрабатывал программно по прерыванию с ноги - упростило схему на электролит и пару резисторов.
Но здесь разумеется уже ничего не сделать кроме того что есть.

Ссылка на часы не открывается(( Хотя непонятно, зачем там так сложно сделано? Не проще было поставить диодное ИЛИ на питание, чтоб отсечь питание индикатора? Да и вообще DS13xx рулит! А если еще и батарейку через диоды подключить и питать DS от сети, когда она есть, то батарейка проживет дольше, чем сами часы.
ЗЫ: Я в своих часах (1-я самостоятельная разработка на МК) тоже питал проц, но использовал 2 пальчиковых батарейки. Развязка была диодным ИЛИ.

 

Леха: Да и вообще DS13xx рулит!

Смысл в том, что имеется МК с внутренним генератором + кварц 32768 Гц на таймере МК + ионистор. Ну и индикаторы. Этого вполне хватает для построения часов. Какой смысл еще одну микросхему с батарейкой цеплять (батарейка сядет в самый не подходящий момент)?
Ионистора хватает на несколько суток работы часов без сети (в спячке), чего мне вполне достаточно. Про замену элементов питания в часах я забыл. Но сейчас речь не об этом

Леха: Не проще было поставить диодное ИЛИ на питание, чтоб отсечь питание индикатора?

Индикатор я взял с большими цифрами, который нашел, не особо задумываясь про ОК и ОА. Когда собрал, понял, что у меня питание на сегменты идет сразу с выводов МК, а общие идут через ключи на землю. Поэтому отрубать питание индикатора отдельно уже невозможно. Ну и МК в любом случае нужно переводить в спячку - сигнал нужно подавать. А так как БП внешний и к часам приходит уже 9В постоянки, то отключаться остается только по пороговому напряжению.

 

birua: ставьте копеечные
Леха: ставить ... для пяти переменных ... не по-пацански

замечу для правильных пацаноф на будущее

страничная запись позволяет уронить в закорма целую страницу параметров (16 байт) одним заходом за пять (!) миллисекунд; и так можно мочить - минимум лимон записоноф

 

Я "роняю" за 1 раз только по 1 переменной. Только когда цвет пишу - 3 байта.

 

Леха: Переменных у меня 5. Значит, чтобы "скинуть на флешку" все переменные потребуется не менее 50 мс

то в лес, то по дрова оттолкнувшись от пяти неизвестной размерности - сошлись на трёх байтах за раз

вдогонку, я хочу ещё обратить Ваше внимание на то, что внешняя микросхема может быть отделена ДШ и получив, автономно продолжать дописывать вплоть до 1.8 вольта, поддерживаясь при этом своим, персональным электролитом (кренка, мк - будут по боку)

 

Это я все учту на будущее ,но небуду же я перетравливать плату)))
Переменных на самом деле 7 - одна из них - массив на 3 элемента типа char)) Короче, 7 байт пишутся. Причем не всегда. Хотя надо считать, что всегда, т. к. и такое возможно.

Скажите, а сам процесс записа в ЕЕПРОМ очень энергоемкий? И в каком спящем режиме он может продолжаться? Я так понимаю, надо использовать режим IDLE и глушить перед этим таймеры. А пробуждение делать по прерыванию по окончанию записи в ЕЕПРОМ, обработчик которого можно сделать пустым.
Если сама запись в ЕЕПРОМ жрет мало, то потребляемый ток может быть очень даже небольшим. Помню у меня в часах в при переходе на питание от батарей проц Тини2313 в спящем режиме IDLE с работающем таймером жрал меньше миллиампера (около 300 мкА кажется).
В активном режиме мне надо выполнять только команды проверки совпадают ли значения чтоб зря не писать и сама инициализация записи. Т. е. занимает это очень мало тактов и при 8 МГц будет очень быстро по сравнению с самой записью.