Jump to content
tifaso

Опросы кнопок на MEGA8 и MEGA16

Recommended Posts

@IMXO Только что отредактировал программу и сделал по вашей ссылке. Все заработало.
Спасибо
Понравилось что в прерывании минимум кода. Только это:

ISR(TIMER0_OVF_vect){
	send_procc();
	timer0_tact+=1;
	static uint8_t cnt;
	if(cnt++ >= 10 ){cnt=0;tick_flag=1;} //флаг опроса кнопок
}//end of ISR

Да еще интересно что все значения задержек подошли для моей частоты процессора и прескалера таймера.
дальше надо придумать как сделать на 16-17 кнопок, потому что эта функция только на 8 кнопок. Думаю сделать еще один такой же обработчик на вторую группу кнопок.

Еще меня заинтересовала ваша цитата ранее

Цитата

жизнь заставляет писать код для приложений работающих в условиях сильных ЭМП , 
если помеха ловится в момент опроса пина без подавления джитера имеем ложное срабатывание.

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

Share this post


Link to post
Share on other sites
35 минут назад, Vit@lik сказал:

потому что эта функция только на 8 кнопок. Думаю сделать еще один такой же обработчик на вторую группу кнопок.

зачем? увеличите размерность событий и состояний в структуре и в функции до 16бит и будет 16кнопок....

Share this post


Link to post
Share on other sites

Вебинар «Новинки и решения Traco для промышленных и отраслевых приложений» (28.10.2021)

Компэл 28 октября приглашает всех желающих принять участие в вебинаре, где будет рассмотрена новая и перспективная продукция компании Traco. Мы подробно рассмотрим сильные стороны и преимущества продукции Traco, а также коснемся практических вопросов, связанных с измерением уровня шумов, промывкой изделий после пайки и отдельно разберем, как отличить поддельный ИП Traco от оригинала.
Подробнее

Posted (edited)

я что-то думал что 8 битный процессор не способен нормально выполнять логические операции между 16 битными переменными,
хорошо сделаю
думал это делается сложнее

Edited by Vit@lik

Share this post


Link to post
Share on other sites

Особенности вывода ключей PROFET+2 12V из состояния блокировки

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

Подробнее

41 минуту назад, Vit@lik сказал:

Все заработало.

это хорошо, только надо понимать,что у этого алгоритма есть ограничения...

для понимания: 
системный вызов опроса кнопок 1мс
дребезг кнопок 15мс
если кнопки будут нажиматься последовательно  с интервалом 14..19мс,
то результат нажатия всех кнопки будет выдан одновременно с последней
и если кнопки нажимались и отжимались результат их нажатия отпускания может быть утерян.
 

Share this post


Link to post
Share on other sites

Беспроводные интерфейсы умного проSTранства - преимущества и ограничения

При автоматизации больших территорий используются протоколы беспроводной связи ZigBee, BLE/Bluetooth, LoRaWAN, Sigfox, Thread, проприетарные протоколы 433/868 МГц и NFC. Компания STMicroelectronics предлагает для них приемопередающие модули и системы на кристалле, специализированные контроллеры, ИС для создания RFID-меток, а также экосистему из аппаратных и программных продуктов для разработки, отладки и поддержания работоспособности. Разберем подробно решения STMicroelectronics для передачи данных по этим протоколам.
Подробнее

@IMXO
это устройство почти аналог телевизионного пульта, сюда будет и этого достаточно.
Посоветуйте алгоритм а еще лучше и пример, для опроса датчиков типа геркон (или механический концевик), около 10 шт. С защитой от дребезга, помех, важно уловить все срабатывания, (нажимания и отжимания) и последовательность, если два датчика сработали одновременно то тоже должны фиксировать два или три  (или больше ) события

Share this post


Link to post
Share on other sites

Реле TE Connectivity – надежная коммутация, доступная со склада Компэл

Компэл предлагает огромный выбор реле от ведущего производителя электромеханических коммутирующих устройств – компании TE Connectivity. На складе представлен широкий ассортимент реле в миниатюрных и стандартных корпусах для сигнальных, высокочастотных и силовых применений.
Подробнее

пример независимой обработки приводил выше https://forum.cxem.net/index.php?/topic/222979-опросы-кнопок-на-mega8-и-mega16/&do=findComment&comment=3514038
а  как его модифицировать для

35 минут назад, Vit@lik сказал:

если два датчика сработали одновременно

напрягайте извилины ;)

Share this post


Link to post
Share on other sites

@IMXO не работает на более чем 8 кнопок.
пробовал указывать размерность char ... :16 не работает. мне Атмел Cтудия предлагала указать тип char16_е, я указал но потом выдает ошибку не распознает такой тип. подключал библиотеку stdlib ничего не изменило

Share this post


Link to post
Share on other sites

@Vit@lik  вот скажите честно вы хоть один учебник по Си пробовали читать? могу посоветовать ... http://cpp.com.ru/shildt_spr_po_c/index.html
базовые типы данных, структуры, битовые поля и тд

"увеличить размерность" переменой это сменить ее тип

unsigned char = 8бит без знаковое,
следующий по размеру
unsigned int = 16бит без знаковое.

Share this post


Link to post
Share on other sites
Posted (edited)

@IMXO  читал Белов А.В. Микроконтроллеры AVR.

54 минуты назад, IMXO сказал:

могу посоветовать ..

Спасибо сохранил закладку
читал Б. Керниган,  и Д. Ритчи немного, но пока еще не до конца. И статьи в интернете. Только читать скучно. Хочу и еще и делать и работать.

54 минуты назад, IMXO сказал:

следующий по размеру
unsigned int = 16бит без знаковое.

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

Edited by Vit@lik

Share this post


Link to post
Share on other sites
Posted (edited)

уже сделал, работает на 16 кнопок. Дело было не d типах данных, а в другом месте.

Edited by Vit@lik

Share this post


Link to post
Share on other sites

@IMXO
А будет ли лучше если тот код что обозначен красным перенести с таймера в главный цикл? чтобы не нагромождать прерывания
 

Screenshot_1.png

Share this post


Link to post
Share on other sites

@IMXO Здравствуйте. Мне не хватает портов для кнопок и датчиков (работающих как обычная кнопка).
Думаю над тем чтобы использовать АЦП входы ADC6 и ADC7 у ATmega8. Но они могут работать только как АЦП вход.
Скажите хорошая ли это идея? Как-то раз я заметил что опрос АЦП сильно замедляет работу процессора.

Share this post


Link to post
Share on other sites

На один порт АЦП можно повесить несколько кнопок через резисторный делитель.

Share this post


Link to post
Share on other sites
5 часов назад, Vit@lik сказал:

опрос АЦП сильно замедляет работу процессора

Опрос можно запускать в фоновом режиме,  всего 13 тактов на частоте 50...200kГц .

По АЦП легко идентифицируется 4-6 кнопок .

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...