Дурацкие идеи... А может, и не дурацкие...

Что бы еще такого сделать?... Предлагайте! Обсудим все!!!
Ответить
Друг Кота
Аватара пользователя
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

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

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

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

Сообщение ARV »

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

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

Только и всего.

Добавлено after 1 minute 36 seconds:
Много кнопок может быть нужно, например, для пульта ДУ. И в этом случае будить МК отдельной кнопкой не комильфо
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 548
Зарегистрирован: Ср июн 29, 2022 16:25:45

Сообщение Just_Fluffy »

Чисто мысль вслух, я не проверяла, просто подумалось. Длинное/короткое нажатие на резет можно ПОПРОБОВАТЬ отследить через собаку. Собаку настроить на интервал 1 сек. В основной программе постоянно сбрасывать собаку. Тогда короткое нажатие на резет даст в слове состояния сброс по резету, а длинное более 1 сек - добавится еще бит сброса по собаке.
Но это надо проверять, при нажатом резете сработка собаки поднимет еще и свой бит или нет.
Но если МК будет использовать сон, то собаку надо отключать. Тогда длинное не отследится.
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Друг Кота
Аватара пользователя
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

ARV, одна кнопка, RC (параллельно), ресет.
в момент нажатия будет происходить сброс (или пробуждение из любого сна) а затем ресет отключается, но опрашивая АЦП можно отследить удержание кнопки.

может мне бракованные тиньки попались, но в своё время, как ни пытался, на 13 допустимого для батарейного питания потребления я добиться не смог,
до этого на 2313 добивался, но там ещё флешка жоркая была,...в результате сделал полное самоотключение устройства на 2х транзисторах, благо в памяти ничего хранить не требовалось.

Добавлено after 6 minutes 57 seconds:
Just_Fluffy, если собака работает - то это изящное решение, причем даже флаг проверять не надо, а можно просто в её прерывании сон обустраивать
если не работает, но хотябы тикает её таймер, то это тоже уже вариант, правда не очень удобный - после нажатия кнопки замерить время дотика таймера собаки - работать будет, но реакция на кнопку будет долгая...
А собака не будет постоянно будить МК делая режим сна неэкономичным?... разве только перед сном глушить собаку, тогда при выходе из сна нажатие всегда будет коротким - наверно это не страшно...

Добавлено after 1 hour 32 minutes 27 seconds:
Попробовал я собаку помучать - ничего не вышло... :(
похоже ресет ей и флаг и счёт сбрасывает, флаг сброса по собаке при зажатом ресете тоже не появляется
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Реклама
Эиком - электронные компоненты и радиодетали
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18677
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

ARV, держи код - проверяй, с АЦП всё работает:
один светодиод переключается по факту прерывания от ресета, второй по АЦП отображает удержание кнопки.
Номиналы фильтра возможно придётся подбирать, у меня конденсатор первый попавшийся и резистор меньше, но у меня на макетке сделана внешняя подтяжка ресета к + питания и отпаивать я не захотел.
Работа в протеусе и в железе одинаковая.
СпойлерИзображение

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

#include <tiny13a.h>
#define res_led 0
#define adc_led 1
#define adc_inp 0    //выбор аналогового входа
#define ADC_VREF_TYPE ((0<<REFS0) | (0<<ADLAR)) | (adc_inp);
void main(void)
{
static unsigned char Out;
Out^=(1<<res_led); //Переключаем бит по факту сброса МК
DDRB=(1<<res_led) | (1<<adc_led);
ACSR=(1<<ACD); // Analog Comparator: Off
ADMUX=ADC_VREF_TYPE;
ADCSRA=(1<<ADEN) | (1<<ADSC) | (1<<ADATE) | (0<<ADIF) | (0<<ADIE) | (6<<ADPS0);
ADCSRB=(0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0);
while (1){
         while (ADCSRA&(1<<ADSC)) {};
         if (ADCW<1000) Out|=(1<<adc_led); else Out&=~(1<<adc_led); 
         ADCSRA|=(1<<ADSC);
         PORTB=Out;
         };
}
Вложения
ADC0+RST.zip
(19.47 КБ) 47 скачиваний
2024-12-19_09-36-08.png
(11.79 КБ) 199 скачиваний
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18677
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Код не нужен, по схеме всё ясно. ХитрО! Однако, это я и называю "интересные алгоритмы и схемы" :))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 548
Зарегистрирован: Ср июн 29, 2022 16:25:45

Сообщение Just_Fluffy »

[uquote="ARV",url="/forum/viewtopic.php?p=4661905#p4661905"]Почему-то вы забыли, что ресет всю внутреннюю аппаратуру останавливает: все счетчики, регистры и т.п., поэтому во время нажатого сброса никакие биты не могут измениться. Поэтому определить длительность удержания ресета невозможно, только интервал между сбросами[/uquote] Ну если собака включена во фьюзах, то она и под резетом считать должна, если мне память не изменяет. И вообще - я написала в порядке идеи.
Решение Ivanoff-iv более красивое. Но там еще просится внешняя подтяжка резета к питанию, поскольку внутренняя - она слишком большой разброс может иметь, не ?.
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Друг Кота
Аватара пользователя
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

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

а вот включенную фьюзами собаку я не проверил... :oops: но думаю что если её таймер останавливается, то уже не важно, как она включена
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Вымогатель припоя
Аватара пользователя
Сообщения: 548
Зарегистрирован: Ср июн 29, 2022 16:25:45

Сообщение Just_Fluffy »

Ivanoff-iv, если собака включена фьюзами, то под резетом она должна считать. Так я читала в каких то книжках, когда учила АВРки. Но то было давно и память моя уже могла мне изменить с другим....
Белая и Пушистая
Я не ИИ, поэтому могу ошибаться.
Ответить

Вернуться в «Умные мысли»