asadmasad Опубликовано 11 августа, 2017 Поделиться Опубликовано 11 августа, 2017 (изменено) Принесли устройство, попросили написать коротенькую обработку. Устройство контролирует исполнительные устройства (автоматы, контакторы, цифровые датчики). Собрано на atmega 2560. Для опроса используется порт L. Он сконфигурирован стандартно: // Port L initialization // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRL=(0<<DDL7) | (0<<DDL6) | (0<<DDL5) | (0<<DDL4) | (0<<DDL3) | (0<<DDL2) | (0<<DDL1) | (0<<DDL0); // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTL=(0<<PORTL7) | (0<<PORTL6) | (0<<PORTL5) | (0<<PORTL4) | (0<<PORTL3) | (0<<PORTL2) | (0<<PORTL1) | (0<<PORTL0); Подтягивающие резисторы по 10к есть на самой плате. #define A1 PINL&(1<<0) #define A2 PINL&(1<<1) #define A3 PINL&(1<<2) #define A4 PINL&(1<<3) #define A5 PINL&(1<<4) В коде по прерыванию от таймера (желание заказчика) проверяем состояние пинов. if (!A1){printf("1");} // написал просто для проверки, чтобы видеть, что работает if (A1) {printf("2)";} Всё работает. При опросе следующих пинов появляется непонятная для моего недостаточного опыта фигня. if (!A2){printf("3");} if (A2) {printf("4");} Сначала нет ничего при появлении сигнала на А2, появляется 4, а при пропадании сигнала опять ничего. Пробовал считать состоянии пина в переменную int c = A2; printf("%i", c); Без сигнала идут 0, после появления появляется цифра 2, когда сигнал пропадает 0. Не могу понять, помогите. Изменено 11 августа, 2017 пользователем asadmasad 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
BARS_ Опубликовано 11 августа, 2017 Поделиться Опубликовано 11 августа, 2017 (изменено) Как минимум это PINL&(1<<4) надо заключить в скобки. И сделать защиту от дребезга. Изменено 11 августа, 2017 пользователем BARS_ 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
asadmasad Опубликовано 11 августа, 2017 Автор Поделиться Опубликовано 11 августа, 2017 Спасибо большое. Изменил на #define A1 (PINL&(1<<0)) #define A2 (PINL&(1<<1)) #define A3 (PINL&(1<<2)) и всё заработало. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
BARS_ Опубликовано 11 августа, 2017 Поделиться Опубликовано 11 августа, 2017 Не за что. Успехов в разработке 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.