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

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

На PB0 ведь какой-то широкий импульс сразу после включения появляется.

И пропадает сразу как выходим на режим. Наверняка ведь важно чтобы в момент выключения там 1 было.

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


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

Здорово что на АЦ что-то нащупали. Сейчас посленовогоднюю текучку раскидаю - пощупаю тоже. Только я вот думаю на какой ноге они могли бы это делать? На всех свободных при выключении нули. Остается только ADC1 - на ней 0.8 В висит. Не помешают ли они в момент включения?

Нет, при выключении АЦП скоммутирован на делитель напряжения. Может быть, АЦП работает всё время, чтобы контролировать разряд батареи, или допустим подкорректировать скважность ШИМ шире, для компенсации понижения напряжения батарейки при разряде.

Похоже, память на 2 секунды найдена?

Показательно, что то же самое происходит и при сбросе(ARV, #162 ) - правильно, регистры обнуляются, порты запираются, конденсатор оказывается изолированным. В эксперименте stells (#155) АЦП зашкален, когда используется внутренний ИОН, потому что напряжение на конденсаторе значительно выше. Для этого у китайцев и стоит делитель, потоvу что они хотят сравнивать не с изменяющимся напряжением батарейки, а с образцовым bandgap reference, который, очевидно, есть простой стабилитрон.

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


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

Для этого у китайцев и стоит делитель, потоvу что они хотят сравнивать не с изменяющимся напряжением батарейки, а с образцовым bandgap reference, который, очевидно, есть простой стабилитрон.

Вы хотите сказать, что до выключения они держат подключенным к АЦП вход с делителя, а при включении измеряют напряжение на висящем входе (фактически на внутреннем конденсаторе)? может и так

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


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

VladislavS, кстати, у меня таки sku.7612 и на PIC12F629, покупал примерно полгода назад. Схема вообще элементарная - такой же планарный диод, за ним керамический кондюк 0.1uF и всё. Больше питание ни на одну ногу не приходит ни напрямую, ни параллельно с кондёром. Режимы нормально переключаются без СИДа. У моего С1-114 вход всего 1МОм, при этом вижу, что питание падает до ~0.3В весьма быстро, потом до нуля чуть медленней.

Для переключения режима надо разорвать питание максимум секунды на полторы. Попробовал зашунтировать кондёр резистором 47К - максимальный интервал уменьшился до ~0.5сек, хотя напряжение на 1 ноге по осциллографу падает практически мгновенно.

Таки используют какие-то хитрые остатки в памяти? Проц при падении напряжении питания уже остановлен, а для поддержки памяти напряжения в 0.2В и меньше хватает?

upd: нифига подобного. Повесил от второго БП постоянное напряжение 1В на питании проца - способность переключать режимы сохраняется.

 

Если мне кто-нть скинет настроенный MPLAB или поможет быстро "войти в курс", готов принять участие в исследовании аналогичного драйвера на PICe. В частности, есть чистые PIC10F202 и живая плата от фонаря Fenix L2D. И давняя мечта написать под него собственную прошивку ;-). Вот только знаний негусто, опыта почти ноль и времени свободного маловато...

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

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


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

в смысле? это сарказм? :)
С чего это вдруг сарказм?

Красивое решение. Мне понравилось.

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


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

до выключения они держат подключенным к АЦП вход с делителя, а при включении измеряют напряжение на висящем входе (фактически на внутреннем конденсаторе)

точно, наверняка так и есть. в пользу этого говорит то, что ADC0 висит в воздухе, а именно он при включении оказывается подключенным к АЦП

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


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

Обещаю завтра всё опробовать, но я что-то запутался... Где находится та ёмкость, напряжение на которой надо измерять? Между мультиплексором и АЦП или в самом АЦП? Тогда мне стоит испробовать следующее:

- При штатной раоте АЦП постоянно подключен ко входу ADC1 и делает свои дела.

- При пропадании питания я должен успеть отключить АЦП от входа? Для этого ADEN=0 надо сделать? Или преключить мультиплексор на свободную ногу? Или он сам отключится при срабатывании BOD?

- При включении переключить мультиплексор АЦП к любой свободной ноге, настроенной на вход без пулапа.

- Включить АЦП и одновременно запустить преобразование.

- На основании показаний АЦП ставлю нужный режим и перехожу к штатной работе.

 

На бумаге вроде красиво выглядит - посмотрим что в железе получится...

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


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

Или он сам отключится при срабатывании BOD?

по идее сам отключится. а при включении подключится на ADC0, на ней бы и надо мерить, если конечно она (reset) определена как вход/выход

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


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

ISV, добро пожаловать на форум!

 

All, вот видите!!! Не только у меня фонарик с "волшебной" кнопкой есть!

 

по идее сам отключится. а при включении подключится на ADC0, на ней бы и надо мерить, если конечно она (reset) определена как вход/выход

Ресет естественно не отключен, иначе SPI-программирование не будет работать.

А вот мультиплексор то при включении действительно на ADC0 включен. Получается, искать свободную ногу и не надо - вот она! Интересно, подключен ли физически аналоговый вход ADC0 при использовании первой ноги как ресет?

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


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

Интересно, подключен ли физически аналоговый вход ADC0 при использовании первой ноги как ресет?

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

 

кстати, а не может отсутствие подтяжки ресета быть причиной сбоев фонариков, о которой Вы говорили? при помехе по ресету как раз и будет короткое отключение и смена режимов

 

нашел. не Вы говорили:

P.S. А сам я нафиг выдрал эту плату управления, потому как достала она меня этим постоянным переключением режимов и идиотским стробоскопом..
Изменено пользователем stells

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


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

Ну если подключен, то я не понимаю как это вообще может работать. Проц без единицы на ресете не может работать. Либо при выключенном АЦП этот пресловутый конденсатор отключен от мультиплексора, либо одно из двух...

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


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

Проц без единицы на ресете не может работать.

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

 

да и вообще вход ресет самый хитрый, он же и при 12В должен работать

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

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


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

думаю, что да. я, когда проводил эксперимент на своей тиньке, удивился: почему я никогда не могу намерять нулевое напряжение на этом внутреннем кондере? даже если контроллер очень долго выключен, все-равно почти половина питания есть. а потому, что у меня ресет подтянут к питанию :)
думаю, вы ошибаетесь в этом предположении: в моих экспериментах с мега32 вывод сброса никак не связан с ADC0, а тем не менее никогда результат АЦП не получался нулевым и даже менее 390!

 

тут происходят процессы переноса заряда из конденсатора АЦП на емкость внешнего пина и всяких промежуточных цепей (там же по идее куча затворов полевичков и паразитных емкостей имеется "по пути") и обратно. видимо, из-за этого и не выходит чистого 0 на "свободном" входе АЦП.

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


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

тут происходят процессы переноса заряда из конденсатора АЦП на емкость внешнего пина и всяких промежуточных цепей (там же по идее куча затворов полевичков и паразитных емкостей имеется "по пути") и обратно. видимо, из-за этого и не выходит чистого 0 на "свободном" входе АЦП.

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

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


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

Немого повозился на обеде. Пока не стал сильно мудрить. PB4 (ADC2) никуда не подключен. При включении питания подключаю на него АЦП и измеряю.

 
  ADMUX=(0<<REFS0)| 2;
  ADCSRA=(1<<ADEN)|(1<<ADSC)|(0<<ADATE)|(0<<ADIF)|(0<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(0<<ADPS0);
  while(ADCSRA & (1<<ADSC));
  
  DDRB=(0<<DDB5)|(1<<DDB4)|(0<<DDB3)|(0<<DDB2)|(1<<DDB1)|(1<<DDB0);
  PORTB=(0<<PORTB5)|(0<<PORTB4)|(0<<PORTB3)|(0<<PORTB1)|(0<<PORTB0);
  
  temp=ADC;

после всего temp равно 560 где-то. 2.1 В. Ставлю щуп на PB4. Желтый луч - питание, Зеленый - PB4 (ADC2). Хорошо видно подключение АЦП и момент оцифровки.

post-4140-1263377018_thumb.png

Во-первых, напряжение далеко не 2.1 В, как это намерил АЦП.

Во-вторых, в начале оно выше чем было на АЦП в момент выключения.

В-третьих, занчение АЦП меняется от длительности выключенного состояния, но зависимость достаточно сложная. От питания, самом собой, тоже зависит.

В-четвертых, на китайской прошивке ничего подобного и в помине нет ни на одной ножке. Ну да хрен с ними - мы идем своим путем.

 

То же самое, но поставил фузы на, чтобы стартовал через (14CK + 4 ms).

post-4140-1263378380_thumb.png

post-4140-1263378389_thumb.png

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


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

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