31. Lektion: Interrupts: Difference between revisions
Jump to navigation
Jump to search
| Line 31: | Line 31: | ||
=== Interrupt Handler=== | === Interrupt Handler=== | ||
<pre> | |||
# Source: Electrocredible.com, Language: MicroPython | |||
from machine import Pin | |||
import time | |||
interrupt_flag=0 | |||
debounce_time=0 | |||
pin = Pin(5, Pin.IN, Pin.PULL_UP) | |||
led = Pin("LED", Pin.OUT) | |||
count=0 | |||
def callback(pin): | |||
global interrupt_flag, debounce_time | |||
if (time.ticks_ms()-debounce_time) > 500: | |||
interrupt_flag= 1 | |||
debounce_time=time.ticks_ms() | |||
pin.irq(trigger=Pin.IRQ_FALLING, handler=callback) | |||
while True: | |||
if interrupt_flag is 1: | |||
interrupt_flag=0 | |||
print("Interrupt Detected") | |||
led.toggle() | |||
</pre> | |||
Hinweise zum Schreiben von Interrupt Handlern: http://docs.micropython.org/en/latest/reference/isr_rules.html | Hinweise zum Schreiben von Interrupt Handlern: http://docs.micropython.org/en/latest/reference/isr_rules.html | ||
Revision as of 20:39, 19 December 2023
Interrupts
Interrupts einrichten
Die Interruptfunktion ist eine Methode der Klasse Pin.
Pin.irq(handler=None, trigger=Pin.IRQ_FALLING | Pin.IRQ_RISING, *, priority=1, wake=None, hard=False)
Beispiel
# int_test_01.py from machine import Pin int_pin = Pin(14, Pin.IN, Pin.PULL_DOWN) led_pin = Pin(22, Pin.OUT) led_pin.value(1) int_pin.irq(handler=lambda t:led_pin.toggle(), trigger=int_pin.IRQ_RISING)
Interrupt Trigger
Pin.IRQ_FALLING Pin.IRQ_RISING Pin.IRQ_LOW_LEVEL Pin.IRQ_HIGH_LEVEL
Trigger können auch ODER (|) verknüpft werden (Pin.IRQ_FALLING | Pin.IRQ_RISING) .
Interrupt Handler
# Source: Electrocredible.com, Language: MicroPython
from machine import Pin
import time
interrupt_flag=0
debounce_time=0
pin = Pin(5, Pin.IN, Pin.PULL_UP)
led = Pin("LED", Pin.OUT)
count=0
def callback(pin):
global interrupt_flag, debounce_time
if (time.ticks_ms()-debounce_time) > 500:
interrupt_flag= 1
debounce_time=time.ticks_ms()
pin.irq(trigger=Pin.IRQ_FALLING, handler=callback)
while True:
if interrupt_flag is 1:
interrupt_flag=0
print("Interrupt Detected")
led.toggle()
Hinweise zum Schreiben von Interrupt Handlern: http://docs.micropython.org/en/latest/reference/isr_rules.html
Zurück zur "Micropython Kurs 2023 Teil 2" Startseite
Zurück zur "Micropython Kurs 2023" Startseite
Zurück zur Programmieren Startseite
Zurück zur Wiki Startseite