Например TDA7294

Форум РадиоКот • Просмотр темы - Опрос кнопок микроконтроллером
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Ср сен 30, 2020 12:59:35

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 321 ]  1, , , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Опрос кнопок микроконтроллером
СообщениеДобавлено: Пн окт 29, 2012 06:30:06 
Вымогатель припоя

Зарегистрирован: Вт ноя 02, 2010 17:46:37
Сообщений: 568
Рейтинг сообщения: 0
Делаю опрос кнопок всё работает нормально но код получился достаточно объёмным. Можно как-нибудь его ужать не изменяя его ? Просто когда дальше делать заполнять действиями по всем клавишам чёрти что получится единственный вариант видел вынести как функцию в общем как и сделал.
Хотя вот пока писал на ум пришла не большая мысль. Вынести код который должен исполнятся при нажатии на кнопку в другой файл т.е на 4 кнопки 4 дополнительных листинга =)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пн окт 29, 2012 08:19:38 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 12
Рейтинг сообщений: 67
Зарегистрирован: Пт авг 27, 2010 05:57:06
Сообщений: 2482
Откуда: Тюмень
Рейтинг сообщения: 0
Делайте один антидребезг до обработки в switch и одно ожидание отпускания после обработки.Тогда и код станет короче и визуально будет лучше выглядеть.


Вернуться наверх
 
JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

Отличное качество, подтвержденное более чем 600,000 пользователей! Более 10,000 заказов в день.

Зарегистрируйтесь и получите два купона по 5$ каждый:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пн окт 29, 2012 08:32:59 
Вымогатель припоя

Зарегистрирован: Вт ноя 02, 2010 17:46:37
Сообщений: 568
Рейтинг сообщения: 0
На ум приходит только одинаковый кусок кода вынести, а как ? :dont_know:

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


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Шестое юбилейное мероприятие в процессе
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пн окт 29, 2012 09:24:33 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 12
Рейтинг сообщений: 67
Зарегистрирован: Пт авг 27, 2010 05:57:06
Сообщений: 2482
Откуда: Тюмень
Рейтинг сообщения: 0
вот простой алгоритм
Считали порт (!PIND&BUTTONMASK),
пауза
считали еще раз порт
если два значения совпали,
то делаем switch
после switch тупим, пока любая кнопка нажата (!PIND&BUTTONMASK)
если не совпали ничего не делаем

PS можно так и мультинажатие отрабатывать.


Вернуться наверх
 
Драйверы MOSFET/IGBT Infineon – силой нужно управлять!

Специалисты Infineon усовершенствовали традиционные кремниевые MOSFET и IGBT и выпустили компоненты на базе принципиально иных материалов – нитрида галлия и карбида кремния. Мы создали подборку полезных материалов, чтобы вы разобрались во всех тонкостях и стали экспертом по управлению силовыми приборами нового поколения CoolMOS, CoolGaN, CoolSiC!

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Мелкие вопросы по МК и ПЛИС.
СообщениеДобавлено: Пн ноя 05, 2012 17:16:13 
Встал на лапы

Карма: -1
Рейтинг сообщений: -2
Зарегистрирован: Сб авг 11, 2012 22:31:57
Сообщений: 86
Рейтинг сообщения: 0
#include <ioavr.h>
#include <intrinsics.h>
#define KEY1 (0<<4)
#define KEY2 (1<<5)
#define ANY_KEY (KEY1 | KEY2)
#define NO_KEY 0
int main( void )
{
DDRC=255;
DDRA=0;

while (1) //Организовываем бесконечный цикл
{
if (PINA==KEY1)
PORTC|=(1<<4);

}

}

Кнопка подключена к земле. Не реагирует. За то прикасаюсь пальцем к микросхеме и светодиод загорается. Как заставить работать кнопку относительно земли?


Вернуться наверх
 
Снижена цена на DC/DC и AC/DC преобразователи Mornsun в Компэл!

Хорошие новости для покупателей источников питания! Компэл снизил цены на всю продукцию Mornsun. В ассортименте – как широко известные и популярные позиции, так и новинки. Доступны AC/DC, неизолированные DC/DC-преобразователи или импульсные стабилизаторы (семейство K78/R3), изолированные DC/DC, и новейшее поколение R4.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Мелкие вопросы по МК и ПЛИС.
СообщениеДобавлено: Пн ноя 05, 2012 17:18:43 
Модератор
Аватар пользователя

Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13492
Откуда: Тамбовская обл.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
А где подтяжка?


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Мелкие вопросы по МК и ПЛИС.
СообщениеДобавлено: Пн ноя 05, 2012 17:22:29 
Встал на лапы

Карма: -1
Рейтинг сообщений: -2
Зарегистрирован: Сб авг 11, 2012 22:31:57
Сообщений: 86
Рейтинг сообщения: 0
Простите, всмысле подтяжка?


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Пн ноя 05, 2012 17:48:00 
Модератор
Аватар пользователя

Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13492
Откуда: Тамбовская обл.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Тогда ответьте на вопрос: когда отпущена кнопка, что у вас на входе? Какой потенциал?


Вернуться наверх
 
Бытовой пирометр АКИП-9312 – просто удобно!

Диапазон 35 °С ...42°С (температура тела) погрешность 0,3 °С
Диапазон 0 °С ...100°С (бытовая сфера) погрешность 1,0 °С
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Пн ноя 05, 2012 17:51:10 
Друг Кота

Карма: 28
Рейтинг сообщений: 563
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4506
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Подтяжка


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Пн ноя 05, 2012 20:44:50 
Встал на лапы

Карма: -1
Рейтинг сообщений: -2
Зарегистрирован: Сб авг 11, 2012 22:31:57
Сообщений: 86
Рейтинг сообщения: 0
Всё, я понял, только какое примерно сопротивление поставить?
ПС я забыл поставить подтягиваюший резистор)
Пока кнопка не нажата потенциал 1,6 вольт, тоесть лог 0, а при нажатии её относительно земли вообше ничего.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Пн ноя 05, 2012 21:05:59 
Друг Кота

Карма: 28
Рейтинг сообщений: 563
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4506
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Интересные дела... а как ты замерил эти 1.6В? вход порта у контролера устроен так что он не может поддерживать какой-то уровень напряжения - это просто затвор полевого транзистора. Напряжение на нем меняется от электрического(наведенная статика от одежды например) поля наведенного человеком на расстоянии десятков сантиметров если его не подтянуть. Неизвестно что намерял там прибор.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Пн ноя 05, 2012 21:30:05 
Модератор
Аватар пользователя

Карма: 68
Рейтинг сообщений: 424
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Сообщений: 13492
Откуда: Тамбовская обл.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
По сути вы измеряли висящий в воздухе провод :)
Я про то и намекал в предыдущем своём сообщении. Частая ошибка, когда человек думает, что замкнув ногу на землю (или еще что-то) он получит то, что хочет.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Пн ноя 05, 2012 21:43:48 
Встал на лапы

Карма: -1
Рейтинг сообщений: -2
Зарегистрирован: Сб авг 11, 2012 22:31:57
Сообщений: 86
Рейтинг сообщения: 0
Спасибо, я понял, но как включить внутренний подтягиваюший резистор? Работаю в IAR, и нужен пример для него. Тоесть хочу включить подтягиваюший резистор для определённой ноги)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Пн ноя 05, 2012 21:53:44 
Друг Кота

Карма: 28
Рейтинг сообщений: 563
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4506
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Прочитать даташит. Включается точно так же как изменяется направление вывода. Но в дополнение к тому что указать для какого вывода используется подтяжка, надо еще их разрешить глобально.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Пн ноя 05, 2012 21:58:59 
Встал на лапы

Карма: -1
Рейтинг сообщений: -2
Зарегистрирован: Сб авг 11, 2012 22:31:57
Сообщений: 86
Рейтинг сообщения: 0
PORTA=0xFF; вот так я разрешаю глобально?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Пн ноя 05, 2012 22:22:21 
Встал на лапы

Карма: -1
Рейтинг сообщений: -2
Зарегистрирован: Сб авг 11, 2012 22:31:57
Сообщений: 86
Рейтинг сообщения: 0
Не, ну перечитал уже всё... Не знаю как у порта A4 включить подтягивающий резистор на Atmega32. Для IAR ничего не нахожу. Для других компиляторов что то есть, но они хотябы хавают код а не плються ошибками.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Пн ноя 05, 2012 22:34:22 
Друг Кота

Карма: 28
Рейтинг сообщений: 563
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4506
Откуда: Украина, Славутич
Рейтинг сообщения: 0
Лучше почитай даташит, там найдешь еще очень много полезного.

Конкретно там есть табличка "PortPin Configurations". Чтобы включить подтяжку надо: перевести порт на ввод, установить там "1" и установить бит PUD в регистре SFIOR, иначе порт будет просто в высокоимпендансном состоянии.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Пн ноя 05, 2012 22:42:15 
Встал на лапы
Аватар пользователя

Зарегистрирован: Пн ноя 05, 2012 22:23:32
Сообщений: 126
Откуда: Санкт-Петербург
Рейтинг сообщения: 0
Я тоже долго парился с линиями портов ввода/вывода... Но мой знакомый программист объяснил мне, как надо юзать их)
pin* port*
0 0 нога вход
0 1 нога вход +резистор на +питания
1 0 нога выход +лог. 0 на выходе
1 1 нога выход +лог. 1 на выходе


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Пн ноя 05, 2012 22:52:37 
Друг Кота

Карма: 28
Рейтинг сообщений: 563
Зарегистрирован: Чт май 05, 2011 21:26:34
Сообщений: 4506
Откуда: Украина, Славутич
Рейтинг сообщения: 0
В даташите черным по английски нарисована именно такая же табличка. Так что не обязательно слушатся знакомого программиста - иногда быстрее и точнее найти это в даташите.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Помогите опросить кнопку
СообщениеДобавлено: Пн ноя 05, 2012 22:56:53 
Встал на лапы

Карма: -1
Рейтинг сообщений: -2
Зарегистрирован: Сб авг 11, 2012 22:31:57
Сообщений: 86
Рейтинг сообщения: 0
#include <ioavr.h>
#include <intrinsics.h>

int main( void )
{
DDRC=255; //Все порты C как выход (для светодиода)
DDRA=0; //Все порты A как вход
PORTA|=(1<<4); //Сделали на порте A4 логическую 1, то есть включился подтягивающий резистор.

while (1) //Организовываем бесконечный цикл
{
if (PINA==(1<<4)) //если состояние 1 то светодиод горит
{
PORTC|=(1<<4);
}
if (PINA==(0<<4)) //если состояние 0 то светодиод тухнет
{
PORTC&=(~(1<<4));
}
}


}


Это всё работает при нажатии кнопки только когда я подношу к микроконтроллеру вплотную палец, после чего убирая палец я фиксирую состояние светодиода и он не реагирует на кнопку. Может накрылся внутренний генератор 8 мГц? И стартует только при поднесении пальца?


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 321 ]  1, , , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y