К схеме претензий нет, вполне рабочая, я имел ввиду что предыдущий пример не подходит под нее ) Резисторы в данном случае не есть необходимость, т.к. включены подтяжки в МК. Если последний пример заработал, и по нажатию на любую из кнопок светодиод загорается, можно идти дальше. Теперь попробуйте переключать эффекты:
Код:
char ef = 0; while(1) { if ( !(PIND & (1 << PIND4)) ) { ef = !ef; }
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
Добавлено: Ср янв 18, 2012 09:47:32
Поставщик валерьянки для Кота
Карма: 1
Рейтинг сообщений: 5
Зарегистрирован: Ср май 11, 2011 21:37:45 Сообщений: 1995 Откуда: Цветочный город
Рейтинг сообщения:0
BerZerK-ku писал(а):
Зачем? И так все работает
PORTB.1 тоже работает кое где, но это не означает, что такая запись правильная. WinAVR, например, следуя стандарту, все числовые константы ПО УМОЛЧАНИЮ считает типа int, а значит запись 16000000 фактически превратится в 9216. поэтому указание суффикса UL обязательно. и уж во всяком случае одинаково сработает ВО ВСЕХ КОМПИЛЯТОРАХ без исключения.
BerZerK-ku, вы же великий знаток Си - неужели не знаете этих элементарных вещей?!
_________________ битва с дураками проиграна, победители торжествуют. слава победителям!
При чем тут WinAVR? В WinAVR вообще нет подобной встроенной функции, да и ВО ВСЕХ КОМПИЛЯТОРАХ вряд-ли найдется. Так какой смысл думать о переносимости, а особенно в такой программе? В отличие от ваших возвеличиваний, я не употреблял в свою сторону "великий" и вроде никогда не говорил как надо делать, а всего-лишь как можно делать. Ну не люблю я правила, а особенно неписанные
Заголовок сообщения: 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 раз.
Объясняю на пальцах: данная программа уже не переносима, ввиду использования внутренней функции 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(), перепрочтите и удивитесь
_________________ битва с дураками проиграна, победители торжествуют. слава победителям!
Скорее всего происходит следующее: При нажатии на кнопку, цикл с eff= 0, eff = 1 проскакивает практически мгновенно, включается eff = 2. Идет мигание. Вы нажимаете на кнопку и см. сначала. Шанс остановки не на eff= 2 есть, но очень мал. Необходимо увеличить период опроса кнопки, например добавить задержки в eff 0 и 1. Посмотрите пример выше, я там для исключения подобного поставил задержку 1с в конце цикла. На практике обычно реализую опрос кнопок на таймере: после первого определения кнопки, следующее нажатие фиксирую где-то через 2 секунды и если кнопка до сих пор нажата, перехожу в ускоренный режим с фиксацией раз в 0.5с.
Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
Добавлено: Ср янв 18, 2012 11:28:03
Поставщик валерьянки для Кота
Карма: 1
Рейтинг сообщений: 5
Зарегистрирован: Ср май 11, 2011 21:37:45 Сообщений: 1995 Откуда: Цветочный город
Рейтинг сообщения:0
AR_AROV писал(а):
почему вот такой код не работает?
как минимум потому, что вы не читали, как надо опрашивать кнопку - а я для вас подробно все описывал. категорически недопустимо работать с кнопкаи, опрашивая 1 раз пин порта! сколько раз еще надо повторить?!
_________________ битва с дураками проиграна, победители торжествуют. слава победителям!
как минимум потому, что вы не читали, как надо опрашивать кнопку - а я для вас подробно все описывал. категорически недопустимо работать с кнопкаи, опрашивая 1 раз пин порта! сколько раз еще надо повторить?!
а сколько раз надо опрашивать? я делал так как вы писали, но у меня не получилось
Заголовок сообщения: Re: Обработка нажатия кнопки в AVR...
Добавлено: Ср янв 18, 2012 11:33:11
Поставщик валерьянки для Кота
Карма: 1
Рейтинг сообщений: 5
Зарегистрирован: Ср май 11, 2011 21:37:45 Сообщений: 1995 Откуда: Цветочный город
Рейтинг сообщения:0
я не увидел ни строчки кода, где бы вы делали и у вас не получилось. к тому же вам только что еще раз намекнул местный гуру, что цикл пролетает ОЧЕНЬ БЫСТРО и, может быть, у вас все и работает, но вы этого не успеваете замечать. поэтому перед тем, как делать очередной опрос кода кнопки надо дождаться, когда ее отпустят - ну, по ситуации, конечно.
_________________ битва с дураками проиграна, победители торжествуют. слава победителям!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения