Chip115 писал(а):а "задний фронт" вызывает усмешку у грамотных людей.
Не знал

. Просто как начал изучать по статьям программирование МК, так и засело в голове. В даташатах и мануалах обычно используются "rise" и "fall".
Как всё таки сделать прервание по изменению счётчика энкодера? Мне начинает казаться, что это невозможно.
И вообще, сижу я тут и размышляю: можно ведь просто, взять два канала внешних прерываний и подцепить туда энкодер, сделать прерывание по изменению лог состояния каждого из выводов и обработать направление вращения с помощью операций сравнения и двух исключающих "или". Неужели этот код будет заметно уступать по быстродействию аппаратному энкодеру? Стоило ли из-за этого создавать отдельный интерфейс?
И ещё вопрос

.
Как всегда, теоретические рассуждения встретились с практикой.
Появилась задача записать в нулевой бит переменной значение GPIOA->IDR & GPIO_IDR_0, а в первый бит значение GPIOA->IDR & GPIO_IDR_1. В АВР было просто: обратился к PINA.0, он тебе выдал текущее значение этого пина (лог0 или лог1), а тут возвращается либо лог0, либо номер пина. Можно конечно замутить структуры из IF или SWITCH для преобразования в единицу значения, отличного от нуля, но может есть более изящный и менее затратный по ресурсам способ?