MicroPython:Библиотеки/pyb/Класс ExtInt: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
(Новая страница: «{{MicroPython/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =<ref>[]</ref>= <syntaxhighlight lang="python"...»)
 
Нет описания правки
 
(не показано 8 промежуточных версий 1 участника)
Строка 3: Строка 3:
{{Myagkij-редактор}}
{{Myagkij-редактор}}


=<ref>[]</ref>=
=Класс ExtInt – настройка I/O-контактов для прерываний на внешних событиях<ref>[http://docs.micropython.org/en/latest/library/pyb.ExtInt.html docs.micropython.org - class ExtInt – configure I/O pins to interrupt on external events]</ref>=


Всего на [[PyBoard]] есть ''22 линии'' с прерываниями. ''16'' из них относятся к [[GPIO-контакт]]ам, а оставшиеся ''6'' – к компонентам внутри платы.


Таким образом, линии ''с 0 по 15'' можно привязать к любому [[GPIO-порт]]у. То есть линию ''0'' можно привязать к ''Px0'', где ''«x»'' – это порт ''A, B, C'' и т.д., а линию ''1'' можно привязать к ''Px1'', где ''«x»'' – это тоже порт ''A, B, C'' и т.д.


<syntaxhighlight lang="python" enclose="div">
<syntaxhighlight lang="python">
def callback(line):
    print("line =", line)
</syntaxhighlight>
 
{{Примечание1|''ExtInt'' автоматически настраивает GPIO-линию в режим вывода данных.}}
 
<syntaxhighlight lang="python">
extint = pyb.ExtInt(pin, pyb.ExtInt.IRQ_FALLING, pyb.Pin.PULL_UP, callback)
</syntaxhighlight>
 
Теперь на контакте ''X1'' на заднем фронте каждый раз будет вызываться функция обратного вызова.
 
{{Блок/Инфо4
|1=Внимание
|2=На механических кнопках присутствует так называемый ''«дребезг»'' – явление, при котором нажатие или отпускание кнопки вызывают несколько ложных срабатываний. Более подробно о дребезге, а также о способах его устранения читайте [http://www.eng.utah.edu/~cs5780/debouncing.pdf тут].
}}
 
Попытка зарегистрировать две функции обратного вызова на одном и том же контакте возбудит исключение.
 
Если контакт будет передан как целое число, то это значит, что его нужно привязать к одному из внутренних источников прерываний – он должен быть в диапазоне ''между «16» и «22»''.
 
Все прочие объекты ''Pin'' привязываются к [[GPIO-контакт]]ам через привязывающую функцию.
 
<syntaxhighlight lang="python">
extint = pyb.ExtInt(pin, mode, pull, callback)
</syntaxhighlight>
 
Значения, которые можно использовать в аргументе mode: pyb.ExtInt.IRQ_RISING, pyb.ExtInt.IRQ_FALLING, pyb.ExtInt.IRQ_RISING_FALLING, pyb.ExtInt.EVT_RISING, pyb.ExtInt.EVT_FALLING и pyb.ExtInt.EVT_RISING_FALLING.
 
По словам разработчиков, они тестировали только режимы типа IRQ_xxx. Режимы типа EVT_xxx каким-то образом связаны с режимом сна и командой WFE.
 
Значения, которые можно использовать в аргументе pull: pyb.Pin.PULL_UP, pyb.Pin.PULL_DOWN, pyb.Pin.PULL_NONE.
 
Кроме того, у этого класса есть ''API'' для языка [[C]], чтобы этот код также могли использовать драйверы, которым требуются линии прерываний ''EXTI''. О функциях этого [[API]] читайте в ''«extint.h»'', а о примерах их использования – в ''«usrsw.h»''.
 
== Конструкторы ==
 
* [[MicroPython:Библиотеки/pyb/Класс ExtInt/pyb.ExtInt()|pyb.ExtInt(pin, mode, pull, callback)]]
 
== Методы класса ==
 
* [[MicroPython:Библиотеки/pyb/Класс ExtInt/ExtInt.regs()|ExtInt.regs()]]
 
== Методы ==
 
* [[MicroPython:Библиотеки/pyb/Класс ExtInt/ExtInt.disable()|ExtInt.disable()]]
* [[MicroPython:Библиотеки/pyb/Класс ExtInt/ExtInt.enable()|ExtInt.enable()]]
* [[MicroPython:Библиотеки/pyb/Класс ExtInt/ExtInt.line()|ExtInt.line()]]
* [[MicroPython:Библиотеки/pyb/Класс ExtInt/ExtInt.swint()|ExtInt.swint()]]
 
== Константы ==
 
* [[MicroPython:Библиотеки/pyb/Класс ExtInt/ExtInt.IRQ_FALLING|ExtInt.IRQ_FALLING]]
* [[MicroPython:Библиотеки/pyb/Класс ExtInt/ExtInt.IRQ_RISING|ExtInt.IRQ_RISING]]
* [[MicroPython:Библиотеки/pyb/Класс ExtInt/ExtInt.IRQ_RISING_FALLING|ExtInt.IRQ_RISING_FALLING]]


=См.также=
=См.также=

Текущая версия от 18:16, 14 мая 2023

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Класс ExtInt – настройка I/O-контактов для прерываний на внешних событиях[1]

Всего на PyBoard есть 22 линии с прерываниями. 16 из них относятся к GPIO-контактам, а оставшиеся 6 – к компонентам внутри платы.

Таким образом, линии с 0 по 15 можно привязать к любому GPIO-порту. То есть линию 0 можно привязать к Px0, где «x» – это порт A, B, C и т.д., а линию 1 можно привязать к Px1, где «x» – это тоже порт A, B, C и т.д.

def callback(line):
    print("line =", line)
Примечание

ExtInt автоматически настраивает GPIO-линию в режим вывода данных.

extint = pyb.ExtInt(pin, pyb.ExtInt.IRQ_FALLING, pyb.Pin.PULL_UP, callback)

Теперь на контакте X1 на заднем фронте каждый раз будет вызываться функция обратного вызова.

Внимание

На механических кнопках присутствует так называемый «дребезг» – явление, при котором нажатие или отпускание кнопки вызывают несколько ложных срабатываний. Более подробно о дребезге, а также о способах его устранения читайте тут.

Попытка зарегистрировать две функции обратного вызова на одном и том же контакте возбудит исключение.

Если контакт будет передан как целое число, то это значит, что его нужно привязать к одному из внутренних источников прерываний – он должен быть в диапазоне между «16» и «22».

Все прочие объекты Pin привязываются к GPIO-контактам через привязывающую функцию.

extint = pyb.ExtInt(pin, mode, pull, callback)

Значения, которые можно использовать в аргументе mode: pyb.ExtInt.IRQ_RISING, pyb.ExtInt.IRQ_FALLING, pyb.ExtInt.IRQ_RISING_FALLING, pyb.ExtInt.EVT_RISING, pyb.ExtInt.EVT_FALLING и pyb.ExtInt.EVT_RISING_FALLING.

По словам разработчиков, они тестировали только режимы типа IRQ_xxx. Режимы типа EVT_xxx каким-то образом связаны с режимом сна и командой WFE.

Значения, которые можно использовать в аргументе pull: pyb.Pin.PULL_UP, pyb.Pin.PULL_DOWN, pyb.Pin.PULL_NONE.

Кроме того, у этого класса есть API для языка C, чтобы этот код также могли использовать драйверы, которым требуются линии прерываний EXTI. О функциях этого API читайте в «extint.h», а о примерах их использования – в «usrsw.h».

Конструкторы

Методы класса

Методы

Константы

См.также

Внешние ссылки