Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ATMEGA128A - проблема с внешними прерываниями INT
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Lisitsin
Здравствуйте, уважаемые специалисты!!!
Столкнулся с примитивнейшей проблемой. Заблудиться в трёх соснах намного сложнее, чем в трёх регистрах.
Есть ATMEGA128A и кусок кода, разрешающий внешнее прерывание INT2 (PINC:2) по низкому уровню:
Код
                OUT        EIMSK,ZERO                    ; ZERO у меня всегда в нуле. Просто запрещаем все внешние прерывания
                LDI        BUF,0X00                        ; Этой командой настраиваем выработку всех прерываний
                STS        EICRA,BUF                        ;  (INT0...7) низким уровнем
                LDI        BUF,0XFF                        ; Записью лог. 1 во все разряды сбрасываем все флаги прерываний
                OUT        EIFR,BUF                        ; во флаговом регистре EIFR (если они вдруг были)
                LDI        BUF,(1<<INT2)                    ; Этой командой
                OUT        EIMSK,BUF                        ; разрешаем прерывание INT2
                SEI                                    ; Глобально разрешаем прерывания
                NOP
                NOP
                NOP
                NOP
                NOP
Вот и всё. Проще некуда. И не работает, программа продолжает выполняться с нулём в разряде PINC:2 как будто так и должно быть
Не понимаю в чём тут дело. Может, кто-то уже сталкивался с такой проблемой?
https://vk.com/video142452557_456239045
Спасибо!
aiwa
В атмеловском талмуде на ATMega128A утверждается, что источником внешнего прерывания должна быть нога порта D, а не C.
Цитата
INT2/RXD1 – Port D, Bit 2
INT2, External Interrupt source 2. The PD2 pin can serve as an External Interrupt source to the MCU.
RXD1, Receive Data (Data input pin for the USART1). When the USART1 receiver is enabled this pin is
configured as an input regardless of the value of DDD2. When the USART forces this pin to be an input,
the pull-up can still be controlled by the PORTD2 bit.
Lisitsin
Цитата(aiwa @ Oct 11 2016, 19:25) *
В атмеловском талмуде на ATMega128A утверждается, что источником внешнего прерывания должна быть нога порта D, а не C.

СПАСИБО огромное! Похже, мне надо внимательнее курить datasheet ...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.