Например TDA7294

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



Текущее время: Чт авг 06, 2020 10:17:35

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


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



Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 294 ]    , , , 4, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Вт янв 17, 2012 10:10:42 
Открыл глаза

Зарегистрирован: Сб янв 14, 2012 11:05:46
Сообщений: 59
Рейтинг сообщения: 0
BerZerK-ku писал(а):
Ну при таком включении ничего и не будет ) Замените строчку в цикле на:
Код:
if ( (PIND & 0x1F) != 0x1F )
    PORTB = (1 << PORTB7);
else
    PORTB = 0;


а как надо включать чтоб было правильно? :oops:

перепаять как надо не проблема )


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Вт янв 17, 2012 22:31:22 
Открыл глаза

Зарегистрирован: Сб янв 14, 2012 11:05:46
Сообщений: 59
Рейтинг сообщения: 0
допаял резисторы на кнопки, и все равно не горит как надо

вот так:
Изображение


Вложения:
ledline1.JPG [235.23 KiB]
Скачиваний: 602
Вернуться наверх
 
JLCPCB, всего $2 за прототип печатной платы! Цвет - любой!

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

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

Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Вт янв 17, 2012 23:10:15 
Открыл глаза

Зарегистрирован: Сб янв 14, 2012 11:05:46
Сообщений: 59
Рейтинг сообщения: 0
работает только так:

BerZerK-ku писал(а):
Ну при таком включении ничего и не будет ) Замените строчку в цикле на:
Код:
if ( (PIND & 0x1F) != 0x1F )
    PORTB = (1 << PORTB7);
else
    PORTB = 0;



или так
Код:
  while(1)
  {
    PORTB = ~PIND;
  }


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Шестое юбилейное мероприятие в процессе
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср янв 18, 2012 05:10:25 
Мучитель микросхем

Зарегистрирован: Вт июл 22, 2008 08:10:54
Сообщений: 492
Рейтинг сообщения: 0
К схеме претензий нет, вполне рабочая, я имел ввиду что предыдущий пример не подходит под нее ) Резисторы в данном случае не есть необходимость, т.к. включены подтяжки в МК.
Если последний пример заработал, и по нажатию на любую из кнопок светодиод загорается, можно идти дальше. Теперь попробуйте переключать эффекты:
Код:
char ef = 0;
while(1)
{
    if ( !(PIND & (1 << PIND4)) )
    {
        ef = !ef;
    }
   
    if (ef)
        PORTB |= (1 << PORTB7);
    else
        PORTB ^= (1 << PORTB7);

    _delay_ms(1000);
}
Задержка формируется так:
Код:
// Тактовая частота
#define CPU_CLK_Hz 16000000   
// Задержка в мс
#define _delay_ms(x) __delay_cycles(x*(CPU_CLK_Hz/1000))


Вернуться наверх
 
Вебинар «Каждому ключу — свой драйвер» (13.08.2020)

Компания КОМПЭЛ приглашает вас принять участие в вебинаре, который будет посвящен теме драйверов управления транзисторами компании Infineon. Мы рассмотрим четыре различных технологии изготовления микросхем драйверов, в чём их отличия и особенности.

Зарегистрироваться на вебинар>>
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср янв 18, 2012 06:27:29 
Поставщик валерьянки для Кота

Карма: 1
Рейтинг сообщений: 5
Зарегистрирован: Ср май 11, 2011 21:37:45
Сообщений: 1995
Откуда: Цветочный город
Рейтинг сообщения: 0
BerZerK-ku писал(а):
Код:
// Тактовая частота
#define CPU_CLK_Hz 16000000
надо писать 16000000UL

_________________
битва с дураками проиграна, победители торжествуют. слава победителям!


Вернуться наверх
 
Меньше не бывает: неизолированные микро-DC/DC нового поколения R4 от Mornsun

Компания Mornsun разработала серию R4 неизолированных импульсных стабилизаторов напряжения в новом миниатюрном конструктивном исполнении. Уменьшение коснулось не только размеров, на 80% меньше существующих преобразователей, но и стоимости.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср янв 18, 2012 07:21:18 
Мучитель микросхем

Зарегистрирован: Вт июл 22, 2008 08:10:54
Сообщений: 492
Рейтинг сообщения: 0
Зачем? И так все работает :dont_know:


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


Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср янв 18, 2012 09:47:32 
Поставщик валерьянки для Кота

Карма: 1
Рейтинг сообщений: 5
Зарегистрирован: Ср май 11, 2011 21:37:45
Сообщений: 1995
Откуда: Цветочный город
Рейтинг сообщения: 0
BerZerK-ku писал(а):
Зачем? И так все работает :dont_know:

PORTB.1 тоже работает кое где, но это не означает, что такая запись правильная. WinAVR, например, следуя стандарту, все числовые константы ПО УМОЛЧАНИЮ считает типа int, а значит запись 16000000 фактически превратится в 9216. поэтому указание суффикса UL обязательно. и уж во всяком случае одинаково сработает ВО ВСЕХ КОМПИЛЯТОРАХ без исключения.

BerZerK-ku, вы же великий знаток Си - неужели не знаете этих элементарных вещей?!

_________________
битва с дураками проиграна, победители торжествуют. слава победителям!


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


Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср янв 18, 2012 10:32:30 
Мучитель микросхем

Зарегистрирован: Вт июл 22, 2008 08:10:54
Сообщений: 492
Рейтинг сообщения: 0
При чем тут WinAVR? В WinAVR вообще нет подобной встроенной функции, да и ВО ВСЕХ КОМПИЛЯТОРАХ вряд-ли найдется. Так какой смысл думать о переносимости, а особенно в такой программе?
В отличие от ваших возвеличиваний, я не употреблял в свою сторону "великий" и вроде никогда не говорил как надо делать, а всего-лишь как можно делать. Ну не люблю я правила, а особенно неписанные :)))


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

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

Карма: 1
Рейтинг сообщений: 5
Зарегистрирован: Ср май 11, 2011 21:37:45
Сообщений: 1995
Откуда: Цветочный город
Рейтинг сообщения: 0
BerZerK-ku писал(а):
При чем тут WinAVR? В WinAVR вообще нет подобной встроенной функции, да и ВО ВСЕХ КОМПИЛЯТОРАХ вряд-ли найдется. Так какой смысл думать о переносимости?
В отличие от ваших возвеличиваний, я не употреблял в свою сторону "великий" и вроде никогда не говорил как надо делать, а всего-лишь как можно делать :)))

если у вас температура - пейте аспирин: о какой функции идет речь?! константу без суффикса вы указали при помощи обычного дефайна! при чем тут функция?! я про функцию даже слова не сказал. дефайн сделан с ошибкой. ну или, если вам так приятнее, то с упором на специфические особенности какого-то конкретного компилятора. а программа на Си, как известно, должна быть переносимой по определению, не так ли?

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

кстати, в WinAVR есть функции _delay_cycles() и подобные :)))

_________________
битва с дураками проиграна, победители торжествуют. слава победителям!


Последний раз редактировалось Мастер Ломастер Ср янв 18, 2012 10:51:13, всего редактировалось 1 раз.

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


Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср янв 18, 2012 10:48:21 
Мучитель микросхем

Зарегистрирован: Вт июл 22, 2008 08:10:54
Сообщений: 492
Рейтинг сообщения: 0
:dont_know: Объясняю на пальцах: данная программа уже не переносима, ввиду использования внутренней функции IAR __delay_cycles(). Если мыслить по вашему, данная программа уже является ошибкой природы, т.к. не заработает в используемом вами WinAVR.
А для тех кто в танке, если вы проследите все вышесказанное, то разговор шел именно о использовании IAR. И код был приведен именно для этой среды.

В двух стандартных библиотеках delay.h и delay_basic.h подобного нет. Да и ни в одной из стандартных такого нет. Где же она распологается?


Последний раз редактировалось BerZerK-ku Ср янв 18, 2012 11:00:17, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср янв 18, 2012 10:56:15 
Поставщик валерьянки для Кота

Карма: 1
Рейтинг сообщений: 5
Зарегистрирован: Ср май 11, 2011 21:37:45
Сообщений: 1995
Откуда: Цветочный город
Рейтинг сообщения: 0
BerZerK-ku писал(а):
А для тех кто в танке, если вы проследите все вышесказанное, то разговор шел именно о использовании IAR. И код был приведен именно для этой среды.

похоже, в танке именно вы... пора вылазить: правила описания констант в дефайнах - НЕ ЗАВИСЯТ ОТ КОМПИЛЯТОРА. правильные правила из стандарта, а не их вариации КОНКРЕТНОЙ РЕАЛИЗАЦИИ компилятора. если в танке можно смело ехать на красный свет, плюя на правила, это не означает, что проезд на красный свет - это правильно.

давайте советы правильные, и я вам ни слова не скажу.

P.S. я подправил свой пост - по поводу _delay_cycles(), перепрочтите и удивитесь :)))

_________________
битва с дураками проиграна, победители торжествуют. слава победителям!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср янв 18, 2012 11:02:08 
Мучитель микросхем

Зарегистрирован: Вт июл 22, 2008 08:10:54
Сообщений: 492
Рейтинг сообщения: 0
Может еще подскажите в какой из библиотек?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср янв 18, 2012 11:11:34 
Открыл глаза

Зарегистрирован: Сб янв 14, 2012 11:05:46
Сообщений: 59
Рейтинг сообщения: 0
Извините что прерываю Вашу полемику )

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

Код:
int main( void )
{
  PORTB = 0xFF;
  DDRB = 0xFF;
 
  DDRD = 0x00;
  PORTD = 0x00;
 
  char ef = 0;
 
  while(1)
  {
    if ( !(PIND & (1 << PIND4)) )
    {
      ef++;
      if (ef > 2) ef = 0;
    }
   
    if (ef==2)
    {
      PORTB = 0;
      delay(200);
      PORTB = 1;
      delay(200);
    }
    if (ef==1)
      PORTB = 1;
    if (ef==0)
      PORTB = 0;
  }
  return 0;
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср янв 18, 2012 11:18:45 
Мучитель микросхем

Зарегистрирован: Вт июл 22, 2008 08:10:54
Сообщений: 492
Рейтинг сообщения: 0
Скорее всего происходит следующее:
При нажатии на кнопку, цикл с eff= 0, eff = 1 проскакивает практически мгновенно, включается eff = 2. Идет мигание. Вы нажимаете на кнопку и см. сначала. Шанс остановки не на eff= 2 есть, но очень мал. Необходимо увеличить период опроса кнопки, например добавить задержки в eff 0 и 1. Посмотрите пример выше, я там для исключения подобного поставил задержку 1с в конце цикла.
На практике обычно реализую опрос кнопок на таймере: после первого определения кнопки, следующее нажатие фиксирую где-то через 2 секунды и если кнопка до сих пор нажата, перехожу в ускоренный режим с фиксацией раз в 0.5с.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср янв 18, 2012 11:24:11 
Поставщик валерьянки для Кота

Карма: 1
Рейтинг сообщений: 5
Зарегистрирован: Ср май 11, 2011 21:37:45
Сообщений: 1995
Откуда: Цветочный город
Рейтинг сообщения: 0
BerZerK-ku писал(а):
Может еще подскажите в какой из библиотек?

а смысл? гуру учить - только себе проблем нажить :)))

_________________
битва с дураками проиграна, победители торжествуют. слава победителям!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср янв 18, 2012 11:28:03 
Поставщик валерьянки для Кота

Карма: 1
Рейтинг сообщений: 5
Зарегистрирован: Ср май 11, 2011 21:37:45
Сообщений: 1995
Откуда: Цветочный город
Рейтинг сообщения: 0
AR_AROV писал(а):
почему вот такой код не работает?
как минимум потому, что вы не читали, как надо опрашивать кнопку - а я для вас подробно все описывал. категорически недопустимо работать с кнопкаи, опрашивая 1 раз пин порта! сколько раз еще надо повторить?!

_________________
битва с дураками проиграна, победители торжествуют. слава победителям!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср янв 18, 2012 11:29:45 
Открыл глаза

Зарегистрирован: Сб янв 14, 2012 11:05:46
Сообщений: 59
Рейтинг сообщения: 0
Мастер Ломастер писал(а):
AR_AROV писал(а):
почему вот такой код не работает?
как минимум потому, что вы не читали, как надо опрашивать кнопку - а я для вас подробно все описывал. категорически недопустимо работать с кнопкаи, опрашивая 1 раз пин порта! сколько раз еще надо повторить?!


а сколько раз надо опрашивать? я делал так как вы писали, но у меня не получилось


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср янв 18, 2012 11:33:11 
Поставщик валерьянки для Кота

Карма: 1
Рейтинг сообщений: 5
Зарегистрирован: Ср май 11, 2011 21:37:45
Сообщений: 1995
Откуда: Цветочный город
Рейтинг сообщения: 0
я не увидел ни строчки кода, где бы вы делали и у вас не получилось. к тому же вам только что еще раз намекнул местный гуру, что цикл пролетает ОЧЕНЬ БЫСТРО и, может быть, у вас все и работает, но вы этого не успеваете замечать. поэтому перед тем, как делать очередной опрос кода кнопки надо дождаться, когда ее отпустят - ну, по ситуации, конечно.

_________________
битва с дураками проиграна, победители торжествуют. слава победителям!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср янв 18, 2012 11:36:46 
Модератор
Аватар пользователя

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

Вполне допустимо, чтобы понять, как это работает.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
СообщениеДобавлено: Ср янв 18, 2012 11:39:21 
Поставщик валерьянки для Кота

Карма: 1
Рейтинг сообщений: 5
Зарегистрирован: Ср май 11, 2011 21:37:45
Сообщений: 1995
Откуда: Цветочный город
Рейтинг сообщения: 0
ploop писал(а):
Цитата:
категорически недопустимо работать с кнопкаи, опрашивая 1 раз пин порта!

Вполне допустимо, чтобы понять, как это работает.

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

_________________
битва с дураками проиграна, победители торжествуют. слава победителям!


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Форум закрыт Эта тема закрыта, Вы не можете редактировать и оставлять сообщения в ней.  [ Сообщений: 294 ]    , , , 4, , , ...  

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


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

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


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

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


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