Перейти к содержанию
    

Как распознать кратковременное выключение на Tiny13

Гость @Ark
блин, решение наверняка на поверхности лежит. я думаю, что если кто-то "раскусит" фокус, то все потом смеяться будут

Я, кажется, раскусил этот китайский фокус... В качестве терморезистора используется диод в цепи питания...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

опробовал читать нулевую ячейку EEPROM.

Ну эту детскую болезнь Atmel уже давно побидила. Да и портилась она делаеко не при каждом включении.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну эту детскую болезнь Atmel уже давно победила. Да и портилась она далеко не при каждом включении.

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

 

Я, кажется, раскусил этот китайский фокус... В качестве терморезистора используется диод в цепи питания...

а с чего ему греться? токи-то миллиамперные или даже меньше (если учитывать то, что и без светодиода режим меняется)

Изменено пользователем stells

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А может, все-таки используется хранение в EEPROM? Тут же совсем не обязательно хранить что-то конкретное, важен сам факт попытки что-то туда записать (или стереть). А режим можно задавать не конкретной величиной, а адресом ячейки. И при старте восстанавливать содержимое. В AN103 пишут, что стирание/запись происходит побитно. Думаю, что 1,8 мс указаны для всего байта. Может быть, за 200 мкс один бит он успевает стереть? То есть, при возникновении прерывания от компаратора он выбирает ячейку и просто начинает стирание. И неважно, успеет стереть всю или нет, одного бита достаточно. А при следующем старте проверяет содержимое ячеек режима, та, что повреждена, дает предыдущий режим и восстанавливается.

Может, так?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может быть, за 200 мкс один бит он успевает стереть?

может и успеет, но что это даст? как различить время в выключенном состоянии в 1 и 10 секунд?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

может и успеет, но что это даст? как различить время в выключенном состоянии в 1 и 10 секунд?

Даст то, что текущий режим сохранить можно, уже что-то :)

Думаю, стоит посмотреть графики питания при включении

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

что-то сильно зациклено на хранении. имхо все более примитивно. помнить тут вовсе не обязательно, достаточно чтобы после выключения программа продолжала выполняться. сколько там выдержка, 2-3 сек? уверен тинька с минимальным к-вом периферии протянет на 128кГц от 1мкФ. а дальше все просто. выключили - программа продолжает выполняться. разрядились до плинтуса - при включении будут повторная инициализация. а если разрядиться не успела, то ADC поймает момент появления питания и это будет знак для все еще выполняющейся программы. при этом она в eeprom пометит что "щас я перешел в режим N+1" и все.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

уверен тинька с минимальным к-вом периферии протянет на 128кГц от 1мкФ

так осциллограммки питания приводились. напряжение питания падает до 1В где-то через 2мс, это и есть плинтус

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

осциллограммы это хорошо, но где опыт когда сидим осциллографом на девайсе и проверяем на работоспособность с таким паразитом как щуп? кто его знает как осциллограф повлияет на работу. сели щупом - клац-клац и срзу станет ясно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

HALFer, там по схеме параллельно 1 мкФ стоят 13 кОм. 10 МОм щуп там погоды не делает.

 

Даст то, что текущий режим сохранить можно, уже что-то

Текущий режим очень даже неплохо сохраняется при старте с хорошим питанием. Зачем для этого экстримизмом заниматься? :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все-таки осциллограммы напряжения при включении хотелось бы увидеть. Возможно, время от момента включения до момента превышения порога на компараторе существенно зависит от времени отсутствия питания.

 

Текущий режим очень даже неплохо сохраняется при старте с хорошим питанием. Зачем для этого экстримизмом заниматься? :)

Невнимательно прочитал вводную, а по ходу топика сложилось впечатление, что момент сохранения - самый важный ;) Теперь вижу, что самое главное - надежное детектирования времени отсутствия питания

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Послушайте, я наверное в танке сижу, причем очень глубоко)) Объясните пожалуйста почему это не может работать по следующему алгоритму?:

Включаем.

1.Инициализация.
2.Читаем EEPROM (номер эффекта)
3.Инкрементируем
4.записываем в EEPROM следующий номер эффекта
5.Начинаем крутить выбранный  эффект

И так далее с первого пункта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Объясните пожалуйста почему это не может работать по следующему алгоритму?:

3.Инкрементируем

потому что инкрементировать нужно только если питания не было 1-2с. а если больше - то инкрементировать не надо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

adc,

и что это даст? при каждом включении будем иметь новый режим работы. где момент определяющий повтор/переключение режимов в зависимости от выдержки без питания?

Изменено пользователем HALFer

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

VladislavS, все ли точно в постановке задачи? такое ощущение, что уравнение с двумя неизвестными. что-то скоро закипит :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...