Перейти к содержанию
    

ATMEGA128A - проблема с внешними прерываниями INT

Здравствуйте, уважаемые специалисты!!!

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

Есть 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

Спасибо!

Изменено пользователем IgorKossak
[codebox] для длинного кода, [code] - для короткого!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В атмеловском талмуде на 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В атмеловском талмуде на ATMega128A утверждается, что источником внешнего прерывания должна быть нога порта D, а не C.

СПАСИБО огромное! Похже, мне надо внимательнее курить datasheet ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...